From 641739b6ed4a375dc20aae9977269366b181ffd3 Mon Sep 17 00:00:00 2001 From: Max Howell Date: Wed, 13 Dec 2023 11:47:32 -0500 Subject: [PATCH] ci tweaks (#4380) --- .github/scripts/get-matrix.ts | 4 ++-- .github/workflows/cd.yml | 8 +++---- .github/workflows/ci-squared.yml | 2 ++ .github/workflows/new-version.yml | 25 ++++++-------------- .github/workflows/pkg-platform.yml | 37 ++++++++++++++++++++---------- .github/workflows/pkg.yml | 11 +++++---- 6 files changed, 47 insertions(+), 40 deletions(-) diff --git a/.github/scripts/get-matrix.ts b/.github/scripts/get-matrix.ts index 5bcf3a8d..8363a356 100755 --- a/.github/scripts/get-matrix.ts +++ b/.github/scripts/get-matrix.ts @@ -73,7 +73,7 @@ function get_matrix(platform: string) { container: "debian:buster-slim", "test-os": [os], "test-container": ["debian:buster-slim", "ubuntu", "archlinux"], - tinyname: "Lnx·x64" + tinyname: "*nix64" }} case 'linux/aarch64': { const os = ["self-hosted", "linux", "ARM64"] @@ -81,6 +81,6 @@ function get_matrix(platform: string) { os, name, "test-os": [os], "test-container": [null], - tinyname: "Lnx·ARM64" + tinyname: "*nix·ARM64" }}} } diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 0cb7a0ca..e6bae5df 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -11,7 +11,7 @@ concurrency: cancel-in-progress: true jobs: - get-projects: + ingest: runs-on: ubuntu-latest outputs: projects: ${{ steps.diff.outputs.diff }} @@ -29,13 +29,13 @@ jobs: done echo "diff=$RESULT" >> $GITHUB_OUTPUT - pkgit: + pkg: strategy: fail-fast: false - needs: get-projects + needs: ingest permissions: issues: write uses: ./.github/workflows/new-version.yml with: - projects: ${{ needs.get-projects.outputs.projects }} + projects: ${{ needs.ingest.outputs.projects }} secrets: inherit diff --git a/.github/workflows/ci-squared.yml b/.github/workflows/ci-squared.yml index 2336e28f..bdc60ea9 100644 --- a/.github/workflows/ci-squared.yml +++ b/.github/workflows/ci-squared.yml @@ -22,6 +22,8 @@ jobs: pkg: - r-wos.org/gti - github.com/ggerganov/llama.cpp # has platform restrictions + permissions: + issues: write with: pkg: ${{ matrix.pkg }} dry-run: true diff --git a/.github/workflows/new-version.yml b/.github/workflows/new-version.yml index 215df470..2e5afe72 100644 --- a/.github/workflows/new-version.yml +++ b/.github/workflows/new-version.yml @@ -16,7 +16,7 @@ on: type: string jobs: - divide: + ingest: runs-on: ubuntu-latest outputs: pkgs: ${{ steps.divide.outputs.pkgs }} @@ -26,26 +26,15 @@ jobs: echo "pkgs=$var" >> $GITHUB_OUTPUT id: divide - pkgit: - needs: divide + pkg: + needs: ingest strategy: + fail-fast: false matrix: - pkg: ${{ fromJSON(needs.divide.outputs.pkgs) }} + pkg: ${{ fromJSON(needs.ingest.outputs.pkgs) }} uses: ./.github/workflows/pkg.yml + permissions: + issues: write with: pkg: ${{ matrix.pkg }} secrets: inherit - - complain: - needs: pkgit - if: failure() - runs-on: ubuntu-latest - strategy: - fail-fast: false - permissions: - issues: write - steps: - - uses: actions/checkout@v4 - - uses: ./.github/actions/complain - with: - pkg: ${{ inputs.projects }} diff --git a/.github/workflows/pkg-platform.yml b/.github/workflows/pkg-platform.yml index 71ec0d22..82cc2e47 100644 --- a/.github/workflows/pkg-platform.yml +++ b/.github/workflows/pkg-platform.yml @@ -5,20 +5,21 @@ on: workflow_call: inputs: name: - description: > - pretty name for the workflow to make GitHub Actions matrix output - more legible - required: false + description: brewkit platform unique ID type: string + tinyname: + description: > + GitHub Actions has a non resizable sidebar so we need a shorter name + or it’s much harder to differentiate the different jobs. + type: string + default: ${{ inputs.name }} os: - required: true type: string container: required: false type: string pkg: description: eg. `example.com@1.2.3` - required: true type: string dry-run: description: dry runs do not modify bottle storage @@ -26,14 +27,12 @@ on: default: false test-os: description: a JSON array of runner-names - required: true type: string test-container: description: > A JSON array of docker image names or `[null]`. Indeed! You cannot leave this as `null` or undefined. Sorry, GHA is not flexible enough to efficiently work around this. - required: true type: string secrets: APPLE_CERTIFICATE_P12: { required: false } @@ -48,7 +47,7 @@ on: jobs: build: - name: build (${{inputs.name}}) + name: build ${{inputs.tinyname}} runs-on: ${{ fromJSON(inputs.os) }} container: ${{ inputs.container }} outputs: @@ -85,7 +84,7 @@ jobs: - uses: pkgxdev/brewkit/upload-build-artifact@v1 test: - name: test (${{inputs.name}}) ${{ matrix.container || ''}} ${{ join(matrix.os) }} + name: test ${{inputs.tinyname}} ${{ matrix.container || ''}} ${{ matrix.container || '' }} ${{ join(matrix.os, '+') }} needs: build strategy: matrix: @@ -104,7 +103,7 @@ jobs: pkg: ${{ needs.build.outputs.pkg }} bottle: - name: bottle (${{inputs.name}}+${{matrix.compression}}) + name: bottle (${{inputs.tinyname}}.${{matrix.compression}}) needs: [build, test] strategy: matrix: @@ -168,7 +167,8 @@ jobs: id: put if: ${{ ! inputs.dry-run }} - versions: + publish: + name: publish ${{inputs.tinyname}} ${{ inputs.dry-run && '(dry-run)' }} runs-on: ubuntu-latest needs: [bottle, build] env: @@ -208,3 +208,16 @@ jobs: /$DIRNAME/versions.txt ${{ needs.bottle.outputs.paths }} if: ${{ ! inputs.dry-run }} + + complain: + needs: [build, test, bottle] + if: failure() && !inputs.dry-run + runs-on: ubuntu-latest + permissions: + issues: write + steps: + - uses: actions/checkout@v4 + - uses: ./.github/actions/complain + with: + pkg: ${{ inputs.pkg }} + platform: ${{ inputs.name }} diff --git a/.github/workflows/pkg.yml b/.github/workflows/pkg.yml index b3bb4e6b..29545d7b 100644 --- a/.github/workflows/pkg.yml +++ b/.github/workflows/pkg.yml @@ -12,7 +12,7 @@ on: default: false jobs: - get-matrix: + plan: runs-on: ubuntu-latest outputs: matrix: ${{ steps.matrix.outputs.matrix }} @@ -22,14 +22,16 @@ jobs: - run: .github/scripts/get-matrix.ts ${{ inputs.pkg }} id: matrix - pkgit: - needs: get-matrix + pkg: + needs: plan name: ${{matrix.platform.tinyname}} strategy: fail-fast: false matrix: - platform: ${{ fromJSON(needs.get-matrix.outputs.matrix) }} + platform: ${{ fromJSON(needs.plan.outputs.matrix) }} uses: ./.github/workflows/pkg-platform.yml + permissions: + issues: write with: pkg: ${{ inputs.pkg }} name: ${{ matrix.platform.name }} @@ -38,4 +40,5 @@ jobs: test-os: ${{ toJSON(matrix.platform.test-os) }} test-container: ${{ toJSON(matrix.platform.test-container) }} dry-run: ${{ inputs.dry-run }} + tinyname: ${{ matrix.platform.tinyname }} secrets: inherit