mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Reduce the number of cached artifacts in a CI run
Signed-off-by: Pedro Algarvio <palgarvio@vmware.com>
This commit is contained in:
parent
6dff22e227
commit
88073e1331
4 changed files with 79 additions and 238 deletions
115
.github/workflows/test-action-macos.yml
vendored
115
.github/workflows/test-action-macos.yml
vendored
|
@ -70,7 +70,6 @@ jobs:
|
|||
runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }}
|
||||
outputs:
|
||||
matrix-include: ${{ steps.generate-matrix.outputs.matrix }}
|
||||
transport-matrix-include: ${{ steps.generate-transport-matrix.outputs.matrix }}
|
||||
steps:
|
||||
- name: Checkout Source Code
|
||||
uses: actions/checkout@v3
|
||||
|
@ -85,23 +84,10 @@ jobs:
|
|||
echo "$TEST_MATRIX"
|
||||
echo "matrix=$TEST_MATRIX" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Generate Transport Matrix
|
||||
id: generate-transport-matrix
|
||||
run: |
|
||||
TRANSPORT_MATRIX=$(tools ci transport-matrix ${{ inputs.distro-slug }})
|
||||
echo "$TRANSPORT_MATRIX"
|
||||
echo "matrix=$TRANSPORT_MATRIX" >> "$GITHUB_OUTPUT"
|
||||
|
||||
dependencies:
|
||||
name: Setup Test Dependencies
|
||||
runs-on: ${{ inputs.distro-slug }}
|
||||
timeout-minutes: 90
|
||||
needs:
|
||||
- generate-matrix
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include: ${{ fromJSON(needs.generate-matrix.outputs.transport-matrix-include) }}
|
||||
steps:
|
||||
- name: Checkout Source Code
|
||||
uses: actions/checkout@v3
|
||||
|
@ -111,7 +97,7 @@ jobs:
|
|||
uses: actions/cache@v3
|
||||
with:
|
||||
path: nox.${{ inputs.distro-slug }}.tar.*
|
||||
key: ${{ inputs.cache-prefix }}|testrun-deps|${{ inputs.distro-slug }}|${{ inputs.nox-session }}|${{ matrix.transport }}|${{ inputs.python-version }}|${{ hashFiles('requirements/**/*.txt', 'noxfile.py') }}
|
||||
key: ${{ inputs.cache-prefix }}|testrun-deps|${{ inputs.distro-slug }}|${{ inputs.nox-session }}|${{ inputs.python-version }}|${{ hashFiles('requirements/**/*.txt', 'noxfile.py') }}
|
||||
|
||||
- name: Download Onedir Tarball as an Artifact
|
||||
if: steps.nox-dependencies-cache.outputs.cache-hit != 'true'
|
||||
|
@ -144,17 +130,6 @@ jobs:
|
|||
run: |
|
||||
python3 -m pip install 'nox==${{ inputs.nox-version }}'
|
||||
|
||||
- name: Define Nox Session
|
||||
id: define-nox-session
|
||||
run: |
|
||||
if [ "${{ matrix.transport }}" != "tcp" ]; then
|
||||
echo NOX_SESSION=${{ inputs.nox-session}} >> "$GITHUB_ENV"
|
||||
echo "nox-session=${{ inputs.nox-session}}" >> "$GITHUB_OUTPUT"
|
||||
else
|
||||
echo NOX_SESSION=${{ inputs.nox-session}}-tcp >> "$GITHUB_ENV"
|
||||
echo "nox-session=${{ inputs.nox-session}}-tcp" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
|
||||
- name: Install Dependencies
|
||||
if: steps.nox-dependencies-cache.outputs.cache-hit != 'true'
|
||||
env:
|
||||
|
@ -165,7 +140,7 @@ jobs:
|
|||
export LDFLAGS="-L/usr/local/opt/openssl@3/lib"
|
||||
export CPPFLAGS="-I/usr/local/opt/openssl@3/include"
|
||||
export PKG_CONFIG_PATH="/usr/local/opt/openssl@3/lib/pkgconfig"
|
||||
nox --install-only -e ${{ env.NOX_SESSION }}
|
||||
nox --install-only -e ${{ inputs.nox-session }}
|
||||
|
||||
- name: Cleanup .nox Directory
|
||||
if: steps.nox-dependencies-cache.outputs.cache-hit != 'true'
|
||||
|
@ -180,7 +155,7 @@ jobs:
|
|||
- name: Upload Nox Requirements Tarball
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: nox-${{ inputs.distro-slug }}-${{ steps.define-nox-session.outputs.nox-session }}
|
||||
name: nox-${{ inputs.distro-slug }}-${{ inputs.nox-session }}
|
||||
path: nox.${{ inputs.distro-slug }}.tar.*
|
||||
|
||||
test:
|
||||
|
@ -194,6 +169,8 @@ jobs:
|
|||
fail-fast: false
|
||||
matrix:
|
||||
include: ${{ fromJSON(needs.generate-matrix.outputs.matrix-include) }}
|
||||
env:
|
||||
SALT_TRANSPORT: ${{ matrix.transport }}
|
||||
|
||||
steps:
|
||||
- name: Checkout Source Code
|
||||
|
@ -224,7 +201,7 @@ jobs:
|
|||
uses: actions/cache@v3
|
||||
with:
|
||||
path: nox.${{ inputs.distro-slug }}.tar.*
|
||||
key: ${{ inputs.cache-prefix }}|testrun-deps|${{ inputs.distro-slug }}|${{ inputs.nox-session }}|${{ matrix.transport }}|${{ inputs.python-version }}|${{ hashFiles('requirements/**/*.txt', 'noxfile.py') }}
|
||||
key: ${{ inputs.cache-prefix }}|testrun-deps|${{ inputs.distro-slug }}|${{ inputs.nox-session }}|${{ inputs.python-version }}|${{ hashFiles('requirements/**/*.txt', 'noxfile.py') }}
|
||||
# If we get a cache miss here it means the dependencies step failed to save the cache
|
||||
fail-on-cache-miss: true
|
||||
|
||||
|
@ -241,14 +218,6 @@ jobs:
|
|||
run: |
|
||||
nox -e decompress-dependencies -- ${{ inputs.distro-slug }}
|
||||
|
||||
- name: Define Nox Session
|
||||
run: |
|
||||
if [ "${{ matrix.transport }}" != "tcp" ]; then
|
||||
echo NOX_SESSION=${{ inputs.nox-session}} >> "$GITHUB_ENV"
|
||||
else
|
||||
echo NOX_SESSION=${{ inputs.nox-session}}-tcp >> "$GITHUB_ENV"
|
||||
fi
|
||||
|
||||
- name: Download testrun-changed-files.txt
|
||||
if: ${{ fromJSON(inputs.testrun)['type'] != 'full' }}
|
||||
uses: actions/download-artifact@v3
|
||||
|
@ -265,7 +234,7 @@ jobs:
|
|||
SKIP_INITIAL_GH_ACTIONS_FAILURES: "1"
|
||||
SKIP_CODE_COVERAGE: "1"
|
||||
run: |
|
||||
sudo -E nox -e ${{ env.NOX_SESSION }} -- ${{ matrix.tests-chunk }} -- -k "mac or darwin"
|
||||
sudo -E nox -e ${{ inputs.nox-session }} -- ${{ matrix.tests-chunk }} -- -k "mac or darwin"
|
||||
|
||||
- name: Run Fast/Changed Tests
|
||||
id: run-fast-changed-tests
|
||||
|
@ -281,7 +250,7 @@ jobs:
|
|||
SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}"
|
||||
COVERAGE_CONTEXT: ${{ inputs.distro-slug }}
|
||||
run: |
|
||||
sudo -E nox -e ${{ env.NOX_SESSION }} -- ${{ matrix.tests-chunk }} -- \
|
||||
sudo -E nox -e ${{ inputs.nox-session }} -- ${{ matrix.tests-chunk }} -- \
|
||||
-k "mac or darwin" --suppress-no-test-exit-code \
|
||||
--from-filenames=testrun-changed-files.txt
|
||||
|
||||
|
@ -299,7 +268,7 @@ jobs:
|
|||
SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}"
|
||||
COVERAGE_CONTEXT: ${{ inputs.distro-slug }}
|
||||
run: |
|
||||
sudo -E nox -e ${{ env.NOX_SESSION }} -- ${{ matrix.tests-chunk }} -- \
|
||||
sudo -E nox -e ${{ inputs.nox-session }} -- ${{ matrix.tests-chunk }} -- \
|
||||
-k "mac or darwin" --suppress-no-test-exit-code --no-fast-tests --slow-tests \
|
||||
--from-filenames=testrun-changed-files.txt
|
||||
|
||||
|
@ -317,7 +286,7 @@ jobs:
|
|||
SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}"
|
||||
COVERAGE_CONTEXT: ${{ inputs.distro-slug }}
|
||||
run: |
|
||||
sudo -E nox -e ${{ env.NOX_SESSION }} -- ${{ matrix.tests-chunk }} -- \
|
||||
sudo -E nox -e ${{ inputs.nox-session }} -- ${{ matrix.tests-chunk }} -- \
|
||||
-k "mac or darwin" --suppress-no-test-exit-code --no-fast-tests --core-tests \
|
||||
--from-filenames=testrun-changed-files.txt
|
||||
|
||||
|
@ -335,7 +304,7 @@ jobs:
|
|||
SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}"
|
||||
COVERAGE_CONTEXT: ${{ inputs.distro-slug }}
|
||||
run: |
|
||||
sudo -E nox -e ${{ env.NOX_SESSION }} -- ${{ matrix.tests-chunk }} -- \
|
||||
sudo -E nox -e ${{ inputs.nox-session }} -- ${{ matrix.tests-chunk }} -- \
|
||||
-k "mac or darwin" --suppress-no-test-exit-code
|
||||
|
||||
- name: Run Slow Tests
|
||||
|
@ -352,7 +321,7 @@ jobs:
|
|||
SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}"
|
||||
COVERAGE_CONTEXT: ${{ inputs.distro-slug }}
|
||||
run: |
|
||||
sudo -E nox -e ${{ env.NOX_SESSION }} -- ${{ matrix.tests-chunk }} -- \
|
||||
sudo -E nox -e ${{ inputs.nox-session }} -- ${{ matrix.tests-chunk }} -- \
|
||||
-k "mac or darwin" --suppress-no-test-exit-code --no-fast-tests --slow-tests
|
||||
|
||||
- name: Run Core Tests
|
||||
|
@ -369,7 +338,7 @@ jobs:
|
|||
SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}"
|
||||
COVERAGE_CONTEXT: ${{ inputs.distro-slug }}
|
||||
run: |
|
||||
sudo -E nox -e ${{ env.NOX_SESSION }} -- ${{ matrix.tests-chunk }} -- \
|
||||
sudo -E nox -e ${{ inputs.nox-session }} -- ${{ matrix.tests-chunk }} -- \
|
||||
-k "mac or darwin" --suppress-no-test-exit-code --no-fast-tests --core-tests
|
||||
|
||||
- name: Run Flaky Tests
|
||||
|
@ -386,7 +355,7 @@ jobs:
|
|||
SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}"
|
||||
COVERAGE_CONTEXT: ${{ inputs.distro-slug }}
|
||||
run: |
|
||||
sudo -E nox -e ${{ env.NOX_SESSION }} -- ${{ matrix.tests-chunk }} -- \
|
||||
sudo -E nox -e ${{ inputs.nox-session }} -- ${{ matrix.tests-chunk }} -- \
|
||||
-k "mac or darwin" --suppress-no-test-exit-code --no-fast-tests --flaky-jail
|
||||
|
||||
- name: Run Full Tests
|
||||
|
@ -403,7 +372,7 @@ jobs:
|
|||
SKIP_CODE_COVERAGE: "${{ inputs.skip-code-coverage && '1' || '0' }}"
|
||||
COVERAGE_CONTEXT: ${{ inputs.distro-slug }}
|
||||
run: |
|
||||
sudo -E nox -e ${{ env.NOX_SESSION }} -- ${{ matrix.tests-chunk }} -- \
|
||||
sudo -E nox -e ${{ inputs.nox-session }} -- ${{ matrix.tests-chunk }} -- \
|
||||
--slow-tests --core-tests -k "mac or darwin"
|
||||
|
||||
- name: Fix file ownership
|
||||
|
@ -429,15 +398,15 @@ jobs:
|
|||
rm -rf artifacts/salt*
|
||||
tree -a artifacts
|
||||
if [ "${{ inputs.skip-code-coverage }}" != "true" ]; then
|
||||
mv artifacts/coverage/.coverage artifacts/coverage/.coverage.${{ inputs.distro-slug }}.${{ env.NOX_SESSION }}.${{ matrix.tests-chunk }}
|
||||
echo "COVERAGE_FILE=artifacts/coverage/.coverage.${{ inputs.distro-slug }}.${{ env.NOX_SESSION }}.${{ matrix.tests-chunk }}" >> GITHUB_ENV
|
||||
mv artifacts/coverage/.coverage artifacts/coverage/.coverage.${{ inputs.distro-slug }}.${{ inputs.nox-session }}.${{ matrix.transport }}.${{ matrix.tests-chunk }}
|
||||
echo "COVERAGE_FILE=artifacts/coverage/.coverage.${{ inputs.distro-slug }}.${{ inputs.nox-session }}.${{ matrix.transport }}.${{ matrix.tests-chunk }}" >> GITHUB_ENV
|
||||
fi
|
||||
|
||||
- name: Upload Code Coverage Test Run Artifacts
|
||||
if: always() && inputs.skip-code-coverage == false && steps.download-artifacts-from-vm.outcome == 'success' && job.status != 'cancelled'
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: testrun-coverage-artifacts-${{ inputs.distro-slug }}-${{ env.NOX_SESSION }}
|
||||
name: testrun-coverage-artifacts-${{ inputs.distro-slug }}-${{ inputs.nox-session }}
|
||||
path: |
|
||||
artifacts/coverage/
|
||||
|
||||
|
@ -453,7 +422,7 @@ jobs:
|
|||
if: always() && steps.download-artifacts-from-vm.outcome == 'success' && job.status != 'cancelled'
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: testrun-junit-artifacts-${{ inputs.distro-slug }}-${{ env.NOX_SESSION }}
|
||||
name: testrun-junit-artifacts-${{ inputs.distro-slug }}-${{ inputs.nox-session }}-${{ matrix.transport }}
|
||||
path: |
|
||||
artifacts/xml-unittests-output/
|
||||
|
||||
|
@ -461,50 +430,39 @@ jobs:
|
|||
if: always() && steps.download-artifacts-from-vm.outcome == 'success' && job.status != 'cancelled'
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: testrun-log-artifacts-${{ inputs.distro-slug }}-${{ env.NOX_SESSION }}
|
||||
name: testrun-log-artifacts-${{ inputs.distro-slug }}-${{ inputs.nox-session }}-${{ matrix.transport }}
|
||||
path: |
|
||||
artifacts/logs
|
||||
|
||||
- name: Publish Test Report
|
||||
uses: mikepenz/action-junit-report@v3
|
||||
# always run even if the previous steps fails
|
||||
if: always() && inputs.skip-junit-reports == false
|
||||
with:
|
||||
check_name: Test Results(${{ inputs.distro-slug }}, transport=${{ matrix.transport }}, tests-chunk=${{ matrix.tests-chunk }})
|
||||
report_paths: 'artifacts/xml-unittests-output/*.xml'
|
||||
annotate_only: true
|
||||
|
||||
|
||||
report:
|
||||
name: Reports for ${{ inputs.distro-slug }}(${{ matrix.transport }})
|
||||
if: always() && (inputs.skip-code-coverage == false || inputs.skip-junit-reports == false) && needs.test.result != 'cancelled' && needs.test.result != 'skipped'
|
||||
name: Reports for ${{ inputs.distro-slug }}
|
||||
if: always() && inputs.skip-code-coverage == false && needs.test.result != 'cancelled' && needs.test.result != 'skipped'
|
||||
runs-on: ${{ github.event.repository.private && fromJSON('["self-hosted", "linux", "x86_64"]') || 'ubuntu-latest' }}
|
||||
needs:
|
||||
- generate-matrix
|
||||
- test
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include: ${{ fromJSON(needs.generate-matrix.outputs.transport-matrix-include) }}
|
||||
|
||||
steps:
|
||||
- name: Checkout Source Code
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Define Nox Session
|
||||
run: |
|
||||
if [ "${{ matrix.transport }}" != "tcp" ]; then
|
||||
echo NOX_SESSION=${{ inputs.nox-session }} >> "$GITHUB_ENV"
|
||||
else
|
||||
echo NOX_SESSION=${{ inputs.nox-session }}-tcp >> "$GITHUB_ENV"
|
||||
fi
|
||||
|
||||
- name: Download Code Coverage Test Run Artifacts
|
||||
uses: actions/download-artifact@v3
|
||||
if: ${{ inputs.skip-code-coverage == false }}
|
||||
id: download-coverage-artifacts
|
||||
with:
|
||||
name: testrun-coverage-artifacts-${{ inputs.distro-slug }}-${{ env.NOX_SESSION }}
|
||||
name: testrun-coverage-artifacts-${{ inputs.distro-slug }}-${{ inputs.nox-session }}
|
||||
path: artifacts/coverage/
|
||||
|
||||
- name: Download JUnit XML Test Run Artifacts
|
||||
uses: actions/download-artifact@v3
|
||||
id: download-junit-artifacts
|
||||
with:
|
||||
name: testrun-junit-artifacts-${{ inputs.distro-slug }}-${{ env.NOX_SESSION }}
|
||||
path: artifacts/xml-unittests-output/
|
||||
|
||||
- name: Show Downloaded Test Run Artifacts
|
||||
run: |
|
||||
tree -a artifacts
|
||||
|
@ -548,12 +506,3 @@ jobs:
|
|||
continue-on-error: true
|
||||
run: |
|
||||
nox --force-color -e report-coverage
|
||||
|
||||
- name: Publish Test Report
|
||||
uses: mikepenz/action-junit-report@v3
|
||||
# always run even if the previous steps fails
|
||||
if: always() && inputs.skip-junit-reports == false && steps.download-junit-artifacts.outcome == 'success'
|
||||
with:
|
||||
check_name: Test Results(${{ inputs.distro-slug }})
|
||||
report_paths: 'artifacts/xml-unittests-output/*.xml'
|
||||
annotate_only: true
|
||||
|
|
115
.github/workflows/test-action.yml
vendored
115
.github/workflows/test-action.yml
vendored
|
@ -70,7 +70,6 @@ jobs:
|
|||
- x86_64
|
||||
outputs:
|
||||
matrix-include: ${{ steps.generate-matrix.outputs.matrix }}
|
||||
transport-matrix-include: ${{ steps.generate-transport-matrix.outputs.matrix }}
|
||||
steps:
|
||||
- name: Checkout Source Code
|
||||
uses: actions/checkout@v3
|
||||
|
@ -85,26 +84,13 @@ jobs:
|
|||
echo "$TEST_MATRIX"
|
||||
echo "matrix=$TEST_MATRIX" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Generate Transport Matrix
|
||||
id: generate-transport-matrix
|
||||
run: |
|
||||
TRANSPORT_MATRIX=$(tools ci transport-matrix ${{ inputs.distro-slug }})
|
||||
echo "$TRANSPORT_MATRIX"
|
||||
echo "matrix=$TRANSPORT_MATRIX" >> "$GITHUB_OUTPUT"
|
||||
|
||||
dependencies:
|
||||
name: Setup Test Dependencies
|
||||
needs:
|
||||
- generate-matrix
|
||||
runs-on:
|
||||
- self-hosted
|
||||
- linux
|
||||
- bastion
|
||||
timeout-minutes: 90
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include: ${{ fromJSON(needs.generate-matrix.outputs.transport-matrix-include) }}
|
||||
steps:
|
||||
- name: Checkout Source Code
|
||||
uses: actions/checkout@v3
|
||||
|
@ -114,7 +100,7 @@ jobs:
|
|||
uses: actions/cache@v3
|
||||
with:
|
||||
path: nox.${{ inputs.distro-slug }}.tar.*
|
||||
key: ${{ inputs.cache-prefix }}|testrun-deps|${{ inputs.distro-slug }}|${{ inputs.nox-session }}|${{ matrix.transport }}|${{ hashFiles('requirements/**/*.txt', 'cicd/golden-images.json', 'noxfile.py') }}
|
||||
key: ${{ inputs.cache-prefix }}|testrun-deps|${{ inputs.distro-slug }}|${{ inputs.nox-session }}${{ hashFiles('requirements/**/*.txt', 'cicd/golden-images.json', 'noxfile.py') }}
|
||||
|
||||
- name: Download Onedir Tarball as an Artifact
|
||||
if: steps.nox-dependencies-cache.outputs.cache-hit != 'true'
|
||||
|
@ -140,17 +126,6 @@ jobs:
|
|||
if: steps.nox-dependencies-cache.outputs.cache-hit != 'true'
|
||||
uses: ./.github/actions/setup-python-tools-scripts
|
||||
|
||||
- name: Define Nox Session
|
||||
id: define-nox-session
|
||||
run: |
|
||||
if [ "${{ matrix.transport }}" != "tcp" ]; then
|
||||
echo NOX_SESSION=${{ inputs.nox-session}} >> "$GITHUB_ENV"
|
||||
echo "nox-session=${{ inputs.nox-session}}" >> "$GITHUB_OUTPUT"
|
||||
else
|
||||
echo NOX_SESSION=${{ inputs.nox-session}}-tcp >> "$GITHUB_ENV"
|
||||
echo "nox-session=${{ inputs.nox-session}}-tcp" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
|
||||
- name: Get Salt Project GitHub Actions Bot Environment
|
||||
if: steps.nox-dependencies-cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
|
@ -177,7 +152,7 @@ jobs:
|
|||
- name: Install Dependencies
|
||||
if: steps.nox-dependencies-cache.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
tools --timestamps vm install-dependencies --nox-session=${{ env.NOX_SESSION }} ${{ inputs.distro-slug }}
|
||||
tools --timestamps vm install-dependencies --nox-session=${{ inputs.nox-session }} ${{ inputs.distro-slug }}
|
||||
|
||||
- name: Cleanup .nox Directory
|
||||
if: steps.nox-dependencies-cache.outputs.cache-hit != 'true'
|
||||
|
@ -202,7 +177,7 @@ jobs:
|
|||
- name: Upload Nox Requirements Tarball
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: nox-${{ inputs.distro-slug }}-${{ steps.define-nox-session.outputs.nox-session }}
|
||||
name: nox-${{ inputs.distro-slug }}-${{ inputs.nox-session }}
|
||||
path: nox.${{ inputs.distro-slug }}.tar.*
|
||||
|
||||
test:
|
||||
|
@ -219,6 +194,8 @@ jobs:
|
|||
fail-fast: false
|
||||
matrix:
|
||||
include: ${{ fromJSON(needs.generate-matrix.outputs.matrix-include) }}
|
||||
env:
|
||||
SALT_TRANSPORT: ${{ matrix.transport }}
|
||||
|
||||
steps:
|
||||
- name: Checkout Source Code
|
||||
|
@ -245,7 +222,7 @@ jobs:
|
|||
uses: actions/cache@v3
|
||||
with:
|
||||
path: nox.${{ inputs.distro-slug }}.tar.*
|
||||
key: ${{ inputs.cache-prefix }}|testrun-deps|${{ inputs.distro-slug }}|${{ inputs.nox-session }}|${{ matrix.transport }}|${{ hashFiles('requirements/**/*.txt', 'cicd/golden-images.json', 'noxfile.py') }}
|
||||
key: ${{ inputs.cache-prefix }}|testrun-deps|${{ inputs.distro-slug }}|${{ inputs.nox-session }}${{ hashFiles('requirements/**/*.txt', 'cicd/golden-images.json', 'noxfile.py') }}
|
||||
# If we get a cache miss here it means the dependencies step failed to save the cache
|
||||
fail-on-cache-miss: true
|
||||
|
||||
|
@ -256,14 +233,6 @@ jobs:
|
|||
- name: Setup Python Tools Scripts
|
||||
uses: ./.github/actions/setup-python-tools-scripts
|
||||
|
||||
- name: Define Nox Session
|
||||
run: |
|
||||
if [ "${{ matrix.transport }}" != "tcp" ]; then
|
||||
echo NOX_SESSION=${{ inputs.nox-session }} >> "$GITHUB_ENV"
|
||||
else
|
||||
echo NOX_SESSION=${{ inputs.nox-session }}-tcp >> "$GITHUB_ENV"
|
||||
fi
|
||||
|
||||
- name: Download testrun-changed-files.txt
|
||||
if: ${{ fromJSON(inputs.testrun)['type'] != 'full' }}
|
||||
uses: actions/download-artifact@v3
|
||||
|
@ -298,7 +267,7 @@ jobs:
|
|||
- name: Show System Info & Test Plan
|
||||
run: |
|
||||
tools --timestamps --timeout-secs=1800 vm testplan --skip-requirements-install \
|
||||
--nox-session=${{ env.NOX_SESSION }} ${{ inputs.distro-slug }} \
|
||||
--nox-session=${{ inputs.nox-session }} ${{ inputs.distro-slug }} \
|
||||
${{ matrix.tests-chunk }}
|
||||
|
||||
- name: Run Fast/Changed Tests
|
||||
|
@ -306,7 +275,7 @@ jobs:
|
|||
if: ${{ fromJSON(inputs.testrun)['type'] != 'full' && fromJSON(inputs.testrun)['selected_tests']['fast'] == false }}
|
||||
run: |
|
||||
tools --timestamps --no-output-timeout-secs=1800 --timeout-secs=14400 vm test --skip-requirements-install \
|
||||
--nox-session=${{ env.NOX_SESSION }} --rerun-failures ${{ inputs.distro-slug }} \
|
||||
--nox-session=${{ inputs.nox-session }} --rerun-failures -E SALT_TRANSPORT ${{ inputs.distro-slug }} \
|
||||
${{ matrix.tests-chunk }} -- --suppress-no-test-exit-code \
|
||||
--from-filenames=testrun-changed-files.txt
|
||||
|
||||
|
@ -315,7 +284,7 @@ jobs:
|
|||
if: ${{ fromJSON(inputs.testrun)['type'] != 'full' && fromJSON(inputs.testrun)['selected_tests']['slow'] == false }}
|
||||
run: |
|
||||
tools --timestamps --no-output-timeout-secs=1800 --timeout-secs=14400 vm test --skip-requirements-install \
|
||||
--nox-session=${{ env.NOX_SESSION }} --rerun-failures ${{ inputs.distro-slug }} \
|
||||
--nox-session=${{ inputs.nox-session }} --rerun-failures -E SALT_TRANSPORT ${{ inputs.distro-slug }} \
|
||||
${{ matrix.tests-chunk }} -- --no-fast-tests --slow-tests --suppress-no-test-exit-code \
|
||||
--from-filenames=testrun-changed-files.txt
|
||||
|
||||
|
@ -324,7 +293,7 @@ jobs:
|
|||
if: ${{ fromJSON(inputs.testrun)['type'] != 'full' && fromJSON(inputs.testrun)['selected_tests']['core'] == false }}
|
||||
run: |
|
||||
tools --timestamps --no-output-timeout-secs=1800 --timeout-secs=14400 vm test --skip-requirements-install \
|
||||
--nox-session=${{ env.NOX_SESSION }} --rerun-failures ${{ inputs.distro-slug }} \
|
||||
--nox-session=${{ inputs.nox-session }} --rerun-failures -E SALT_TRANSPORT ${{ inputs.distro-slug }} \
|
||||
${{ matrix.tests-chunk }} -- --no-fast-tests --core-tests --suppress-no-test-exit-code \
|
||||
--from-filenames=testrun-changed-files.txt
|
||||
|
||||
|
@ -333,7 +302,7 @@ jobs:
|
|||
if: ${{ fromJSON(inputs.testrun)['type'] != 'full' && fromJSON(inputs.testrun)['selected_tests']['fast'] }}
|
||||
run: |
|
||||
tools --timestamps --no-output-timeout-secs=1800 --timeout-secs=14400 vm test --skip-requirements-install \
|
||||
--nox-session=${{ env.NOX_SESSION }} --rerun-failures ${{ (inputs.skip-code-coverage && matrix.tests-chunk != 'unit') && '--skip-code-coverage' || '' }} \
|
||||
--nox-session=${{ inputs.nox-session }} --rerun-failures -E SALT_TRANSPORT ${{ (inputs.skip-code-coverage && matrix.tests-chunk != 'unit') && '--skip-code-coverage' || '' }} \
|
||||
${{ inputs.distro-slug }} ${{ matrix.tests-chunk }}
|
||||
|
||||
- name: Run Slow Tests
|
||||
|
@ -341,7 +310,7 @@ jobs:
|
|||
if: ${{ fromJSON(inputs.testrun)['type'] != 'full' && fromJSON(inputs.testrun)['selected_tests']['slow'] }}
|
||||
run: |
|
||||
tools --timestamps --no-output-timeout-secs=1800 --timeout-secs=14400 vm test --skip-requirements-install \
|
||||
--nox-session=${{ env.NOX_SESSION }} --rerun-failures ${{ inputs.distro-slug }} \
|
||||
--nox-session=${{ inputs.nox-session }} --rerun-failures -E SALT_TRANSPORT ${{ inputs.distro-slug }} \
|
||||
${{ matrix.tests-chunk }} -- --no-fast-tests --slow-tests
|
||||
|
||||
- name: Run Core Tests
|
||||
|
@ -349,7 +318,7 @@ jobs:
|
|||
if: ${{ fromJSON(inputs.testrun)['type'] != 'full' && fromJSON(inputs.testrun)['selected_tests']['core'] }}
|
||||
run: |
|
||||
tools --timestamps --no-output-timeout-secs=1800 --timeout-secs=14400 vm test --skip-requirements-install \
|
||||
--nox-session=${{ env.NOX_SESSION }} --rerun-failures ${{ inputs.distro-slug }} \
|
||||
--nox-session=${{ inputs.nox-session }} --rerun-failures -E SALT_TRANSPORT ${{ inputs.distro-slug }} \
|
||||
${{ matrix.tests-chunk }} -- --no-fast-tests --core-tests
|
||||
|
||||
- name: Run Flaky Tests
|
||||
|
@ -357,7 +326,7 @@ jobs:
|
|||
if: ${{ fromJSON(inputs.testrun)['selected_tests']['flaky'] }}
|
||||
run: |
|
||||
tools --timestamps --no-output-timeout-secs=1800 --timeout-secs=14400 vm test --skip-requirements-install \
|
||||
--nox-session=${{ env.NOX_SESSION }} --rerun-failures ${{ inputs.distro-slug }} \
|
||||
--nox-session=${{ inputs.nox-session }} --rerun-failures -E SALT_TRANSPORT ${{ inputs.distro-slug }} \
|
||||
${{ matrix.tests-chunk }} -- --no-fast-tests --flaky-jail
|
||||
|
||||
- name: Run Full Tests
|
||||
|
@ -365,7 +334,7 @@ jobs:
|
|||
if: ${{ fromJSON(inputs.testrun)['type'] == 'full' }}
|
||||
run: |
|
||||
tools --timestamps --no-output-timeout-secs=1800 --timeout-secs=14400 vm test --skip-requirements-install \
|
||||
--nox-session=${{ env.NOX_SESSION }} --rerun-failures ${{ (inputs.skip-code-coverage && matrix.tests-chunk != 'unit') && '--skip-code-coverage' || '' }} \
|
||||
--nox-session=${{ inputs.nox-session }} --rerun-failures -E SALT_TRANSPORT ${{ (inputs.skip-code-coverage && matrix.tests-chunk != 'unit') && '--skip-code-coverage' || '' }} \
|
||||
${{ inputs.distro-slug }} ${{ matrix.tests-chunk }} -- --slow-tests --core-tests
|
||||
|
||||
- name: Combine Coverage Reports
|
||||
|
@ -388,8 +357,8 @@ jobs:
|
|||
rm -rf artifacts/salt*
|
||||
tree -a artifacts
|
||||
if [ "${{ inputs.skip-code-coverage }}" != "true" ]; then
|
||||
mv artifacts/coverage/.coverage artifacts/coverage/.coverage.${{ inputs.distro-slug }}.${{ env.NOX_SESSION }}.${{ matrix.tests-chunk }}
|
||||
echo "COVERAGE_FILE=artifacts/coverage/.coverage.${{ inputs.distro-slug }}.${{ env.NOX_SESSION }}.${{ matrix.tests-chunk }}" >> GITHUB_ENV
|
||||
mv artifacts/coverage/.coverage artifacts/coverage/.coverage.${{ inputs.distro-slug }}.${{ inputs.nox-session }}.${{ matrix.transport }}.${{ matrix.tests-chunk }}
|
||||
echo "COVERAGE_FILE=artifacts/coverage/.coverage.${{ inputs.distro-slug }}.${{ inputs.nox-session }}.${{ matrix.transport }}.${{ matrix.tests-chunk }}" >> GITHUB_ENV
|
||||
fi
|
||||
|
||||
- name: Destroy VM
|
||||
|
@ -401,7 +370,7 @@ jobs:
|
|||
if: always() && inputs.skip-code-coverage == false && steps.download-artifacts-from-vm.outcome == 'success' && job.status != 'cancelled'
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: testrun-coverage-artifacts-${{ inputs.distro-slug }}-${{ env.NOX_SESSION }}
|
||||
name: testrun-coverage-artifacts-${{ inputs.distro-slug }}-${{ inputs.nox-session }}
|
||||
path: |
|
||||
artifacts/coverage/
|
||||
|
||||
|
@ -417,7 +386,7 @@ jobs:
|
|||
if: always() && steps.download-artifacts-from-vm.outcome == 'success' && job.status != 'cancelled'
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: testrun-junit-artifacts-${{ inputs.distro-slug }}-${{ env.NOX_SESSION }}
|
||||
name: testrun-junit-artifacts-${{ inputs.distro-slug }}-${{ inputs.nox-session }}-${{ matrix.transport }}
|
||||
path: |
|
||||
artifacts/xml-unittests-output/
|
||||
|
||||
|
@ -425,53 +394,42 @@ jobs:
|
|||
if: always() && steps.download-artifacts-from-vm.outcome == 'success' && job.status != 'cancelled'
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: testrun-log-artifacts-${{ inputs.distro-slug }}-${{ env.NOX_SESSION }}
|
||||
name: testrun-log-artifacts-${{ inputs.distro-slug }}-${{ inputs.nox-session }}-${{ matrix.transport }}
|
||||
path: |
|
||||
artifacts/logs
|
||||
|
||||
- name: Publish Test Report
|
||||
uses: mikepenz/action-junit-report@v3
|
||||
# always run even if the previous steps fails
|
||||
if: always() && inputs.skip-junit-reports == false
|
||||
with:
|
||||
check_name: Test Results(${{ inputs.distro-slug }}, transport=${{ matrix.transport }}, tests-chunk=${{ matrix.tests-chunk }})
|
||||
report_paths: 'artifacts/xml-unittests-output/*.xml'
|
||||
annotate_only: true
|
||||
|
||||
|
||||
report:
|
||||
name: Reports for ${{ inputs.distro-slug }}(${{ matrix.transport }})
|
||||
if: always() && (inputs.skip-code-coverage == false || inputs.skip-junit-reports == false) && needs.test.result != 'cancelled' && needs.test.result != 'skipped'
|
||||
name: Reports for ${{ inputs.distro-slug }}
|
||||
if: always() && inputs.skip-code-coverage == false && needs.test.result != 'cancelled' && needs.test.result != 'skipped'
|
||||
runs-on:
|
||||
- self-hosted
|
||||
- linux
|
||||
- x86_64
|
||||
needs:
|
||||
- generate-matrix
|
||||
- test
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include: ${{ fromJSON(needs.generate-matrix.outputs.transport-matrix-include) }}
|
||||
|
||||
steps:
|
||||
- name: Checkout Source Code
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Define Nox Session
|
||||
run: |
|
||||
if [ "${{ matrix.transport }}" != "tcp" ]; then
|
||||
echo NOX_SESSION=${{ inputs.nox-session }} >> "$GITHUB_ENV"
|
||||
else
|
||||
echo NOX_SESSION=${{ inputs.nox-session }}-tcp >> "$GITHUB_ENV"
|
||||
fi
|
||||
|
||||
- name: Download Code Coverage Test Run Artifacts
|
||||
uses: actions/download-artifact@v3
|
||||
if: ${{ inputs.skip-code-coverage == false }}
|
||||
id: download-coverage-artifacts
|
||||
with:
|
||||
name: testrun-coverage-artifacts-${{ inputs.distro-slug }}-${{ env.NOX_SESSION }}
|
||||
name: testrun-coverage-artifacts-${{ inputs.distro-slug }}-${{ inputs.nox-session }}
|
||||
path: artifacts/coverage/
|
||||
|
||||
- name: Download JUnit XML Test Run Artifacts
|
||||
uses: actions/download-artifact@v3
|
||||
id: download-junit-artifacts
|
||||
with:
|
||||
name: testrun-junit-artifacts-${{ inputs.distro-slug }}-${{ env.NOX_SESSION }}
|
||||
path: artifacts/xml-unittests-output/
|
||||
|
||||
- name: Show Downloaded Test Run Artifacts
|
||||
run: |
|
||||
tree -a artifacts
|
||||
|
@ -510,12 +468,3 @@ jobs:
|
|||
continue-on-error: true
|
||||
run: |
|
||||
nox --force-color -e report-coverage
|
||||
|
||||
- name: Publish Test Report
|
||||
uses: mikepenz/action-junit-report@v3
|
||||
# always run even if the previous steps fails
|
||||
if: always() && inputs.skip-junit-reports == false && steps.download-junit-artifacts.outcome == 'success'
|
||||
with:
|
||||
check_name: Test Results(${{ inputs.distro-slug }})
|
||||
report_paths: 'artifacts/xml-unittests-output/*.xml'
|
||||
annotate_only: true
|
||||
|
|
60
noxfile.py
60
noxfile.py
|
@ -192,21 +192,12 @@ def _get_pydir(session):
|
|||
return "py{}.{}".format(*version_info)
|
||||
|
||||
|
||||
def _get_pip_requirements_file(session, transport, crypto=None, requirements_type="ci"):
|
||||
def _get_pip_requirements_file(session, crypto=None, requirements_type="ci"):
|
||||
assert requirements_type in ("ci", "pkg")
|
||||
pydir = _get_pydir(session)
|
||||
|
||||
if IS_WINDOWS:
|
||||
if crypto is None:
|
||||
_requirements_file = os.path.join(
|
||||
"requirements",
|
||||
"static",
|
||||
requirements_type,
|
||||
pydir,
|
||||
"{}-windows.txt".format(transport),
|
||||
)
|
||||
if os.path.exists(_requirements_file):
|
||||
return _requirements_file
|
||||
_requirements_file = os.path.join(
|
||||
"requirements", "static", requirements_type, pydir, "windows.txt"
|
||||
)
|
||||
|
@ -220,15 +211,6 @@ def _get_pip_requirements_file(session, transport, crypto=None, requirements_typ
|
|||
session.error("Could not find a windows requirements file for {}".format(pydir))
|
||||
elif IS_DARWIN:
|
||||
if crypto is None:
|
||||
_requirements_file = os.path.join(
|
||||
"requirements",
|
||||
"static",
|
||||
requirements_type,
|
||||
pydir,
|
||||
"{}-darwin.txt".format(transport),
|
||||
)
|
||||
if os.path.exists(_requirements_file):
|
||||
return _requirements_file
|
||||
_requirements_file = os.path.join(
|
||||
"requirements", "static", requirements_type, pydir, "darwin.txt"
|
||||
)
|
||||
|
@ -242,15 +224,6 @@ def _get_pip_requirements_file(session, transport, crypto=None, requirements_typ
|
|||
session.error("Could not find a darwin requirements file for {}".format(pydir))
|
||||
elif IS_FREEBSD:
|
||||
if crypto is None:
|
||||
_requirements_file = os.path.join(
|
||||
"requirements",
|
||||
"static",
|
||||
requirements_type,
|
||||
pydir,
|
||||
"{}-freebsd.txt".format(transport),
|
||||
)
|
||||
if os.path.exists(_requirements_file):
|
||||
return _requirements_file
|
||||
_requirements_file = os.path.join(
|
||||
"requirements", "static", requirements_type, pydir, "freebsd.txt"
|
||||
)
|
||||
|
@ -264,15 +237,6 @@ def _get_pip_requirements_file(session, transport, crypto=None, requirements_typ
|
|||
session.error("Could not find a freebsd requirements file for {}".format(pydir))
|
||||
else:
|
||||
if crypto is None:
|
||||
_requirements_file = os.path.join(
|
||||
"requirements",
|
||||
"static",
|
||||
requirements_type,
|
||||
pydir,
|
||||
"{}-linux.txt".format(transport),
|
||||
)
|
||||
if os.path.exists(_requirements_file):
|
||||
return _requirements_file
|
||||
_requirements_file = os.path.join(
|
||||
"requirements", "static", requirements_type, pydir, "linux.txt"
|
||||
)
|
||||
|
@ -321,7 +285,6 @@ def _upgrade_pip_setuptools_and_wheel(session, upgrade=True, onedir=False):
|
|||
|
||||
def _install_requirements(
|
||||
session,
|
||||
transport,
|
||||
*extra_requirements,
|
||||
requirements_type="ci",
|
||||
onedir=False,
|
||||
|
@ -334,7 +297,7 @@ def _install_requirements(
|
|||
|
||||
# Install requirements
|
||||
requirements_file = _get_pip_requirements_file(
|
||||
session, transport, requirements_type=requirements_type
|
||||
session, requirements_type=requirements_type
|
||||
)
|
||||
install_command = ["--progress-bar=off", "-r", requirements_file]
|
||||
session.install(*install_command, silent=PIP_INSTALL_SILENT)
|
||||
|
@ -569,7 +532,7 @@ def test_parametrized(session, coverage, transport, crypto):
|
|||
DO NOT CALL THIS NOX SESSION DIRECTLY
|
||||
"""
|
||||
# Install requirements
|
||||
if _install_requirements(session, transport):
|
||||
if _install_requirements(session):
|
||||
|
||||
if crypto:
|
||||
session_run_always(
|
||||
|
@ -586,7 +549,7 @@ def test_parametrized(session, coverage, transport, crypto):
|
|||
install_command = [
|
||||
"--progress-bar=off",
|
||||
"--constraint",
|
||||
_get_pip_requirements_file(session, transport, crypto=True),
|
||||
_get_pip_requirements_file(session, crypto=True),
|
||||
]
|
||||
install_command.append(crypto)
|
||||
session.install(*install_command, silent=PIP_INSTALL_SILENT)
|
||||
|
@ -985,7 +948,7 @@ def test_tornado(session, coverage):
|
|||
"""
|
||||
# Install requirements
|
||||
if _upgrade_pip_setuptools_and_wheel(session):
|
||||
_install_requirements(session, "zeromq")
|
||||
_install_requirements(session)
|
||||
session.install(
|
||||
"--progress-bar=off", "tornado==5.0.2", silent=PIP_INSTALL_SILENT
|
||||
)
|
||||
|
@ -1076,7 +1039,7 @@ def _pytest(session, coverage, cmd_args, env=None, on_rerun=False):
|
|||
|
||||
def _ci_test(session, transport, onedir=False):
|
||||
# Install requirements
|
||||
_install_requirements(session, transport, onedir=onedir)
|
||||
_install_requirements(session, onedir=onedir)
|
||||
env = {}
|
||||
if onedir:
|
||||
env["ONEDIR_TESTRUN"] = "1"
|
||||
|
@ -1172,7 +1135,14 @@ def _ci_test(session, transport, onedir=False):
|
|||
|
||||
@nox.session(python=_PYTHON_VERSIONS, name="ci-test")
|
||||
def ci_test(session):
|
||||
_ci_test(session, "zeromq")
|
||||
transport = os.environ.get("SALT_TRANSPORT") or "zeromq"
|
||||
valid_transports = ("zeromq", "tcp")
|
||||
if transport not in valid_transports:
|
||||
session.error(
|
||||
"The value for the SALT_TRANSPORT environment variable can only be "
|
||||
f"one of: {', '.join(valid_transports)}"
|
||||
)
|
||||
_ci_test(session, transport)
|
||||
|
||||
|
||||
@nox.session(python=_PYTHON_VERSIONS, name="ci-test-tcp")
|
||||
|
@ -1656,7 +1626,7 @@ def invoke(session):
|
|||
Run invoke tasks
|
||||
"""
|
||||
if _upgrade_pip_setuptools_and_wheel(session):
|
||||
_install_requirements(session, "zeromq")
|
||||
_install_requirements(session)
|
||||
requirements_file = os.path.join(
|
||||
"requirements", "static", "ci", _get_pydir(session), "invoke.txt"
|
||||
)
|
||||
|
|
27
tools/ci.py
27
tools/ci.py
|
@ -637,33 +637,6 @@ def matrix(ctx: Context, distro_slug: str):
|
|||
ctx.exit(0)
|
||||
|
||||
|
||||
@ci.command(
|
||||
name="transport-matrix",
|
||||
arguments={
|
||||
"distro_slug": {
|
||||
"help": "The distribution slug to generate the matrix for",
|
||||
},
|
||||
},
|
||||
)
|
||||
def transport_matrix(ctx: Context, distro_slug: str):
|
||||
"""
|
||||
Generate the test matrix.
|
||||
"""
|
||||
_matrix = []
|
||||
for transport in ("zeromq", "tcp"):
|
||||
if transport == "tcp":
|
||||
if distro_slug not in (
|
||||
"centosstream-9",
|
||||
"ubuntu-22.04",
|
||||
"ubuntu-22.04-arm64",
|
||||
):
|
||||
# Only run TCP transport tests on these distributions
|
||||
continue
|
||||
_matrix.append({"transport": transport})
|
||||
print(json.dumps(_matrix))
|
||||
ctx.exit(0)
|
||||
|
||||
|
||||
@ci.command(
|
||||
name="pkg-matrix",
|
||||
arguments={
|
||||
|
|
Loading…
Add table
Reference in a new issue