From 46b087beabd8d17ca8932d9454a4a50851ed7c9d Mon Sep 17 00:00:00 2001 From: Andreas Textor Date: Fri, 19 Jan 2024 06:18:43 +0100 Subject: [PATCH] Rewrite pull request action --- .github/workflows/build.yml | 264 ----------------------- .github/workflows/pull-request-check.yml | 122 +++++++++++ 2 files changed, 122 insertions(+), 264 deletions(-) delete mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/pull-request-check.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 294aaf7c..00000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,264 +0,0 @@ -name: build - -on: - push: - branches: 'main' - tags-ignore: - - 'v**' - pull_request: - branches: '*' - -jobs: - build-linux: - runs-on: ubuntu-latest - timeout-minutes: 30 - env: - OS: Ubuntu - name: ubuntu - steps: - - name: Check Out Repo - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - name: Cache Gradle - uses: actions/cache@v2 - with: - path: ~/.gradle/caches/ - key: ${{ runner.os }}-gradle-v2-${{ hashFiles('**/*.gradle*') }} - restore-keys: ${{ runner.os }}-gradle-v2- - - name: Setup Environment - # - Install SDKMAN - # - Install msttcorefonts, so we have the Verdana font available for diagram generation - # - Install graphviz, so we have the dot binary available for diagram generation - # - Install GraalVM 21.3.0.r17 (JDK 17) - # - Clean Antora cache - run: |- - curl -sL https://get.sdkman.io | bash - echo sdkman_auto_answer=true > $HOME/.sdkman/etc/config - echo sdkman_auto_selfupdate=true >> $HOME/.sdkman/etc/config - source $HOME/.sdkman/bin/sdkman-init.sh - sdk update - ls /etc/apt/sources.list.d - find /etc/apt -type f -name '*.list' -exec sed -i -e '/dl.bintray.com\/sbt/d' "{}" \; - sudo apt-get update - echo msttcorefonts msttcorefonts/accepted-mscorefonts-eula select true | sudo debconf-set-selections - sudo apt-get install ttf-mscorefonts-installer - sudo apt-get install -y graphviz - sudo apt-get install -y build-essential libz-dev - sdk list java - sdk install java 17.0.8-graal || true - sdk use java 17.0.8-graal - gu install native-image - unset _JAVA_OPTIONS - echo Path settings: $PATH - which native-image - which java - java -version - file `which native-image` - native-image --version - rm -rf .cache - - name: Gradle Build - run: |- - source $HOME/.sdkman/bin/sdkman-init.sh - ./gradlew clean generateStaticProperties test check jacocoRootReport nativeImage integrationTest antora --stacktrace --no-daemon - - name: Run UPX - uses: crazy-max/ghaction-upx@v1.4.0 - with: - version: latest - files: cli/build/bin/owl - args: -9 - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v2 - with: - name: codecov-umbrella - env_vars: OS - - name: Prepare Artifacts - run: |- - mv cli/build/bin/owl owl-x86_64-linux-snapshot - mv cli/build/libs/owl-cli-snapshot.jar . - - name: Upload Linux Artifacts - uses: actions/upload-artifact@v2 - with: - name: artifacts-linux - path: | - owl-x86_64-linux-snapshot - owl-cli-snapshot.jar - - name: Deploy GH Pages - uses: JamesIves/github-pages-deploy-action@4.1.0 - with: - branch: gh-pages - folder: build/site - - build-macos: - runs-on: macos-latest - timeout-minutes: 30 - env: - OS: Macos - name: macos - steps: - - name: Check Out Repo - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - name: Cache Gradle - uses: actions/cache@v2 - with: - path: ~/.gradle/caches/ - key: ${{ runner.os }}-gradle-v2-${{ hashFiles('**/*.gradle*') }} - restore-keys: ${{ runner.os }}-gradle-v2- - - name: Setup Environment - # - Install SDKMAN - # - Install graphviz, so we have the dot binary available for diagram generation - # - Install GraalVM 21.3.0.r17 (JDK 17) - # - Clean Antora cache - run: |- - curl -sL https://get.sdkman.io | bash - echo sdkman_auto_answer=true > $HOME/.sdkman/etc/config - echo sdkman_auto_selfupdate=true >> $HOME/.sdkman/etc/config - source $HOME/.sdkman/bin/sdkman-init.sh - sdk update - brew install graphviz - sdk list java - sdk install java 17.0.8-graal || true - sdk use java 17.0.8-graal - gu install native-image - unset _JAVA_OPTIONS - echo Path settings: $PATH - which native-image - which java - java -version - file `which native-image` - native-image --version - rm -rf .cache - - name: Gradle Build - run: |- - source $HOME/.sdkman/bin/sdkman-init.sh - ./gradlew clean generateStaticProperties test check nativeImage integrationTest --stacktrace --no-daemon - - name: Prepare Artifacts - run: mv cli/build/bin/owl owl-x86_64-apple-darwin-snapshot - - name: Upload Macos Artifacts - uses: actions/upload-artifact@v2 - with: - name: artifacts-macos - path: owl-x86_64-apple-darwin-snapshot - - build-windows: - runs-on: windows-latest - timeout-minutes: 30 - env: - OS: Windows - name: windows - steps: - - name: Check Out Repo - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - uses: ilammy/msvc-dev-cmd@v1.10.0 - - uses: microsoft/setup-msbuild@v1.1 - - name: Configure Pagefile - # Fix for "LINK : fatal error LNK1171: unable to load mspdbcore.dll (error code: 1455)": - # This seems to be caused by running out of memory; increasing page file - # size suggested here: - # https://github.com/actions/virtual-environments/issues/3420#issuecomment-861342418 - uses: al-cheb/configure-pagefile-action@v1.2 - with: - minimum-size: 16GB - maximum-size: 16GB - disk-root: "C:" - - name: Cache Gradle - uses: actions/cache@v2 - with: - path: ~/.gradle/caches/ - key: ${{ runner.os }}-gradle-v2-${{ hashFiles('**/*.gradle*') }} - restore-keys: ${{ runner.os }}-gradle-v2- - - name: Setup Environment - # - Install SDKMAN - # - Install graphviz, so we have the dot binary available for diagram generation - # - Install GraalVM 21.3.0.r17 (JDK 17) - # - Clean Antora cache - run: |- - choco install zip --execution-timeout=600 - choco install unzip --execution-timeout=600 - choco install graphviz --execution-timeout=600 - curl -sL https://get.sdkman.io | bash - echo sdkman_auto_answer=true > $HOME/.sdkman/etc/config - echo sdkman_auto_selfupdate=true >> $HOME/.sdkman/etc/config - source $HOME/.sdkman/bin/sdkman-init.sh - sdk update - sdk list java - sdk install java 17.0.8-graal || true - sdk use java 17.0.8-graal - echo Path settings: $PATH - export PATH=$HOME/.sdkman/candidates/java/current/lib/installer/bin:$PATH - export GRAALVM_HOME=$HOME/.sdkman/candidates/java/17.0.8-graal - gu.cmd install native-image - find $HOME/.sdkman -type f -name '*native-image*' - unset _JAVA_OPTIONS - export PATH=$HOME/.sdkman/candidates/java/current/lib/svm/bin:$PATH - which native-image - which java - java -version - file `which native-image` - native-image --version - rm -rf .cache - shell: bash - - name: Gradle Build - run: |- - source $HOME/.sdkman/bin/sdkman-init.sh - ./gradlew clean generateStaticProperties test check nativeImage integrationTest --info --stacktrace --no-daemon - shell: bash - - name: Prepare Artifacts - run: mv cli/build/bin/owl owl-x86_64-windows-snapshot.exe - shell: bash - - name: Run UPX - uses: crazy-max/ghaction-upx@v1.4.0 - with: - version: latest - files: ./*.exe - args: -9 - - name: Upload Windows Artifacts - uses: actions/upload-artifact@v2 - with: - name: artifacts-windows - path: owl-x86_64-windows-snapshot.exe - - publish: - needs: [build-linux, build-macos, build-windows] - runs-on: ubuntu-latest - steps: - - name: Check Out Repo - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - name: Fetch Linux Artifacts - uses: actions/download-artifact@v2 - with: - name: artifacts-linux - - name: Fetch Macos Artifacts - uses: actions/download-artifact@v2 - with: - name: artifacts-macos - - name: Fetch Windows Artifacts - uses: actions/download-artifact@v2 - with: - name: artifacts-windows - - name: Push Snapshot Release - uses: "marvinpinto/action-automatic-releases@latest" - with: - repo_token: "${{ secrets.GITHUB_TOKEN }}" - automatic_release_tag: "snapshot" - prerelease: true - title: "Snapshot Build" - files: |- - owl-cli-snapshot.jar - owl-x86_64-linux-snapshot - owl-x86_64-apple-darwin-snapshot - owl-x86_64-windows-snapshot.exe - - buildDone: - name: Build Ok - needs: publish - runs-on: ubuntu-latest - steps: - - name: Build Ok - run: echo 'all builds passed' diff --git a/.github/workflows/pull-request-check.yml b/.github/workflows/pull-request-check.yml new file mode 100644 index 00000000..2422d242 --- /dev/null +++ b/.github/workflows/pull-request-check.yml @@ -0,0 +1,122 @@ +name: Build Pull Request +on: + pull_request: + branches: + - main +jobs: + build-and-test: + name: ${{ matrix.os }} build + runs-on: ${{ matrix.os }} + strategy: + fail-fast: true + matrix: + os: [windows-latest, ubuntu-20.04, macos-latest] + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Install dependencies + # - Install msttcorefonts, so we have the Verdana font available for diagram generation + # - Install graphviz, so we have the dot binary available for diagram generation + run: |- + find /etc/apt -type f -name '*.list' -exec sed -i -e '/dl.bintray.com\/sbt/d' "{}" \; + sudo apt-get update + echo msttcorefonts msttcorefonts/accepted-mscorefonts-eula select true | sudo debconf-set-selections + sudo apt-get install ttf-mscorefonts-installer + sudo apt-get install -y graphviz + sudo apt-get install -y build-essential libz-dev + + - name: Setup JDK + uses: graalvm/setup-graalvm@v1 + with: + java-version: '17.0.10' + distribution: 'graalvm' + components: 'native-image,js' + github-token: ${{ secrets.GITHUB_TOKEN }} + native-image-job-reports: 'true' + + - name: Cache Maven packages + uses: actions/cache@v3 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + + - name: Configure Pagefile (Windows) + if: matrix.os == 'windows-latest' + # Fix for "LINK : fatal error LNK1171: unable to load mspdbcore.dll (error code: 1455)": + # This seems to be caused by running out of memory; increasing page file + # size suggested here: + # https://github.com/actions/virtual-environments/issues/3420#issuecomment-861342418 + uses: al-cheb/configure-pagefile-action@86589fd789a4de3e62ba628dda2cb10027b66d67 # v1.3 + with: + minimum-size: 32GB + maximum-size: 32GB + disk-root: "C:" + + - name: Set Swap Space (Linux) + if: matrix.os == 'ubuntu-20.04' + uses: pierotofy/set-swap-space@49819abfb41bd9b44fb781159c033dba90353a7c # master + with: + swap-size-gb: 12 + + - name: Build and run tests + run: | + mvn -B clean install + mvn -B clean verify -pl ret-cli -Pnative + shell: bash + + - name: Switch to Temurin JDK + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: '17' + overwrite-settings: false + + - name: Test executable jar on Temurin + if: matrix.os == 'ubuntu-20.04' + run: | + mvn -B -Dskip.maven.surefire -pl ret-cli failsafe:integration-test@default + + - name: Run UPX (Linux) + # UPX doesn't work on mac + if: matrix.os == 'ubuntu-20.04' + uses: crazy-max/ghaction-upx@0fc45e912669ba9e8fa2b430e97c8da2a632e29b # v3.0.0 + with: + version: latest + files: ret-cli/target/ret + args: -9 + + - name: Run UPX (Windows) + if: matrix.os == 'windows-latest' + uses: crazy-max/ghaction-upx@0fc45e912669ba9e8fa2b430e97c8da2a632e29b # v3.0.0 + with: + version: latest + files: ret-cli/target/ret.exe + args: -9 + + - name: Upload executable jar + # We only need one OS job to upload the jar + if: matrix.os == 'ubuntu-20.04' + uses: actions/upload-artifact@v3 + with: + name: ret-cli-jar + path: ret-cli/target/ret-cli-DEV-SNAPSHOT.jar + + - name: Upload binary (Windows) + if: matrix.os == 'windows-latest' + uses: actions/upload-artifact@v3 + with: + name: ret-cli-${{ matrix.os }} + path: | + ret-cli/target/ret.exe + ret-cli/target/*.dll + + - name: Upload binary (Linux/Mac) + if: matrix.os == 'ubuntu-20.04' || matrix.os == 'macos-latest' + uses: actions/upload-artifact@v3 + with: + name: ret-cli-${{ matrix.os }} + path: | + ret-cli/target/ret