From 16ba6ad67dfb29be096778ce9acde845961a8096 Mon Sep 17 00:00:00 2001 From: Ryan Blue Date: Mon, 2 Sep 2024 21:25:41 -0400 Subject: [PATCH] Add sentinel build task --- .github/workflows/sentinel-build.yml | 156 +++------------------------ 1 file changed, 14 insertions(+), 142 deletions(-) diff --git a/.github/workflows/sentinel-build.yml b/.github/workflows/sentinel-build.yml index 100fe6f4d7f..de26ca99384 100644 --- a/.github/workflows/sentinel-build.yml +++ b/.github/workflows/sentinel-build.yml @@ -1,6 +1,9 @@ -name: Gradle +name: Sentinel Build (No Cache) -on: [pull_request, push] +on: + workflow_dispatch: + schedule: + - cron: "15 3 * * Sat" # 11:15PM EST every Friday concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} @@ -8,6 +11,7 @@ concurrency: jobs: build-docker: + if: (github.repository_owner == 'wpilibsuite' && github.ref == 'refs/heads/main') || github.event_name != 'schedule' strategy: fail-fast: false matrix: @@ -40,18 +44,12 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 0 - - name: Set release environment variable - run: echo "EXTRA_GRADLE_ARGS=-PreleaseMode" >> $GITHUB_ENV - if: startsWith(github.ref, 'refs/tags/v') - name: Build with Gradle uses: addnab/docker-run-action@v3 with: image: ${{ matrix.container }} - options: -v ${{ github.workspace }}:/work -w /work -e ARTIFACTORY_PUBLISH_USERNAME -e ARTIFACTORY_PUBLISH_PASSWORD -e GITHUB_REF -e CI - run: df . && rm -f semicolon_delimited_script && echo $GITHUB_REF && ./gradlew build --build-cache -PbuildServer -PskipJavaFormat ${{ matrix.build-options }} ${{ env.EXTRA_GRADLE_ARGS }} - env: - ARTIFACTORY_PUBLISH_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} - ARTIFACTORY_PUBLISH_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} + options: -v ${{ github.workspace }}:/work -w /work -e GITHUB_REF -e CI + run: df . && rm -f semicolon_delimited_script && echo $GITHUB_REF && ./gradlew build -PbuildServer -PskipJavaFormat ${{ matrix.build-options }} - name: Check free disk space run: df . - uses: actions/upload-artifact@v4 @@ -60,6 +58,7 @@ jobs: path: build/allOutputs build-host: + if: (github.repository_owner == 'wpilibsuite' && github.ref == 'refs/heads/main') || github.event_name != 'schedule' env: MACOSX_DEPLOYMENT_TARGET: 13.3 strategy: @@ -118,17 +117,11 @@ jobs: certificate-passphrase: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }} keychain-password: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }} if: | - matrix.artifact-name == 'macOS' && (github.repository == 'wpilibsuite/allwpilib' && - (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v'))) + matrix.artifact-name == 'macOS' && (github.repository_owner == 'wpilibsuite' && github.ref == 'refs/heads/main') - name: Set Keychain Lock Timeout run: security set-keychain-settings -lut 3600 if: | - matrix.artifact-name == 'macOS' && (github.repository == 'wpilibsuite/allwpilib' && - (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v'))) - - name: Set release environment variable - run: echo "EXTRA_GRADLE_ARGS=-PreleaseMode" >> $GITHUB_ENV - shell: bash - if: startsWith(github.ref, 'refs/tags/v') + matrix.artifact-name == 'macOS' && (github.repository_owner == 'wpilibsuite' && github.ref == 'refs/heads/main') - name: Set Java Heap Size run: sed -i 's/-Xmx2g/-Xmx1g/g' gradle.properties if: matrix.artifact-name == 'Win32' @@ -151,15 +144,11 @@ jobs: run: df -h . if: matrix.os == 'macOS-14' - name: Build with Gradle - run: ./gradlew ${{ matrix.task }} --build-cache -PbuildServer -PskipJavaFormat ${{ matrix.build-options }} ${{ env.EXTRA_GRADLE_ARGS }} - env: - ARTIFACTORY_PUBLISH_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} - ARTIFACTORY_PUBLISH_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} + run: ./gradlew ${{ matrix.task }} -PbuildServer -PskipJavaFormat ${{ matrix.build-options }} - name: Sign Libraries with Developer ID - run: ./gradlew copyAllOutputs --build-cache -PbuildServer -PskipJavaFormat -PdeveloperID=${{ secrets.APPLE_DEVELOPER_ID }} ${{ matrix.build-options }} ${{ env.EXTRA_GRADLE_ARGS }} + run: ./gradlew copyAllOutputs -PbuildServer -PskipJavaFormat -PdeveloperID=${{ secrets.APPLE_DEVELOPER_ID }} ${{ matrix.build-options }} if: | - matrix.artifact-name == 'macOS' && (github.repository == 'wpilibsuite/allwpilib' && - (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v'))) + matrix.artifact-name == 'macOS' && (github.repository_owner == 'wpilibsuite' && github.ref == 'refs/heads/main') - name: Check disk free space (Windows) run: wmic logicaldisk get caption, freespace if: matrix.os == 'windows-2022' @@ -170,120 +159,3 @@ jobs: with: name: ${{ matrix.artifact-name }} path: ${{ matrix.outputs }} - - build-documentation: - name: "Build - Documentation" - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - uses: actions/setup-java@v4 - with: - distribution: 'temurin' - java-version: 17 - - name: Set release environment variable - run: echo "EXTRA_GRADLE_ARGS=-PreleaseMode" >> $GITHUB_ENV - if: startsWith(github.ref, 'refs/tags/v') - - name: Build with Gradle - run: ./gradlew docs:zipDocs --build-cache -PbuildServer ${{ env.EXTRA_GRADLE_ARGS }} - env: - ARTIFACTORY_PUBLISH_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} - ARTIFACTORY_PUBLISH_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} - - uses: actions/upload-artifact@v4 - with: - name: Documentation - path: docs/build/outputs - - combine: - name: Combine - needs: [build-docker, build-host, build-documentation] - runs-on: ubuntu-22.04 - steps: - - name: Free Disk Space - if: | - github.repository == 'wpilibsuite/allwpilib' && - (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')) - uses: jlumbroso/free-disk-space@main - with: - tool-cache: false - android: true - dotnet: true - haskell: true - large-packages: false - docker-images: false - swap-storage: false - - uses: actions/checkout@v4 - if: | - github.repository == 'wpilibsuite/allwpilib' && - (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')) - with: - repository: wpilibsuite/build-tools - - uses: actions/download-artifact@v4 - if: | - github.repository == 'wpilibsuite/allwpilib' && - (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')) - with: - path: combiner/products/build/allOutputs - - name: Flatten Artifacts - if: | - github.repository == 'wpilibsuite/allwpilib' && - (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')) - run: rsync -a --delete combiner/products/build/allOutputs/*/* combiner/products/build/allOutputs/ - - name: Check version number exists - if: | - github.repository == 'wpilibsuite/allwpilib' && - (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')) - run: | - cat combiner/products/build/allOutputs/version.txt - test -s combiner/products/build/allOutputs/version.txt - - uses: actions/setup-java@v4 - if: | - github.repository == 'wpilibsuite/allwpilib' && - (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')) - with: - distribution: 'temurin' - java-version: 17 - - name: Combine (Main) - if: | - github.repository == 'wpilibsuite/allwpilib' && - github.ref == 'refs/heads/main' - run: cd combiner && ./gradlew publish -Pallwpilib - env: - RUN_AZURE_ARTIFACTORY_RELEASE: "TRUE" - ARTIFACTORY_PUBLISH_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} - ARTIFACTORY_PUBLISH_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} - - name: Combine (Release) - if: | - github.repository == 'wpilibsuite/allwpilib' && - startsWith(github.ref, 'refs/tags/v') - run: cd combiner && ./gradlew publish -Pallwpilib -PreleaseRepoPublish - env: - RUN_AZURE_ARTIFACTORY_RELEASE: "TRUE" - ARTIFACTORY_PUBLISH_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} - ARTIFACTORY_PUBLISH_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} - - uses: actions/upload-artifact@v4 - if: | - github.repository == 'wpilibsuite/allwpilib' && - (github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')) - with: - name: Maven - path: ~/releases - - dispatch: - name: dispatch - needs: [combine] - strategy: - matrix: - repo: ['SmartDashboard', 'PathWeaver', 'Shuffleboard', 'RobotBuilder'] - runs-on: ubuntu-22.04 - steps: - - uses: peter-evans/repository-dispatch@v3 - if: | - github.repository == 'wpilibsuite/allwpilib' && - startsWith(github.ref, 'refs/tags/v') - with: - token: ${{ secrets.TOOL_REPO_ACCESS_TOKEN }} - repository: wpilibsuite/${{ matrix.repo }} - event-type: tag - client-payload: '{"package_name": "allwpilib", "package_version": "${{ github.ref_name }}"}'