Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 90 additions & 11 deletions .github/workflows/ci-subaction.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,30 +36,68 @@ jobs:
include:
-
testdir: group
expected: >
expected-outcome: success
expected-matrix: >
[{"target":"t1"},{"target":"t2"}]
expected-max-layers: 1
expected-layers: 1
expected-layered-matrix: >
[[{"target":"t1"},{"target":"t2"}]]
-
testdir: group-matrix
target: validate
expected: >
expected-outcome: success
expected-matrix: >
[{"target":"lint-default"},{"target":"lint-labs"},{"target":"lint-nydus"},{"target":"lint-proto"},{"target":"lint-yaml"},{"target":"validate-doctoc"},{"target":"validate-vendor"}]
expected-max-layers: 1
expected-layers: 1
expected-layered-matrix: >
[[{"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: >
expected-outcome: success
expected-matrix: >
[{"target":"lint"},{"target":"lint-gopls"},{"target":"validate-docs"},{"target":"validate-vendor"}]
expected-max-layers: 1
expected-layers: 1
expected-layered-matrix: >
[[{"target":"lint"},{"target":"lint-gopls"},{"target":"validate-docs"},{"target":"validate-vendor"}]]
-
testdir: group-with-platform
target: validate
fields: platforms
expected: >
expected-outcome: success
expected-matrix: >
[{"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"}]
expected-max-layers: 1
expected-layers: 1
expected-layered-matrix: >
[[{"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: >
expected-outcome: success
expected-matrix: >
[{"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"}]
expected-max-layers: 1
expected-layers: 1
expected-layered-matrix: >
[[{"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"}]]
-
testdir: contexts-target-cycle
expected-outcome: failure
-
testdir: contexts-target-with-matrix
expected-outcome: success
fields: platforms
expected-matrix: >
[{"target":"base"},{"target":"t1_darwin-amd64","platforms":"darwin/amd64"},{"target":"t1_darwin-arm64","platforms":"darwin/arm64"},{"target":"t1_linux-amd64","platforms":"linux/amd64"},{"target":"t1_linux-arm64","platforms":"linux/arm64"},{"target":"t1_linux-ppc64le","platforms":"linux/ppc64le"},{"target":"t1_linux-riscv64","platforms":"linux/riscv64"},{"target":"t1_linux-s390x","platforms":"linux/s390x"},{"target":"t1_windows-amd64","platforms":"windows/amd64"},{"target":"t1_windows-arm64","platforms":"windows/arm64"},{"target":"t2_darwin-amd64","platforms":"darwin/amd64"},{"target":"t2_darwin-arm64","platforms":"darwin/arm64"},{"target":"t2_linux-amd64","platforms":"linux/amd64"},{"target":"t2_linux-arm64","platforms":"linux/arm64"},{"target":"t2_linux-ppc64le","platforms":"linux/ppc64le"},{"target":"t2_linux-riscv64","platforms":"linux/riscv64"},{"target":"t2_linux-s390x","platforms":"linux/s390x"},{"target":"t2_windows-amd64","platforms":"windows/amd64"},{"target":"t2_windows-arm64","platforms":"windows/arm64"},{"target":"t3","platforms":"linux/arm64"},{"target":"t4"}]
expected-max-layers: 4
expected-layers: 4
expected-layered-matrix: >
[[{"target":"base"}],[{"target":"t1_darwin-amd64","platforms":"darwin/amd64"},{"target":"t1_darwin-arm64","platforms":"darwin/arm64"},{"target":"t1_linux-amd64","platforms":"linux/amd64"},{"target":"t1_linux-arm64","platforms":"linux/arm64"},{"target":"t1_linux-ppc64le","platforms":"linux/ppc64le"},{"target":"t1_linux-riscv64","platforms":"linux/riscv64"},{"target":"t1_linux-s390x","platforms":"linux/s390x"},{"target":"t1_windows-amd64","platforms":"windows/amd64"},{"target":"t1_windows-arm64","platforms":"windows/arm64"},{"target":"t4"}],[{"target":"t2_darwin-amd64","platforms":"darwin/amd64"},{"target":"t2_darwin-arm64","platforms":"darwin/arm64"},{"target":"t2_linux-amd64","platforms":"linux/amd64"},{"target":"t2_linux-arm64","platforms":"linux/arm64"},{"target":"t2_linux-ppc64le","platforms":"linux/ppc64le"},{"target":"t2_linux-riscv64","platforms":"linux/riscv64"},{"target":"t2_linux-s390x","platforms":"linux/s390x"},{"target":"t2_windows-amd64","platforms":"windows/amd64"},{"target":"t2_windows-arm64","platforms":"windows/arm64"}],[{"target":"t3","platforms":"linux/arm64"}]]
steps:
-
name: Checkout
Expand All @@ -68,6 +106,7 @@ jobs:
name: Matrix gen
id: gen
uses: ./subaction/matrix
continue-on-error: true
with:
workdir: ./test/${{ matrix.testdir }}
target: ${{ matrix.target }}
Expand All @@ -76,14 +115,54 @@ jobs:
name: Check output
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
env:
INPUT_OUTCOME: ${{ steps.gen.outcome }}
INPUT_EXPECTED_OUTCOME: ${{ matrix.expected-outcome }}
INPUT_MATRIX: ${{ steps.gen.outputs.matrix }}
INPUT_EXPECTED: ${{ matrix.expected }}
INPUT_EXPECTED_MATRIX: ${{ matrix.expected-matrix }}
INPUT_MAX_LAYERS: ${{ steps.gen.outputs.max-layers }}
INPUT_EXPECTED_MAX_LAYERS: ${{ matrix.expected-max-layers }}
INPUT_LAYERS: ${{ steps.gen.outputs.layers }}
INPUT_EXPECTED_LAYERS: ${{ matrix.expected-layers }}
INPUT_LAYERED_MATRIX: ${{ steps.gen.outputs.layered-matrix }}
INPUT_EXPECTED_LAYERED_MATRIX: ${{ matrix.expected-layered-matrix }}
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}`);
// Check outcome first
const outcome = core.getInput('outcome');
const expectedOutcome = core.getInput('expected_outcome');
if (outcome !== expectedOutcome) {
throw new Error(`Outcome does not match expected value: ${outcome} != ${expectedOutcome}`);
} else {
core.info(`✅`);
core.info("Outcome ✅");
}
if (outcome == "failure") {
return;
}
// Check other variables
const checks = {
"matrix": [
JSON.stringify(JSON.parse(core.getInput('matrix'))),
JSON.stringify(JSON.parse(core.getInput('expected_matrix')))
],
"max-layers": [
JSON.stringify(JSON.parse(core.getInput('max_layers'))),
JSON.stringify(JSON.parse(core.getInput('expected_max_layers')))
],
"layers": [
JSON.stringify(JSON.parse(core.getInput('layers'))),
JSON.stringify(JSON.parse(core.getInput('expected_layers')))
],
"layered-matrix": [
JSON.stringify(JSON.parse(core.getInput('layered_matrix'))),
JSON.stringify(JSON.parse(core.getInput('expected_layered_matrix')))
]
};
for (const checkName in checks) {
const value = checks[checkName][0];
const expected = checks[checkName][1];
if (value !== expected) {
throw new Error(`${checkName} does not match expected value: ${value} != ${expected}`);
} else {
core.info(`${checkName} ✅`);
}
}
Loading
Loading