ci-subaction #868
This file contains hidden or 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: ci-subaction | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| on: | |
| workflow_dispatch: | |
| schedule: | |
| - cron: '0 10 * * *' | |
| push: | |
| branches: | |
| - 'master' | |
| - 'releases/v*' | |
| tags: | |
| - 'v*' | |
| paths: | |
| - '.github/workflows/ci-subaction.yml' | |
| - 'subaction/**' | |
| - 'test/**' | |
| pull_request: | |
| paths: | |
| - '.github/workflows/ci-subaction.yml' | |
| - 'subaction/**' | |
| - 'test/**' | |
| jobs: | |
| list-targets: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - | |
| testdir: group | |
| expected: > | |
| ["t1","t2"] | |
| - | |
| testdir: group-matrix | |
| target: validate | |
| expected: > | |
| ["lint-default","lint-labs","lint-nydus","lint-proto","lint-yaml","validate-doctoc","validate-vendor"] | |
| - | |
| testdir: multi-files | |
| files: | | |
| docker-bake.json | |
| docker-bake.hcl | |
| expected: > | |
| ["v1-tag","v2-tag"] | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v5 | |
| - | |
| name: Matrix gen | |
| id: gen | |
| uses: ./subaction/list-targets | |
| with: | |
| workdir: ./test/${{ matrix.testdir }} | |
| files: ${{ matrix.files }} | |
| target: ${{ matrix.target }} | |
| - | |
| name: Check output | |
| uses: actions/github-script@v8 | |
| env: | |
| INPUT_TARGETS: ${{ steps.gen.outputs.targets }} | |
| INPUT_EXPECTED: ${{ matrix.expected }} | |
| with: | |
| script: | | |
| const targets = JSON.stringify(JSON.parse(core.getInput('targets'))); | |
| const expected = JSON.stringify(JSON.parse(core.getInput('expected'))); | |
| if (targets !== expected) { | |
| throw new Error(`Targets do not match expected values: ${targets} != ${expected}`); | |
| } else { | |
| core.info(`✅`); | |
| } | |
| matrix: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - | |
| testdir: group | |
| expected: > | |
| [{"target":"t1"},{"target":"t2"}] | |
| - | |
| testdir: group-matrix | |
| target: validate | |
| expected: > | |
| [{"target":"lint-default"},{"target":"lint-labs"},{"target":"lint-nydus"},{"target":"lint-proto"},{"target":"lint-yaml"},{"target":"validate-doctoc"},{"target":"validate-vendor"}] | |
| - | |
| testdir: group-with-platform | |
| target: validate | |
| expected: > | |
| [{"target":"lint"},{"target":"lint-gopls"},{"target":"validate-docs"},{"target":"validate-vendor"}] | |
| - | |
| testdir: group-with-platform | |
| target: validate | |
| fields: platforms | |
| expected: > | |
| [{"target":"lint","platforms":"darwin/amd64"},{"target":"lint","platforms":"darwin/arm64"},{"target":"lint","platforms":"linux/amd64"},{"target":"lint","platforms":"linux/arm64"},{"target":"lint","platforms":"linux/s390x"},{"target":"lint","platforms":"linux/ppc64le"},{"target":"lint","platforms":"linux/riscv64"},{"target":"lint","platforms":"windows/amd64"},{"target":"lint","platforms":"windows/arm64"},{"target":"lint-gopls","platforms":"darwin/amd64"},{"target":"lint-gopls","platforms":"darwin/arm64"},{"target":"lint-gopls","platforms":"linux/amd64"},{"target":"lint-gopls","platforms":"linux/arm64"},{"target":"lint-gopls","platforms":"linux/s390x"},{"target":"lint-gopls","platforms":"linux/ppc64le"},{"target":"lint-gopls","platforms":"linux/riscv64"},{"target":"lint-gopls","platforms":"windows/amd64"},{"target":"lint-gopls","platforms":"windows/arm64"},{"target":"validate-docs"},{"target":"validate-vendor"}] | |
| - | |
| testdir: group-with-platform | |
| target: validate | |
| fields: platforms,dockerfile | |
| expected: > | |
| [{"target":"lint","dockerfile":"./hack/dockerfiles/lint.Dockerfile"},{"target":"lint","dockerfile":"./hack/dockerfiles/lint.Dockerfile","platforms":"darwin/amd64"},{"target":"lint","dockerfile":"./hack/dockerfiles/lint.Dockerfile","platforms":"darwin/arm64"},{"target":"lint","dockerfile":"./hack/dockerfiles/lint.Dockerfile","platforms":"linux/amd64"},{"target":"lint","dockerfile":"./hack/dockerfiles/lint.Dockerfile","platforms":"linux/arm64"},{"target":"lint","dockerfile":"./hack/dockerfiles/lint.Dockerfile","platforms":"linux/s390x"},{"target":"lint","dockerfile":"./hack/dockerfiles/lint.Dockerfile","platforms":"linux/ppc64le"},{"target":"lint","dockerfile":"./hack/dockerfiles/lint.Dockerfile","platforms":"linux/riscv64"},{"target":"lint","dockerfile":"./hack/dockerfiles/lint.Dockerfile","platforms":"windows/amd64"},{"target":"lint","dockerfile":"./hack/dockerfiles/lint.Dockerfile","platforms":"windows/arm64"},{"target":"lint-gopls","dockerfile":"./hack/dockerfiles/lint.Dockerfile"},{"target":"lint-gopls","dockerfile":"./hack/dockerfiles/lint.Dockerfile","platforms":"darwin/amd64"},{"target":"lint-gopls","dockerfile":"./hack/dockerfiles/lint.Dockerfile","platforms":"darwin/arm64"},{"target":"lint-gopls","dockerfile":"./hack/dockerfiles/lint.Dockerfile","platforms":"linux/amd64"},{"target":"lint-gopls","dockerfile":"./hack/dockerfiles/lint.Dockerfile","platforms":"linux/arm64"},{"target":"lint-gopls","dockerfile":"./hack/dockerfiles/lint.Dockerfile","platforms":"linux/s390x"},{"target":"lint-gopls","dockerfile":"./hack/dockerfiles/lint.Dockerfile","platforms":"linux/ppc64le"},{"target":"lint-gopls","dockerfile":"./hack/dockerfiles/lint.Dockerfile","platforms":"linux/riscv64"},{"target":"lint-gopls","dockerfile":"./hack/dockerfiles/lint.Dockerfile","platforms":"windows/amd64"},{"target":"lint-gopls","dockerfile":"./hack/dockerfiles/lint.Dockerfile","platforms":"windows/arm64"},{"target":"validate-docs","dockerfile":"./hack/dockerfiles/docs.Dockerfile"},{"target":"validate-vendor","dockerfile":"./hack/dockerfiles/vendor.Dockerfile"}] | |
| steps: | |
| - | |
| name: Checkout | |
| uses: actions/checkout@v5 | |
| - | |
| name: Matrix gen | |
| id: gen | |
| uses: ./subaction/matrix | |
| with: | |
| workdir: ./test/${{ matrix.testdir }} | |
| target: ${{ matrix.target }} | |
| fields: ${{ matrix.fields }} | |
| - | |
| name: Check output | |
| uses: actions/github-script@v8 | |
| env: | |
| INPUT_MATRIX: ${{ steps.gen.outputs.matrix }} | |
| INPUT_EXPECTED: ${{ matrix.expected }} | |
| with: | |
| script: | | |
| const matrix = JSON.stringify(JSON.parse(core.getInput('matrix'))); | |
| const expected = JSON.stringify(JSON.parse(core.getInput('expected'))); | |
| if (matrix !== expected) { | |
| throw new Error(`Matrix do not match expected values: ${matrix} != ${expected}`); | |
| } else { | |
| core.info(`✅`); | |
| } |