mirror of
https://github.com/XRPLF/clio.git
synced 2025-12-06 17:27:58 +00:00
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 5. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/download-artifact/releases">actions/download-artifact's releases</a>.</em></p> <blockquote> <h2>v5.0.0</h2> <h2>What's Changed</h2> <ul> <li>Update README.md by <a href="https://github.com/nebuk89"><code>@nebuk89</code></a> in <a href="https://redirect.github.com/actions/download-artifact/pull/407">actions/download-artifact#407</a></li> <li>BREAKING fix: inconsistent path behavior for single artifact downloads by ID by <a href="https://github.com/GrantBirki"><code>@GrantBirki</code></a> in <a href="https://redirect.github.com/actions/download-artifact/pull/416">actions/download-artifact#416</a></li> </ul> <h2>v5.0.0</h2> <h3>🚨 Breaking Change</h3> <p>This release fixes an inconsistency in path behavior for single artifact downloads by ID. <strong>If you're downloading single artifacts by ID, the output path may change.</strong></p> <h4>What Changed</h4> <p>Previously, <strong>single artifact downloads</strong> behaved differently depending on how you specified the artifact:</p> <ul> <li><strong>By name</strong>: <code>name: my-artifact</code> → extracted to <code>path/</code> (direct)</li> <li><strong>By ID</strong>: <code>artifact-ids: 12345</code> → extracted to <code>path/my-artifact/</code> (nested)</li> </ul> <p>Now both methods are consistent:</p> <ul> <li><strong>By name</strong>: <code>name: my-artifact</code> → extracted to <code>path/</code> (unchanged)</li> <li><strong>By ID</strong>: <code>artifact-ids: 12345</code> → extracted to <code>path/</code> (fixed - now direct)</li> </ul> <h4>Migration Guide</h4> <h5>✅ No Action Needed If:</h5> <ul> <li>You download artifacts by <strong>name</strong></li> <li>You download <strong>multiple</strong> artifacts by ID</li> <li>You already use <code>merge-multiple: true</code> as a workaround</li> </ul> <h5>⚠️ Action Required If:</h5> <p>You download <strong>single artifacts by ID</strong> and your workflows expect the nested directory structure.</p> <p><strong>Before v5 (nested structure):</strong></p> <pre lang="yaml"><code>- uses: actions/download-artifact@v4 with: artifact-ids: 12345 path: dist # Files were in: dist/my-artifact/ </code></pre> <blockquote> <p>Where <code>my-artifact</code> is the name of the artifact you previously uploaded</p> </blockquote> <p><strong>To maintain old behavior (if needed):</strong></p> <pre lang="yaml"><code></tr></table> </code></pre> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="634f93cb29"><code>634f93c</code></a> Merge pull request <a href="https://redirect.github.com/actions/download-artifact/issues/416">#416</a> from actions/single-artifact-id-download-path</li> <li><a href="b19ff43027"><code>b19ff43</code></a> refactor: resolve download path correctly in artifact download tests (mainly ...</li> <li><a href="e262cbee4a"><code>e262cbe</code></a> bundle dist</li> <li><a href="bff23f9308"><code>bff23f9</code></a> update docs</li> <li><a href="fff8c148a8"><code>fff8c14</code></a> fix download path logic when downloading a single artifact by id</li> <li><a href="448e3f862a"><code>448e3f8</code></a> Merge pull request <a href="https://redirect.github.com/actions/download-artifact/issues/407">#407</a> from actions/nebuk89-patch-1</li> <li><a href="47225c44b3"><code>47225c4</code></a> Update README.md</li> <li>See full diff in <a href="https://github.com/actions/download-artifact/compare/v4...v5">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Ayaz Salikhov <mathbunnyru@users.noreply.github.com>
161 lines
5.0 KiB
YAML
161 lines
5.0 KiB
YAML
name: Reusable test
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
runs_on:
|
|
description: Runner to run the job on
|
|
required: true
|
|
type: string
|
|
|
|
container:
|
|
description: "The container object as a JSON string (leave empty to run natively)"
|
|
required: true
|
|
type: string
|
|
|
|
conan_profile:
|
|
description: Conan profile to use
|
|
required: true
|
|
type: string
|
|
|
|
build_type:
|
|
description: Build type
|
|
required: true
|
|
type: string
|
|
|
|
run_unit_tests:
|
|
description: Whether to run unit tests
|
|
required: true
|
|
type: boolean
|
|
|
|
run_integration_tests:
|
|
description: Whether to run integration tests
|
|
required: true
|
|
type: boolean
|
|
|
|
jobs:
|
|
unit_tests:
|
|
name: Unit testing
|
|
runs-on: ${{ inputs.runs_on }}
|
|
container: ${{ inputs.container != '' && fromJson(inputs.container) || null }}
|
|
|
|
if: inputs.run_unit_tests
|
|
|
|
env:
|
|
# TODO: remove completely when we have fixed all currently existing issues with sanitizers
|
|
SANITIZER_IGNORE_ERRORS: ${{ endsWith(inputs.conan_profile, '.asan') || endsWith(inputs.conan_profile, '.tsan') }}
|
|
|
|
steps:
|
|
- name: Clean workdir
|
|
if: ${{ runner.os == 'macOS' }}
|
|
uses: kuznetsss/workspace-cleanup@80b9863b45562c148927c3d53621ef354e5ae7ce # v1.0
|
|
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- uses: actions/download-artifact@v5
|
|
with:
|
|
name: clio_tests_${{ runner.os }}_${{ inputs.build_type }}_${{ inputs.conan_profile }}
|
|
|
|
- name: Make clio_tests executable
|
|
shell: bash
|
|
run: chmod +x ./clio_tests
|
|
|
|
- name: Run clio_tests (regular)
|
|
if: env.SANITIZER_IGNORE_ERRORS == 'false'
|
|
run: ./clio_tests
|
|
|
|
- name: Run clio_tests (sanitizer errors ignored)
|
|
if: env.SANITIZER_IGNORE_ERRORS == 'true'
|
|
run: ./.github/scripts/execute-tests-under-sanitizer ./clio_tests
|
|
|
|
- name: Check for sanitizer report
|
|
if: env.SANITIZER_IGNORE_ERRORS == 'true'
|
|
shell: bash
|
|
id: check_report
|
|
run: |
|
|
if ls .sanitizer-report/* 1> /dev/null 2>&1; then
|
|
echo "found_report=true" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "found_report=false" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
- name: Upload sanitizer report
|
|
if: env.SANITIZER_IGNORE_ERRORS == 'true' && steps.check_report.outputs.found_report == 'true'
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: sanitizer_report_${{ runner.os }}_${{ inputs.build_type }}_${{ inputs.conan_profile }}
|
|
path: .sanitizer-report/*
|
|
include-hidden-files: true
|
|
|
|
- name: Create an issue
|
|
if: false && env.SANITIZER_IGNORE_ERRORS == 'true' && steps.check_report.outputs.found_report == 'true'
|
|
uses: ./.github/actions/create_issue
|
|
env:
|
|
GH_TOKEN: ${{ github.token }}
|
|
with:
|
|
labels: "bug"
|
|
title: "[${{ inputs.conan_profile }}] reported issues"
|
|
body: >
|
|
Clio tests failed one or more sanitizer checks when built with ${{ inputs.conan_profile }}`.
|
|
|
|
Workflow: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}/
|
|
Reports are available as artifacts.
|
|
|
|
integration_tests:
|
|
name: Integration testing
|
|
runs-on: ${{ inputs.runs_on }}
|
|
container: ${{ inputs.container != '' && fromJson(inputs.container) || null }}
|
|
|
|
if: inputs.run_integration_tests
|
|
|
|
services:
|
|
scylladb:
|
|
image: ${{ inputs.container != '' && 'scylladb/scylla' || '' }}
|
|
options: >-
|
|
--health-cmd "cqlsh -e 'describe cluster'"
|
|
--health-interval 10s
|
|
--health-timeout 5s
|
|
--health-retries 5
|
|
|
|
steps:
|
|
- name: Clean workdir
|
|
if: ${{ runner.os == 'macOS' }}
|
|
uses: kuznetsss/workspace-cleanup@80b9863b45562c148927c3d53621ef354e5ae7ce # v1.0
|
|
|
|
- name: Spin up scylladb
|
|
if: ${{ runner.os == 'macOS' }}
|
|
timeout-minutes: 3
|
|
run: |
|
|
docker rm --force scylladb || true
|
|
docker run \
|
|
--detach \
|
|
--name scylladb \
|
|
--health-cmd "cqlsh -e 'describe cluster'" \
|
|
--health-interval 10s \
|
|
--health-timeout 5s \
|
|
--health-retries 5 \
|
|
--publish 9042:9042 \
|
|
--memory 16G \
|
|
scylladb/scylla
|
|
|
|
until [ "$(docker inspect -f '{{.State.Health.Status}}' scylladb)" == "healthy" ]; do
|
|
sleep 5
|
|
done
|
|
|
|
- uses: actions/download-artifact@v5
|
|
with:
|
|
name: clio_integration_tests_${{ runner.os }}_${{ inputs.build_type }}_${{ inputs.conan_profile }}
|
|
|
|
- name: Run clio_integration_tests
|
|
run: |
|
|
chmod +x ./clio_integration_tests
|
|
./clio_integration_tests ${{ runner.os != 'macOS' && '--backend_host=scylladb' || '' }}
|
|
|
|
- name: Show docker logs and stop scylladb
|
|
if: ${{ always() && runner.os == 'macOS' }}
|
|
run: |
|
|
docker logs scylladb
|
|
docker rm --force scylladb || true
|