complement feature vector; upload artifacts
Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
5
.github/workflows/bake.yml
vendored
5
.github/workflows/bake.yml
vendored
@@ -54,6 +54,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
bake:
|
bake:
|
||||||
|
if: ${{fromJSON(inputs.machines)[0] != null}}
|
||||||
name: ${{matrix.bake_target}} ${{matrix.cargo_profile}} ${{matrix.rust_toolchain}} ${{matrix.feat_set}} ${{matrix.sys_name}} ${{matrix.sys_version}} ${{matrix.sys_target}}
|
name: ${{matrix.bake_target}} ${{matrix.cargo_profile}} ${{matrix.rust_toolchain}} ${{matrix.feat_set}} ${{matrix.sys_name}} ${{matrix.sys_version}} ${{matrix.sys_target}}
|
||||||
runs-on: ${{matrix.machine}}
|
runs-on: ${{matrix.machine}}
|
||||||
strategy:
|
strategy:
|
||||||
@@ -76,7 +77,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
- name: Bake
|
- name: Bake ${{matrix.bake_target}}
|
||||||
env:
|
env:
|
||||||
bake_target: ${{matrix.bake_target}}
|
bake_target: ${{matrix.bake_target}}
|
||||||
cargo_profile: ${{matrix.cargo_profile}}
|
cargo_profile: ${{matrix.cargo_profile}}
|
||||||
@@ -94,4 +95,4 @@ jobs:
|
|||||||
CI_PRINT_BAKE: ${{inputs.print_bake}}
|
CI_PRINT_BAKE: ${{inputs.print_bake}}
|
||||||
|
|
||||||
run: |
|
run: |
|
||||||
docker/bake.sh ${{matrix.bake_target}}
|
docker/bake.sh "${{matrix.bake_target}}"
|
||||||
|
|||||||
22
.github/workflows/deps.yml
vendored
22
.github/workflows/deps.yml
vendored
@@ -51,10 +51,6 @@ on:
|
|||||||
type: boolean
|
type: boolean
|
||||||
default: true
|
default: true
|
||||||
description: Pre-build cargo dependency targets
|
description: Pre-build cargo dependency targets
|
||||||
show_docs:
|
|
||||||
type: boolean
|
|
||||||
default: true
|
|
||||||
description: Pre-build cargo rustdoc targets
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
systems:
|
systems:
|
||||||
@@ -145,21 +141,3 @@ jobs:
|
|||||||
machines: ${{inputs.machines}}
|
machines: ${{inputs.machines}}
|
||||||
excludes: ${{inputs.excludes}}
|
excludes: ${{inputs.excludes}}
|
||||||
includes: ${{inputs.includes}}
|
includes: ${{inputs.includes}}
|
||||||
|
|
||||||
docs:
|
|
||||||
if: ${{ !failure() && !cancelled() && inputs.show_docs }}
|
|
||||||
name: Docs
|
|
||||||
needs: [deps]
|
|
||||||
uses: ./.github/workflows/bake.yml
|
|
||||||
with:
|
|
||||||
bake_targets: '["docs"]'
|
|
||||||
cargo_profiles: ${{inputs.cargo_profiles}}
|
|
||||||
feat_sets: ${{inputs.feat_sets}}
|
|
||||||
rust_toolchains: ${{inputs.rust_toolchains}}
|
|
||||||
sys_names: ${{inputs.sys_names}}
|
|
||||||
sys_versions: ${{inputs.sys_versions}}
|
|
||||||
rust_targets: ${{inputs.rust_targets}}
|
|
||||||
sys_targets: ${{inputs.sys_targets}}
|
|
||||||
machines: ${{inputs.machines}}
|
|
||||||
excludes: ${{inputs.excludes}}
|
|
||||||
includes: ${{inputs.includes}}
|
|
||||||
|
|||||||
14
.github/workflows/main.yml
vendored
14
.github/workflows/main.yml
vendored
@@ -18,7 +18,7 @@ env:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
deps:
|
deps:
|
||||||
if: ${{ vars.CI_VERBOSE_DEPS || false }}
|
if: ${{fromJSON(vars.CI_VERBOSE_DEPS || 'true')}}
|
||||||
name: Deps
|
name: Deps
|
||||||
uses: ./.github/workflows/deps.yml
|
uses: ./.github/workflows/deps.yml
|
||||||
with:
|
with:
|
||||||
@@ -27,7 +27,7 @@ jobs:
|
|||||||
rust_toolchains: ${{vars.RUST_TOOLCHAINS}}
|
rust_toolchains: ${{vars.RUST_TOOLCHAINS}}
|
||||||
rust_targets: ${{vars.RUST_TARGETS}}
|
rust_targets: ${{vars.RUST_TARGETS}}
|
||||||
sys_names: ${{vars.SYS_NAMES}}
|
sys_names: ${{vars.SYS_NAMES}}
|
||||||
sys_targets: ${{vars.sys_TARGETS}}
|
sys_targets: ${{vars.SYS_TARGETS}}
|
||||||
sys_versions: ${{vars.SYS_VERSIONS}}
|
sys_versions: ${{vars.SYS_VERSIONS}}
|
||||||
machines: ${{vars.MACHINES}}
|
machines: ${{vars.MACHINES}}
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ jobs:
|
|||||||
rust_toolchains: ${{vars.RUST_TOOLCHAINS}}
|
rust_toolchains: ${{vars.RUST_TOOLCHAINS}}
|
||||||
rust_targets: ${{vars.RUST_TARGETS}}
|
rust_targets: ${{vars.RUST_TARGETS}}
|
||||||
sys_names: ${{vars.SYS_NAMES}}
|
sys_names: ${{vars.SYS_NAMES}}
|
||||||
sys_targets: ${{vars.sys_TARGETS}}
|
sys_targets: ${{vars.SYS_TARGETS}}
|
||||||
sys_versions: ${{vars.SYS_VERSIONS}}
|
sys_versions: ${{vars.SYS_VERSIONS}}
|
||||||
machines: ${{vars.MACHINES}}
|
machines: ${{vars.MACHINES}}
|
||||||
excludes: '[{"cargo_profile": "release-debuginfo", "rust_toolchain": "nightly"}]'
|
excludes: '[{"cargo_profile": "release-debuginfo", "rust_toolchain": "nightly"}]'
|
||||||
@@ -58,7 +58,7 @@ jobs:
|
|||||||
rust_toolchains: ${{vars.RUST_TOOLCHAINS}}
|
rust_toolchains: ${{vars.RUST_TOOLCHAINS}}
|
||||||
rust_targets: ${{vars.RUST_TARGETS}}
|
rust_targets: ${{vars.RUST_TARGETS}}
|
||||||
sys_names: ${{vars.SYS_NAMES}}
|
sys_names: ${{vars.SYS_NAMES}}
|
||||||
sys_targets: ${{vars.sys_TARGETS}}
|
sys_targets: ${{vars.SYS_TARGETS}}
|
||||||
sys_versions: ${{vars.SYS_VERSIONS}}
|
sys_versions: ${{vars.SYS_VERSIONS}}
|
||||||
machines: ${{vars.MACHINES}}
|
machines: ${{vars.MACHINES}}
|
||||||
complement: ${{fromJSON(vars.COMPLEMENT || 'true')}}
|
complement: ${{fromJSON(vars.COMPLEMENT || 'true')}}
|
||||||
@@ -75,7 +75,7 @@ jobs:
|
|||||||
sys_names: ${{vars.SYS_NAMES}}
|
sys_names: ${{vars.SYS_NAMES}}
|
||||||
sys_versions: ${{vars.SYS_VERSIONS}}
|
sys_versions: ${{vars.SYS_VERSIONS}}
|
||||||
rust_targets: ${{vars.RUST_TARGETS}}
|
rust_targets: ${{vars.RUST_TARGETS}}
|
||||||
sys_targets: ${{vars.sys_TARGETS}}
|
sys_targets: ${{vars.SYS_TARGETS}}
|
||||||
machines: ${{vars.MACHINES}}
|
machines: ${{vars.MACHINES}}
|
||||||
excludes: '[{"cargo_profile": "test"}, {"feat_set": "none"}]'
|
excludes: '[{"cargo_profile": "test"}, {"feat_set": "none"}]'
|
||||||
|
|
||||||
@@ -91,10 +91,10 @@ jobs:
|
|||||||
sys_names: ${{vars.SYS_NAMES}}
|
sys_names: ${{vars.SYS_NAMES}}
|
||||||
sys_versions: ${{vars.SYS_VERSIONS}}
|
sys_versions: ${{vars.SYS_VERSIONS}}
|
||||||
rust_targets: ${{vars.RUST_TARGETS}}
|
rust_targets: ${{vars.RUST_TARGETS}}
|
||||||
sys_targets: ${{vars.sys_TARGETS}}
|
sys_targets: ${{vars.SYS_TARGETS}}
|
||||||
machines: ${{vars.MACHINES}}
|
machines: ${{vars.MACHINES}}
|
||||||
excludes: '[{"cargo_profile": "test"}, {"feat_set": "none"}]'
|
excludes: '[{"cargo_profile": "test"}, {"feat_set": "none"}]'
|
||||||
docker_id: ${{vars.DOCKER_ID}}
|
docker_repo: ${{vars.DOCKER_REPO}}
|
||||||
|
|
||||||
secrets:
|
secrets:
|
||||||
ghcr_token: ${{ secrets.GHCR_TOKEN }}
|
ghcr_token: ${{ secrets.GHCR_TOKEN }}
|
||||||
|
|||||||
12
.github/workflows/publish.yml
vendored
12
.github/workflows/publish.yml
vendored
@@ -36,16 +36,16 @@ on:
|
|||||||
type: string
|
type: string
|
||||||
default: '[]'
|
default: '[]'
|
||||||
description: Matrix inclusions
|
description: Matrix inclusions
|
||||||
docker_id:
|
docker_repo:
|
||||||
type: string
|
type: string
|
||||||
description: DockerHub ID
|
description: DockerHub Repository
|
||||||
secrets:
|
secrets:
|
||||||
ghcr_token:
|
ghcr_token:
|
||||||
dockerhub_token:
|
dockerhub_token:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
containers:
|
containers:
|
||||||
if: ${{ !failure() && !cancelled() && inputs.docker_id }}
|
if: ${{ !failure() && !cancelled() && inputs.docker_repo }}
|
||||||
name: Publish containers
|
name: Publish containers
|
||||||
runs-on: ${{matrix.machine}}
|
runs-on: ${{matrix.machine}}
|
||||||
permissions: write-all
|
permissions: write-all
|
||||||
@@ -77,7 +77,7 @@ jobs:
|
|||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
registry: docker.io
|
registry: docker.io
|
||||||
username: ${{ inputs.docker_id }}
|
username: ${{ github.actor }}
|
||||||
password: ${{ secrets.dockerhub_token }}
|
password: ${{ secrets.dockerhub_token }}
|
||||||
|
|
||||||
- name: Bake
|
- name: Bake
|
||||||
@@ -93,10 +93,10 @@ jobs:
|
|||||||
machine: ${{matrix.machine}}
|
machine: ${{matrix.machine}}
|
||||||
acct: ${{github.actor}}
|
acct: ${{github.actor}}
|
||||||
repo: ${{github.repository}}
|
repo: ${{github.repository}}
|
||||||
docker_repo: ${{inputs.docker_id}}
|
docker_repo: ${{inputs.docker_repo}}
|
||||||
|
|
||||||
run: |
|
run: |
|
||||||
docker/bake.sh ${{matrix.bake_target}}
|
docker/bake.sh "${{matrix.bake_target}}"
|
||||||
|
|
||||||
packages:
|
packages:
|
||||||
if: ${{ !failure() && !cancelled() && contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0]) }}
|
if: ${{ !failure() && !cancelled() && contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0]) }}
|
||||||
|
|||||||
68
.github/workflows/test.yml
vendored
68
.github/workflows/test.yml
vendored
@@ -38,6 +38,9 @@ on:
|
|||||||
complement:
|
complement:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: true
|
default: true
|
||||||
|
complement_feat_sets:
|
||||||
|
type: string
|
||||||
|
default: '["all"]'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
unit:
|
unit:
|
||||||
@@ -73,44 +76,27 @@ jobs:
|
|||||||
excludes: '[{"cargo_profile": "release", "rust_toolchain": "nightly"}, {"cargo_profile": "release-debuginfo", "rust_toolchain": "nightly"}, {"cargo_profile": "test", "feat_set": "default"}]'
|
excludes: '[{"cargo_profile": "release", "rust_toolchain": "nightly"}, {"cargo_profile": "release-debuginfo", "rust_toolchain": "nightly"}, {"cargo_profile": "test", "feat_set": "default"}]'
|
||||||
includes: ${{inputs.includes}}
|
includes: ${{inputs.includes}}
|
||||||
|
|
||||||
complement_tester:
|
|
||||||
if: ${{inputs.complement && contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0]) && contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0]) && contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0])}}
|
|
||||||
name: Complement Tester
|
|
||||||
uses: ./.github/workflows/bake.yml
|
|
||||||
with:
|
|
||||||
bake_targets: '["complement-tester"]'
|
|
||||||
cargo_profiles: '["test"]'
|
|
||||||
feat_sets: '["all"]'
|
|
||||||
rust_toolchains: '["nightly"]'
|
|
||||||
sys_names: ${{inputs.sys_names}}
|
|
||||||
sys_versions: ${{inputs.sys_versions}}
|
|
||||||
rust_targets: ${{inputs.rust_targets}}
|
|
||||||
sys_targets: ${{inputs.sys_targets}}
|
|
||||||
machines: ${{inputs.machines}}
|
|
||||||
excludes: ${{inputs.excludes}}
|
|
||||||
includes: ${{inputs.includes}}
|
|
||||||
|
|
||||||
complement_testee:
|
|
||||||
if: ${{inputs.complement && contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0]) && contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0]) && contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0])}}
|
|
||||||
name: Complement Testee
|
|
||||||
uses: ./.github/workflows/bake.yml
|
|
||||||
with:
|
|
||||||
bake_targets: '["complement-testee"]'
|
|
||||||
cargo_profiles: '["test"]'
|
|
||||||
feat_sets: '["all"]'
|
|
||||||
rust_toolchains: '["nightly"]'
|
|
||||||
sys_names: ${{inputs.sys_names}}
|
|
||||||
sys_versions: ${{inputs.sys_versions}}
|
|
||||||
rust_targets: ${{inputs.rust_targets}}
|
|
||||||
sys_targets: ${{inputs.sys_targets}}
|
|
||||||
machines: ${{inputs.machines}}
|
|
||||||
excludes: ${{inputs.excludes}}
|
|
||||||
includes: ${{inputs.includes}}
|
|
||||||
|
|
||||||
complement:
|
complement:
|
||||||
|
if: ${{inputs.complement && contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0]) && contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0]) && contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0])}}
|
||||||
|
name: Complement
|
||||||
|
uses: ./.github/workflows/bake.yml
|
||||||
|
with:
|
||||||
|
bake_targets: '["complement-tester", "complement-testee"]'
|
||||||
|
cargo_profiles: '["test"]'
|
||||||
|
feat_sets: ${{inputs.complement_feat_sets}}
|
||||||
|
rust_toolchains: '["nightly"]'
|
||||||
|
sys_names: ${{inputs.sys_names}}
|
||||||
|
sys_versions: ${{inputs.sys_versions}}
|
||||||
|
rust_targets: ${{inputs.rust_targets}}
|
||||||
|
sys_targets: ${{inputs.sys_targets}}
|
||||||
|
machines: ${{inputs.machines}}
|
||||||
|
excludes: ${{inputs.excludes}}
|
||||||
|
includes: ${{inputs.includes}}
|
||||||
|
|
||||||
|
compliance:
|
||||||
if: ${{inputs.complement && contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0]) && contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0]) && contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0])}}
|
if: ${{inputs.complement && contains(fromJSON(inputs.cargo_profiles), fromJSON('["test"]')[0]) && contains(fromJSON(inputs.feat_sets), fromJSON('["all"]')[0]) && contains(fromJSON(inputs.rust_toolchains), fromJSON('["nightly"]')[0])}}
|
||||||
name: Matrix Compliance
|
name: Matrix Compliance
|
||||||
needs: [complement_tester, complement_testee]
|
needs: [complement]
|
||||||
runs-on: ${{matrix.machine}}
|
runs-on: ${{matrix.machine}}
|
||||||
concurrency:
|
concurrency:
|
||||||
group: complement-cant-walk-and-chew-bubblegum
|
group: complement-cant-walk-and-chew-bubblegum
|
||||||
@@ -120,8 +106,8 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
cargo_profile: ${{fromJSON('["test"]')}}
|
cargo_profile: ${{fromJSON('["test"]')}}
|
||||||
|
feat_set: ${{fromJSON(inputs.complement_feat_sets)}}
|
||||||
rust_toolchain: ${{fromJSON('["nightly"]')}}
|
rust_toolchain: ${{fromJSON('["nightly"]')}}
|
||||||
feat_set: ${{fromJSON('["all"]')}}
|
|
||||||
sys_name: ${{fromJSON(inputs.sys_names)}}
|
sys_name: ${{fromJSON(inputs.sys_names)}}
|
||||||
sys_version: ${{fromJSON(inputs.sys_versions)}}
|
sys_version: ${{fromJSON(inputs.sys_versions)}}
|
||||||
rust_target: ${{fromJSON(inputs.rust_targets)}}
|
rust_target: ${{fromJSON(inputs.rust_targets)}}
|
||||||
@@ -147,7 +133,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
docker/complement.sh
|
docker/complement.sh
|
||||||
|
|
||||||
- name: Results
|
- name: Extract
|
||||||
id: extract
|
id: extract
|
||||||
env:
|
env:
|
||||||
name: complement_tester__${{matrix.cargo_profile}}__${{matrix.rust_toolchain}}__${{matrix.rust_target}}__${{matrix.feat_set}}__${{matrix.sys_name}}__${{matrix.sys_version}}__${{matrix.sys_target}}
|
name: complement_tester__${{matrix.cargo_profile}}__${{matrix.rust_toolchain}}__${{matrix.rust_target}}__${{matrix.feat_set}}__${{matrix.sys_name}}__${{matrix.sys_version}}__${{matrix.sys_target}}
|
||||||
@@ -156,11 +142,15 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
cid=$(cat "$name")
|
cid=$(cat "$name")
|
||||||
docker cp "$cid:/usr/src/complement/new_results.jsonl" tests/test_results/complement/test_results.jsonl
|
docker cp "$cid:/usr/src/complement/new_results.jsonl" tests/test_results/complement/test_results.jsonl
|
||||||
git diff --exit-code --color --color-moved
|
|
||||||
|
|
||||||
- name: Artifacts
|
- name: Upload
|
||||||
id: upload
|
id: upload
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: test_results.${{matrix.feat_set}}.${{matrix.sys_name}}.${{matrix.sys_target}}.jsonl
|
name: test_results.${{matrix.feat_set}}.${{matrix.sys_name}}.${{matrix.sys_target}}.jsonl
|
||||||
path: ./tests/test_results/complement/test_results.jsonl
|
path: ./tests/test_results/complement/test_results.jsonl
|
||||||
|
|
||||||
|
- name: Accept
|
||||||
|
id: accept
|
||||||
|
run: |
|
||||||
|
git diff --exit-code --color --color-moved
|
||||||
|
|||||||
@@ -22,9 +22,12 @@ COPY <<EOF v3.ext
|
|||||||
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
|
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
|
||||||
subjectAltName = @alt_names
|
subjectAltName = @alt_names
|
||||||
[alt_names]
|
[alt_names]
|
||||||
|
DNS.0 = *.docker.internal
|
||||||
DNS.1 = hs1
|
DNS.1 = hs1
|
||||||
DNS.2 = hs2
|
DNS.2 = hs2
|
||||||
DNS.3 = hs3
|
DNS.3 = hs3
|
||||||
|
DNS.4 = hs4
|
||||||
|
IP.1 = 127.0.0.1
|
||||||
EOF
|
EOF
|
||||||
RUN <<EOF
|
RUN <<EOF
|
||||||
set -eux
|
set -eux
|
||||||
@@ -38,7 +41,7 @@ RUN <<EOF
|
|||||||
-sha256 \
|
-sha256 \
|
||||||
-key private_key.pem \
|
-key private_key.pem \
|
||||||
-subj "/C=US/ST=CA/O=MyOrg, Inc./CN=hs1" \
|
-subj "/C=US/ST=CA/O=MyOrg, Inc./CN=hs1" \
|
||||||
-addext "subjectAltName = DNS:hs1, DNS:hs2, DNS:hs3" \
|
-addext "subjectAltName = DNS:*.docker.internal DNS:hs1, DNS:hs2, DNS:hs3, DNS:hs4, IP:127.0.0.1" \
|
||||||
-out signing_request.csr
|
-out signing_request.csr
|
||||||
|
|
||||||
openssl x509 \
|
openssl x509 \
|
||||||
@@ -167,6 +170,7 @@ EOF
|
|||||||
|
|
||||||
|
|
||||||
FROM input AS complement-tester
|
FROM input AS complement-tester
|
||||||
|
ARG complement_verbose=0
|
||||||
ARG complement_debug=0
|
ARG complement_debug=0
|
||||||
ARG complement_count=1
|
ARG complement_count=1
|
||||||
ARG complement_parallel=16
|
ARG complement_parallel=16
|
||||||
@@ -188,11 +192,12 @@ ENV complement_tests="$complement_tests"
|
|||||||
ENV complement_skip="$complement_skip"
|
ENV complement_skip="$complement_skip"
|
||||||
ENV complement_run="$complement_run"
|
ENV complement_run="$complement_run"
|
||||||
ENV complement_tests="$complement_tests"
|
ENV complement_tests="$complement_tests"
|
||||||
|
ENV COMPLEMENT_ALWAYS_PRINT_SERVER_LOGS="$complement_verbose"
|
||||||
ENV COMPLEMENT_HOSTNAME_RUNNING_COMPLEMENT="host.docker.internal"
|
ENV COMPLEMENT_HOSTNAME_RUNNING_COMPLEMENT="host.docker.internal"
|
||||||
ENV COMPLEMENT_HOST_MOUNTS="/var/run/docker.sock:/var/run/docker.sock"
|
ENV COMPLEMENT_HOST_MOUNTS="/var/run/docker.sock:/var/run/docker.sock"
|
||||||
ENV jq_res='{Action: .Action, Test: .Test}'
|
ENV jq_res='{Action: .Action, Test: .Test}'
|
||||||
ENV jq_sel='select((.Action == \"pass\" or .Action == \"fail\" or .Action == \"skip\") and .Test != null)'
|
ENV jq_sel='select((.Action == \"pass\" or .Action == \"fail\" or .Action == \"skip\") and .Test != null)'
|
||||||
ENV jq_tab='([\"RESULT\",\"TEST\"] | (., map(length*\"-\"))), (.[] | [.Action, .Test]) | @tsv'
|
ENV jq_tab='[.Action, .Test] | @tsv'
|
||||||
WORKDIR /usr/src/complement
|
WORKDIR /usr/src/complement
|
||||||
COPY --from=complement-config /complement/old_results.jsonl .
|
COPY --from=complement-config /complement/old_results.jsonl .
|
||||||
COPY <<EOF uwu.sh
|
COPY <<EOF uwu.sh
|
||||||
@@ -210,15 +215,13 @@ COPY <<EOF uwu.sh
|
|||||||
-skip="${complement_skip}"
|
-skip="${complement_skip}"
|
||||||
-run="${complement_run}"
|
-run="${complement_run}"
|
||||||
"${complement_tests}"
|
"${complement_tests}"
|
||||||
| jq -c "${jq_sel} | ${jq_res}"
|
| jq --unbuffered -c "${jq_sel} | ${jq_res}"
|
||||||
| tee results.jsonl
|
| tee results.jsonl
|
||||||
| jq -s -r "${jq_tab}"
|
| jq --unbuffered -r "${jq_tab}"
|
||||||
;
|
;
|
||||||
|
|
||||||
jq -s -c "sort_by(.Test)[]" < results.jsonl | uniq > new_results.jsonl;
|
jq -s -c "sort_by(.Test)[]" < results.jsonl | uniq > new_results.jsonl;
|
||||||
|
|
||||||
wc -l old_results.jsonl new_results.jsonl;
|
wc -l old_results.jsonl new_results.jsonl;
|
||||||
|
|
||||||
diff -w -y -t --width=275 --suppress-common-lines old_results.jsonl new_results.jsonl;
|
diff -w -y -t --width=275 --suppress-common-lines old_results.jsonl new_results.jsonl;
|
||||||
EOF
|
EOF
|
||||||
RUN echo $(tr -d '\n' < uwu.sh) > uwu.sh
|
RUN echo $(tr -d '\n' < uwu.sh) > uwu.sh
|
||||||
|
|||||||
@@ -1,22 +1,27 @@
|
|||||||
variable "acct" {
|
variable "GITHUB_ACTOR" {}
|
||||||
default = "$GITHUB_ACTOR"
|
variable "GITHUB_REPOSITORY" {}
|
||||||
}
|
variable "GITHUB_REF" {}
|
||||||
|
variable "GITHUB_REF_SHA" {}
|
||||||
|
variable "GITHUB_REF_NAME" {}
|
||||||
|
|
||||||
|
variable "acct" {
|
||||||
|
default = "${GITHUB_ACTOR}"
|
||||||
|
}
|
||||||
variable "repo" {
|
variable "repo" {
|
||||||
default = "$GITHUB_REPOSITORY"
|
default = "${GITHUB_REPOSITORY}"
|
||||||
}
|
}
|
||||||
variable "docker_repo" {
|
variable "docker_repo" {
|
||||||
default = "$DOCKER_ID"
|
default = "${repo}"
|
||||||
}
|
}
|
||||||
|
|
||||||
variable "git_ref" {
|
variable "git_ref" {
|
||||||
default = "$GITHUB_REF"
|
default = "${GITHUB_REF}"
|
||||||
}
|
}
|
||||||
variable "git_ref_sha" {
|
variable "git_ref_sha" {
|
||||||
default = "$GITHUB_REF_SHA"
|
default = "${GITHUB_REF_SHA}"
|
||||||
}
|
}
|
||||||
variable "git_ref_name" {
|
variable "git_ref_name" {
|
||||||
default = "$GITHUB_REF_NAME"
|
default = "${GITHUB_REF_NAME}"
|
||||||
}
|
}
|
||||||
|
|
||||||
cargo_feat_sets = {
|
cargo_feat_sets = {
|
||||||
@@ -33,7 +38,7 @@ variable "feat_sets" {
|
|||||||
default = "[\"none\", \"default\", \"all\"]"
|
default = "[\"none\", \"default\", \"all\"]"
|
||||||
}
|
}
|
||||||
variable "cargo_profiles" {
|
variable "cargo_profiles" {
|
||||||
default = "[\"test\", \"bench\"]"
|
default = "[\"test\", \"release\"]"
|
||||||
}
|
}
|
||||||
variable "cargo_install_root" {
|
variable "cargo_install_root" {
|
||||||
default = "/usr"
|
default = "/usr"
|
||||||
@@ -554,7 +559,7 @@ target "install" {
|
|||||||
contexts = {
|
contexts = {
|
||||||
input = elem("target:diner", [feat_set, sys_name, sys_version, sys_target])
|
input = elem("target:diner", [feat_set, sys_name, sys_version, sys_target])
|
||||||
output = elem("target:installer", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
output = elem("target:installer", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
||||||
docs = elem("target:docs", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
#docs = elem("target:docs", [cargo_profile, rust_toolchain, rust_target, feat_set, sys_name, sys_version, sys_target])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ cargo_profile="${cargo_profile:-$default_cargo_profile}"
|
|||||||
feat_set="${feat_set:-$default_feat_set}"
|
feat_set="${feat_set:-$default_feat_set}"
|
||||||
rust_target="${rust_target:-$default_rust_target}"
|
rust_target="${rust_target:-$default_rust_target}"
|
||||||
rust_toolchain="${rust_toolchain:-$default_rust_toolchain}"
|
rust_toolchain="${rust_toolchain:-$default_rust_toolchain}"
|
||||||
sys_name="${sys_names:-$default_sys_name}"
|
sys_name="${sys_name:-$default_sys_name}"
|
||||||
sys_target="${sys_target:-$default_sys_target}"
|
sys_target="${sys_target:-$default_sys_target}"
|
||||||
sys_version="${sys_version:-$default_sys_version}"
|
sys_version="${sys_version:-$default_sys_version}"
|
||||||
|
|
||||||
@@ -30,37 +30,36 @@ set +a
|
|||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
|
set -x
|
||||||
tester_image="complement-tester--${feat_set}--${sys_name}--${sys_version}--${sys_target}"
|
tester_image="complement-tester--${feat_set}--${sys_name}--${sys_version}--${sys_target}"
|
||||||
testee_image="complement-testee--${cargo_profile}--${rust_toolchain}--${rust_target}--${feat_set}--${sys_name}--${sys_version}--${sys_target}"
|
testee_image="complement-testee--${cargo_profile}--${rust_toolchain}--${rust_target}--${feat_set}--${sys_name}--${sys_version}--${sys_target}"
|
||||||
name="complement_tester__${cargo_profile}__${rust_toolchain}__${rust_target}__${feat_set}__${sys_name}__${sys_version}__${sys_target}"
|
name="complement_tester__${cargo_profile}__${rust_toolchain}__${rust_target}__${feat_set}__${sys_name}__${sys_version}__${sys_target}"
|
||||||
sock="/var/run/docker.sock"
|
sock="/var/run/docker.sock"
|
||||||
arg="--name $name -v $sock:$sock --network=host $tester_image ${testee_image}"
|
arg="--name $name -v $sock:$sock --network=host $tester_image ${testee_image}"
|
||||||
|
set +x
|
||||||
|
|
||||||
if test "$CI_VERBOSE_ENV" = "true"; then
|
if test "$CI_VERBOSE_ENV" = "true"; then
|
||||||
date
|
date
|
||||||
env
|
env
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "$CI" = "true"; then
|
|
||||||
arg="-d $arg"
|
|
||||||
else
|
|
||||||
arg="--rm $arg"
|
|
||||||
fi
|
|
||||||
|
|
||||||
docker rm -f "$name" 2>/dev/null
|
docker rm -f "$name" 2>/dev/null
|
||||||
|
|
||||||
trap 'set +x; date; echo -e "\033[1;41;37mFAIL\033[0m"' ERR
|
trap 'set +x; date; echo -e "\033[1;41;37mFAIL\033[0m"' ERR
|
||||||
|
|
||||||
set -x -e
|
|
||||||
cid=$(docker run $arg)
|
|
||||||
set +x
|
|
||||||
|
|
||||||
if test "$CI" = "true"; then
|
if test "$CI" = "true"; then
|
||||||
echo -n "$cid" > "$name"
|
arg="-d $arg"
|
||||||
|
cid=$(docker run $arg)
|
||||||
|
else
|
||||||
|
arg="--rm -a stdout -a stderr $arg"
|
||||||
|
docker run $arg
|
||||||
|
exit $?
|
||||||
fi
|
fi
|
||||||
|
|
||||||
trap 'docker container stop $cid; set +x; date; echo -e "\033[1;41;37mFAIL\033[0m"' INT
|
echo -n "$cid" > "$name"
|
||||||
|
|
||||||
|
trap 'docker container stop $cid; set +x; date; echo -e "\033[1;41;37mFAIL\033[0m"' INT
|
||||||
docker logs -f "$cid"
|
docker logs -f "$cid"
|
||||||
docker wait "$cid" 2>/dev/null
|
docker wait "$cid" 2>/dev/null
|
||||||
|
|
||||||
echo -e "\033[1;42;30mPASS\033[0m"
|
echo -e "\033[1;42;30mPASS\033[0m"
|
||||||
|
|||||||
Reference in New Issue
Block a user