NO-ISSUE: Increase macOS runner memory to fix native build of jitexecutor-native #28
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "Publish jitexecutor-native - Release Candidate" | |
on: | |
pull_request: | |
branches: ["**"] | |
paths: | |
- ".github/workflows/publish-jitexecutor-native-rc.yml" | |
workflow_dispatch: | |
inputs: | |
release_candidate_version: | |
description: "Release candidate version" | |
required: true | |
drools_repository: | |
description: "Drools repository" | |
required: true | |
kogito_runtimes_repository: | |
description: "Kogito runtimes repository" | |
required: true | |
jobs: | |
build_jitexecutor_native: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: true | |
matrix: | |
os: [ubuntu-latest, macos-13, windows-latest] | |
steps: | |
- name: Set version | |
id: version | |
run: | | |
if [ ${{ github.event_name }} == "pull_request" ]; then | |
echo "REPOSITORY=${{github.event.pull_request.head.repo.full_name}}" >> "$GITHUB_OUTPUT" | |
echo "REF=${{github.event.pull_request.head.ref}}" >> "$GITHUB_OUTPUT" | |
echo "PROJECT_VERSION=999-SNAPSHOT" >> "$GITHUB_OUTPUT" | |
else | |
echo "REPOSITORY=apache/incubator-kie-kogito-apps" >> "$GITHUB_OUTPUT" | |
echo "REF=${{ github.ref_name }}" >> "$GITHUB_OUTPUT" | |
echo "PROJECT_VERSION=${{ github.event.inputs.release_candidate_version }}" >> "$GITHUB_OUTPUT" | |
fi | |
shell: bash | |
- name: "Set long paths for Windows" | |
if: runner.os == 'Windows' | |
run: git config --system core.longpaths true | |
- name: "Checkout kie-kogito-apps" | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ steps.version.outputs.REPOSITORY }} | |
ref: ${{ steps.version.outputs.REF }} | |
- name: "Set up Maven" | |
uses: stCarolas/setup-maven@v5 | |
with: | |
maven-version: 3.9.6 | |
- name: Import GPG key | |
if: github.event_name != 'pull_request' | |
uses: crazy-max/ghaction-import-gpg@111c56156bcc6918c056dbef52164cfa583dc549 | |
with: | |
gpg_private_key: ${{ secrets.GPG_KEY }} | |
- name: Setup maven settings (Linux and MacOS) | |
if: (runner.os == 'Linux' || runner.os == 'macOS') | |
env: | |
WORKDIR_PATH: ${{ github.workspace }} | |
DROOLS_REPO: ${{ github.event.inputs.drools_repository }} | |
KOGITO_RUNTIMES_REPO: ${{ github.event.inputs.kogito_runtimes_repository }} | |
run: | | |
mkdir -p ${WORKDIR_PATH}/.m2 | |
echo "<settings> | |
<servers> | |
<server> | |
<id>apache.releases.https</id> | |
<username>${{ secrets.NEXUS_STAGE_DEPLOYER_USER }}</username> | |
<password>${{ secrets.NEXUS_STAGE_DEPLOYER_PW }}</password> | |
</server> | |
<server> | |
<id>apache.snapshots.https</id> | |
<username>${{ secrets.NEXUS_USER }}</username> | |
<password>${{ secrets.NEXUS_PW }}</password> | |
</server> | |
</servers> | |
<profiles> | |
<profile> | |
<id>additional_repos</id> | |
<repositories> | |
<repository> | |
<id>apache-kie-drools-staging-repository</id> | |
<name>Apache KIE Drools Staging Repository</name> | |
<url>${DROOLS_REPO}</url> | |
<layout>default</layout> | |
<releases> | |
<enabled>true</enabled> | |
<updatePolicy>never</updatePolicy> | |
</releases> | |
<snapshots> | |
<enabled>false</enabled> | |
<updatePolicy>never</updatePolicy> | |
</snapshots> | |
</repository> | |
<repository> | |
<id>apache-kie-kogito-runtimes-staging-repository</id> | |
<name>Apache KIE Kogito Runtimes Staging Repository</name> | |
<url>${KOGITO_RUNTIMES_REPO}</url> | |
<layout>default</layout> | |
<releases> | |
<enabled>true</enabled> | |
<updatePolicy>never</updatePolicy> | |
</releases> | |
<snapshots> | |
<enabled>false</enabled> | |
<updatePolicy>never</updatePolicy> | |
</snapshots> | |
</repository> | |
</repositories> | |
<pluginRepositories> | |
<pluginRepository> | |
<id>apache-kie-kogito-runtimes-staging-repository</id> | |
<name>Apache KIE Kogito Runtimes Staging Repository</name> | |
<url>${KOGITO_RUNTIMES_REPO}</url> | |
<releases> | |
<enabled>true</enabled> | |
<updatePolicy>never</updatePolicy> | |
</releases> | |
<snapshots> | |
<enabled>false</enabled> | |
<updatePolicy>never</updatePolicy> | |
</snapshots> | |
</pluginRepository> | |
<pluginRepository> | |
<id>apache-kie-drools-staging-repository</id> | |
<name>Apache KIE Drools Staging Repository</name> | |
<url>${DROOLS_REPO}</url> | |
<releases> | |
<enabled>true</enabled> | |
<updatePolicy>never</updatePolicy> | |
</releases> | |
<snapshots> | |
<enabled>false</enabled> | |
<updatePolicy>never</updatePolicy> | |
</snapshots> | |
</pluginRepository> | |
</pluginRepositories> | |
</profile> | |
</profiles> | |
<activeProfiles> | |
<activeProfile>additional_repos</activeProfile> | |
</activeProfiles> | |
</settings>" > ${WORKDIR_PATH}/.m2/settings.xml | |
- name: Setup maven settings (Windows) | |
if: runner.os == 'Windows' | |
env: | |
WORKDIR_PATH: ${{ github.workspace }} | |
DROOLS_REPO: ${{ github.event.inputs.drools_repository }} | |
KOGITO_RUNTIMES_REPO: ${{ github.event.inputs.kogito_runtimes_repository }} | |
shell: pwsh | |
run: | | |
New-Item -Name ".m2" -Path "$env:WORKDIR_PATH" -ItemType Directory | |
$contentToAdd = @" | |
<settings> | |
<servers> | |
<server> | |
<id>apache.releases.https</id> | |
<username>${{ secrets.NEXUS_STAGE_DEPLOYER_USER }}</username> | |
<password>${{ secrets.NEXUS_STAGE_DEPLOYER_PW }}</password> | |
</server> | |
<server> | |
<id>apache.snapshots.https</id> | |
<username>${{ secrets.NEXUS_USER }}</username> | |
<password>${{ secrets.NEXUS_PW }}</password> | |
</server> | |
</servers> | |
<profiles> | |
<profile> | |
<id>additional_repos</id> | |
<repositories> | |
<repository> | |
<id>apache-kie-kogito-runtimes-staging-repository</id> | |
<name>Apache KIE Kogito Runtimes Staging Repository</name> | |
<url>$env:KOGITO_RUNTIMES_REPO</url> | |
<layout>default</layout> | |
<releases> | |
<enabled>true</enabled> | |
<updatePolicy>never</updatePolicy> | |
</releases> | |
<snapshots> | |
<enabled>false</enabled> | |
<updatePolicy>never</updatePolicy> | |
</snapshots> | |
</repository> | |
<repository> | |
<id>apache-kie-drools-staging-repository</id> | |
<name>Apache KIE Drools Staging Repository</name> | |
<url>$env:DROOLS_REPO</url> | |
<layout>default</layout> | |
<releases> | |
<enabled>true</enabled> | |
<updatePolicy>never</updatePolicy> | |
</releases> | |
<snapshots> | |
<enabled>false</enabled> | |
<updatePolicy>never</updatePolicy> | |
</snapshots> | |
</repository> | |
</repositories> | |
<pluginRepositories> | |
<pluginRepository> | |
<id>apache-kie-kogito-runtimes-staging-repository</id> | |
<name>Apache KIE Kogito Runtimes Staging Repository</name> | |
<url>$env:KOGITO_RUNTIMES_REPO</url> | |
<releases> | |
<enabled>true</enabled> | |
<updatePolicy>never</updatePolicy> | |
</releases> | |
<snapshots> | |
<enabled>false</enabled> | |
<updatePolicy>never</updatePolicy> | |
</snapshots> | |
</pluginRepository> | |
<pluginRepository> | |
<id>apache-kie-drools-staging-repository</id> | |
<name>Apache KIE Drools Staging Repository</name> | |
<url>$env:DROOLS_REPO</url> | |
<releases> | |
<enabled>true</enabled> | |
<updatePolicy>never</updatePolicy> | |
</releases> | |
<snapshots> | |
<enabled>false</enabled> | |
<updatePolicy>never</updatePolicy> | |
</snapshots> | |
</pluginRepository> | |
</pluginRepositories> | |
</profile> | |
</profiles> | |
<activeProfiles> | |
<activeProfile>additional_repos</activeProfile> | |
</activeProfiles> | |
</settings> | |
"@ | |
Add-Content "$env:WORKDIR_PATH\.m2\settings.xml" $contentToAdd | |
- name: "Set up JDK 17" | |
uses: actions/setup-java@v4 | |
with: | |
java-version: "17" | |
distribution: "temurin" | |
overwrite-settings: false | |
- name: "Setup Linux" | |
if: runner.os == 'Linux' | |
run: | | |
sudo apt update && \ | |
sudo apt install -y \ | |
build-essential \ | |
libgtk-3-dev \ | |
libappindicator3-dev \ | |
gir1.2-appindicator3-0.1 | |
- name: "Setup macOS" | |
if: runner.os == 'macOS' | |
run: | | |
brew install make && \ | |
wget https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-17.0.9/graalvm-community-jdk-17.0.9_macos-x64_bin.tar.gz && \ | |
tar -xzf graalvm-community-jdk-17.0.9_macos-x64_bin.tar.gz && \ | |
sudo mv graalvm-community-openjdk-17.0.9+9.1 /Library/Java/JavaVirtualMachines/graalvm-community-openjdk-17.0.9+9.1 | |
export GRAALVM_HOME=/Library/Java/JavaVirtualMachines/graalvm-community-openjdk-17.0.9+9.1/Contents/Home | |
export PATH=${GRAALVM_HOME}/bin:$PATH | |
echo "${GRAALVM_HOME}/bin" >> $GITHUB_PATH && \ | |
echo "GRAALVM_HOME=${GRAALVM_HOME}" >> $GITHUB_ENV && \ | |
gu install native-image | |
- name: "Setup MSCV" | |
if: runner.os == 'Windows' | |
uses: ilammy/msvc-dev-cmd@v1 | |
- name: "Setup MSBUILD" | |
if: runner.os == 'Windows' | |
uses: microsoft/setup-msbuild@v2 | |
- name: "Setup GraalVM" | |
if: runner.os == 'Windows' | |
uses: graalvm/setup-graalvm@v1 | |
with: | |
java-version: "17" | |
components: "native-image" | |
- name: "Configure Pagefile" | |
if: runner.os == 'Windows' | |
uses: al-cheb/configure-pagefile-action@a3b6ebd6b634da88790d9c58d4b37a7f4a7b8708 #v1.4 | |
with: | |
minimum-size: 16GB | |
maximum-size: 16GB | |
disk-root: "C:" | |
- name: "Update versions (Linux and macOS)" | |
if: (runner.os == 'Linux' || runner.os == 'macOS') && github.event_name != 'pull_request' | |
shell: bash | |
env: | |
SETTINGS_FILE_PATH: ${{ github.workspace }}/.m2/settings.xml | |
run: | | |
mvn -B -fae -ntp -N -e versions:update-parent -DparentVersion="[${{ steps.version.outputs.PROJECT_VERSION }}]" -DallowSnapshots=true -DgenerateBackupPoms=false -s ${SETTINGS_FILE_PATH} | |
mvn -B -fae -ntp -N -e versions:update-child-modules -DallowSnapshots=true -DgenerateBackupPoms=false -s ${SETTINGS_FILE_PATH} | |
- name: "Update versions Windows" | |
if: runner.os == 'Windows' && github.event_name != 'pull_request' | |
shell: pwsh | |
env: | |
SETTINGS_FILE_PATH: ${{ github.workspace }}\.m2\settings.xml | |
run: | | |
mvn -B -fae -ntp -N -e versions:update-parent -DparentVersion="[${{ steps.version.outputs.PROJECT_VERSION }}]" -DallowSnapshots=true -DgenerateBackupPoms=false -s $env:SETTINGS_FILE_PATH | |
mvn -B -fae -ntp -N -e versions:update-child-modules -DallowSnapshots=true -DgenerateBackupPoms=false -s $env:SETTINGS_FILE_PATH | |
- name: "Build macOS" | |
if: runner.os == 'macOS' && github.event_name == 'pull_request' | |
shell: bash | |
run: | | |
mvn clean install -B -ntp -DskipTests -pl jitexecutor-native/jitexecutor-native-darwin -am -Pjitexecutor-native | |
- name: "Build and publish macOS" | |
if: runner.os == 'macOS' && github.event_name != 'pull_request' | |
shell: bash | |
env: | |
SETTINGS_FILE_PATH: ${{ github.workspace }}/.m2/settings.xml | |
run: | | |
mvn clean deploy -B -ntp -DdeployAtEnd -DskipTests -pl jitexecutor-native/jitexecutor-native-darwin -am -Pjitexecutor-native -Papache-release -s ${SETTINGS_FILE_PATH} | |
- name: "Build Linux" | |
if: runner.os == 'Linux' && github.event_name == 'pull_request' | |
shell: bash | |
run: | | |
mvn clean install -B -ntp -DskipTests -pl jitexecutor-native/jitexecutor-native-linux -am -Pjitexecutor-native | |
- name: "Build and Publish Linux" | |
if: runner.os == 'Linux' && github.event_name != 'pull_request' | |
shell: bash | |
env: | |
SETTINGS_FILE_PATH: ${{ github.workspace }}/.m2/settings.xml | |
run: | | |
mvn clean deploy -B -ntp -DdeployAtEnd -DskipTests -pl jitexecutor-native/jitexecutor-native-linux -am -Pjitexecutor-native -Papache-release -s ${SETTINGS_FILE_PATH} | |
- name: "Build Windows" | |
if: runner.os == 'Windows' && github.event_name == 'pull_request' | |
shell: pwsh | |
run: | | |
mvn clean install -B -ntp -DskipTests -pl jitexecutor-native/jitexecutor-native-win32 -am -Pjitexecutor-native | |
- name: "Build and Publish Windows" | |
if: runner.os == 'Windows' && github.event_name != 'pull_request' | |
shell: pwsh | |
env: | |
SETTINGS_FILE_PATH: ${{ github.workspace }}\.m2\settings.xml | |
run: | | |
mvn clean deploy -B -ntp -DdeployAtEnd -DskipTests -pl jitexecutor-native/jitexecutor-native-win32 -am -Pjitexecutor-native -Papache-release -s $env:SETTINGS_FILE_PATH | |
- name: "Upload JIT Executor binary" | |
uses: actions/upload-artifact@v4 | |
with: | |
name: jitexecutor_${{ runner.os }} | |
path: ./jitexecutor-native/jitexecutor-native-*/target/jitexecutor-native-*-${{ steps.version.outputs.PROJECT_VERSION }}-run* |