chore(deps): lock file maintenance #638
This file contains 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
# https://help.github.com/en/categories/automating-your-workflow-with-github-actions | |
name: "Tests" | |
on: # yamllint disable-line rule:truthy | |
# eslint-disable-next-line yml/no-empty-mapping-value | |
pull_request: # yamllint disable-line rule:empty-values | |
types: ["opened", "synchronize", "reopened"] | |
merge_group: # yamllint disable-line rule:empty-values | |
concurrency: | |
group: "${{ github.workflow }}-${{ github.ref }}" | |
cancel-in-progress: true | |
permissions: | |
contents: "read" # to fetch code (actions/checkout) | |
env: | |
NX_BRANCH: "${{ github.event.number }}" | |
NX_RUN_GROUP: "${{ github.run_id }}" | |
HEAD_REF: "${{ github.event_name == 'pull_request' && github.event.pull_request.head.ref || github.ref_name }}" | |
HEAD_REPOSITORY: "${{ github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name || github.repository }}" | |
jobs: | |
files-changed: | |
name: "Detect what files changed" | |
runs-on: "ubuntu-24.04" | |
timeout-minutes: 3 | |
# Map a step output to a job output | |
outputs: | |
packages: "${{ steps.changes.outputs.packages }}" | |
codecov: "${{ steps.changes.outputs.codecov }}" | |
steps: | |
- name: "Harden Runner" | |
uses: "step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f" # v2.10.2 | |
with: | |
egress-policy: "audit" | |
- name: "Git checkout" | |
uses: "actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683" # v4.2.2 | |
env: | |
GIT_COMMITTER_NAME: "GitHub Actions Shell" | |
GIT_AUTHOR_NAME: "GitHub Actions Shell" | |
EMAIL: "github-actions[bot]@users.noreply.github.com" | |
- name: "Check for file changes" | |
uses: "dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36" # v3.0.2 | |
id: "changes" | |
with: | |
token: "${{ github.token }}" | |
filters: ".github/file-filters.yml" | |
test-multi-semantic-release: | |
name: "Test semantic-release version ${{ matrix.semantic_release_version }} on (node-${{ matrix.node_version }}, ${{ matrix.os }})" | |
if: "needs.files-changed.outputs.packages == 'true'" | |
needs: "files-changed" | |
strategy: | |
max-parallel: 4 | |
matrix: | |
os: | |
- "ubuntu-latest" | |
node_version: ["18", "20", "21", "22", "23"] | |
semantic_release_version: ["^20", "^21", "^22", "^23", "^24"] | |
# On the other platforms, we only test the lts node version | |
include: | |
- os: "macos-latest" | |
node_version: "22" | |
semantic_release_version: "^22" | |
fail-fast: false | |
runs-on: "${{ matrix.os }}" | |
env: | |
NODE: "${{ matrix.node_version }}" | |
steps: | |
- name: "Harden Runner" | |
uses: "step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f" # v2.10.2 | |
with: | |
egress-policy: "audit" | |
- name: "Git checkout ${{ env.HEAD_REPOSITORY }}:${{ env.HEAD_REF }}" | |
uses: "actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683" # v4.2.2 | |
env: | |
GIT_COMMITTER_NAME: "GitHub Actions Shell" | |
GIT_AUTHOR_NAME: "GitHub Actions Shell" | |
EMAIL: "github-actions[bot]@users.noreply.github.com" | |
with: | |
# Number of commits to fetch. 0 indicates all history for all branches and tags. | |
# Pulls all commits (needed for NX) | |
fetch-depth: 0 | |
- name: "Derive appropriate SHAs for base and head for `nx affected` commands" | |
id: "setSHAs" | |
uses: "nrwl/nx-set-shas@e2e6dc8bce4b0387a05eb687735c39c41580b792" # v4 | |
- name: "Setup resources and environment" | |
id: "setup" | |
uses: "anolilab/workflows/step/setup@main" | |
with: | |
node-version: "${{ matrix.node_version }}" | |
enable-nx-cache: false | |
- name: "Install semantic-release version ${{ matrix.semantic_release_version }}" | |
run: | | |
pnpm add -D semantic-release@${{ matrix.semantic_release_version }} --filter=multi-semantic-release | |
env: | |
SKIP_CHECK: "true" | |
- name: "Run tests" | |
shell: "bash" | |
run: "pnpm run --filter=multi-semantic-release test" | |
test-packages: | |
name: "Test (node-${{ matrix.node_version }}, ${{ matrix.os }})" | |
if: "needs.files-changed.outputs.packages == 'true'" | |
needs: "files-changed" | |
strategy: | |
max-parallel: 4 | |
matrix: | |
os: | |
- "ubuntu-latest" | |
node_version: ["18", "20", "21", "22"] | |
# On the other platforms, we only test the lts node version | |
include: | |
- os: "macos-latest" | |
node_version: "20" | |
fail-fast: false | |
runs-on: "${{ matrix.os }}" | |
env: | |
NODE: "${{ matrix.node_version }}" | |
steps: | |
- name: "Harden Runner" | |
uses: "step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f" # v2.10.2 | |
with: | |
egress-policy: "audit" | |
- name: "Git checkout ${{ env.HEAD_REPOSITORY }}:${{ env.HEAD_REF }}" | |
uses: "actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683" # v4.2.2 | |
env: | |
GIT_COMMITTER_NAME: "GitHub Actions Shell" | |
GIT_AUTHOR_NAME: "GitHub Actions Shell" | |
EMAIL: "github-actions[bot]@users.noreply.github.com" | |
with: | |
# Number of commits to fetch. 0 indicates all history for all branches and tags. | |
# Pulls all commits (needed for NX) | |
fetch-depth: 0 | |
- name: "Derive appropriate SHAs for base and head for `nx affected` commands" | |
id: "setSHAs" | |
uses: "nrwl/nx-set-shas@e2e6dc8bce4b0387a05eb687735c39c41580b792" # v4 | |
- name: "Setup resources and environment" | |
id: "setup" | |
uses: "anolilab/workflows/step/setup@main" | |
with: | |
node-version: "${{ matrix.node_version }}" | |
# Temporary solution until Nx solve this https://github.com/nrwl/nx/issues/22259 | |
- name: "Get changed files" | |
id: "files" | |
uses: "tj-actions/changed-files@bab30c2299617f6615ec02a68b9a40d10bd21366" # v45.0.5 | |
with: | |
files_ignore_from_source_file: ".github/ignore-files-for-nx-affected.yml" | |
base_sha: "${{ steps.setSHAs.outputs.base }}" | |
separator: "," | |
- name: "Build" | |
shell: "bash" | |
run: | | |
files="${{ steps.files.outputs.all_changed_files }}"; | |
pnpm run build:affected:packages --files=${files//\\/\/} | |
- name: "Run tests" | |
shell: "bash" | |
run: | | |
files="${{ steps.files.outputs.all_changed_files }}"; | |
if [[ ${{ matrix.os }} == "ubuntu-latest" && ${{ matrix.node_version }} == 18 ]]; then | |
pnpm run test:affected:coverage --files=${files//\\/\/} | |
else | |
pnpm run test:affected --files=${files//\\/\/} | |
fi | |
- name: "Prepare nx cache" | |
shell: "bash" | |
run: "tar -cf - .nx/cache | lz4 > /tmp/nx_cache.tar.lz4" # compress nx cache | |
- name: "Upload code coverage to codecov" | |
if: "matrix.os == 'ubuntu-latest' && matrix.node_version == 18" | |
uses: "anolilab/workflows/step/codecov@main" | |
with: | |
run-lint: "needs.files-changed.outputs.codecov == 'true'" | |
codecov-token: "${{ secrets.CODECOV_TOKEN }}" | |
use-affected: "true" | |
affected-files: "${{ steps.files.outputs.all_changed_files }}" | |
exclude-affected-projects: "semantic-release-preset" | |
# This check runs once all dependant jobs have passed | |
# It symbolizes that all required Frontend checks have succesfully passed (Or skipped) | |
# This check is the only required GitHub check | |
test-required-check: | |
needs: ["files-changed", "test-multi-semantic-release", "test-packages"] | |
name: "Check Test Run" | |
# This is necessary since a failed/skipped dependent job would cause this job to be skipped | |
if: "always() && (needs.test-packages.result == 'success' || needs.test-packages.result == 'skipped') && (needs.test-multi-semantic-release.result == 'success' || needs.test-multi-semantic-release.result == 'skipped')" | |
runs-on: "ubuntu-24.04" | |
steps: | |
# If any jobs we depend on fail, we will fail since this is a required check | |
# NOTE: A timeout is considered a failure | |
- name: "Harden Runner" | |
uses: "step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f" # v2.10.2 | |
with: | |
egress-policy: "audit" | |
- name: "Check for failures" | |
if: "contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')" | |
run: | | |
echo "One of the dependent jobs have failed. You may need to re-run it." && exit 1 |