chore(deps): update dependency execa to v9.2.0 #16554
Workflow file for this run
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
name: Checks | |
on: | |
pull_request: | |
types: [opened, synchronize] | |
push: | |
branches: | |
- main | |
merge_group: | |
types: [checks_requested] | |
concurrency: | |
group: ${{ github.ref }} | |
cancel-in-progress: true | |
# Uncomment the line below to enable artifacts debugging | |
# env: | |
# ACTIONS_RUNNER_DEBUG: true | |
jobs: | |
setup: | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 10 | |
steps: | |
- name: debugging - dump GitHub context | |
env: | |
GITHUB_CONTEXT: ${{ toJSON(github) }} | |
run: echo "$GITHUB_CONTEXT" | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup | |
id: setup | |
uses: ./.github/actions/setup | |
# Computing jobs that should run | |
- name: Setting diff outputs variables | |
id: diff | |
shell: bash | |
run: | | |
previousCommit=${{ github.event.before }} | |
baseRef=${{ github.base_ref }} | |
origin=$( [[ -z $baseRef ]] && echo $previousCommit || echo "origin/$baseRef" ) | |
yarn workspace scripts setRunVariables "$origin" | |
- name: Compute specs matrix | |
id: spec-matrix | |
shell: bash | |
run: yarn workspace scripts createMatrix ${{ steps.diff.outputs.ORIGIN_BRANCH }} | |
- name: Compute the client codegen matrix | |
id: gen-matrix | |
shell: bash | |
run: yarn workspace scripts createMatrix ${{ steps.diff.outputs.ORIGIN_BRANCH }} clients | |
- name: check that custom actions are built | |
run: | | |
yarn workspace scripts build:actions | |
diff=$(git status --porcelain ./scripts/ci/actions | wc -l) | |
if [[ $diff > 0 ]]; then | |
echo "Build the custom github actions by running \`yarn workspace scripts build:actions\`" | |
fi | |
exit $diff | |
- name: Lint GitHub actions | |
run: yarn github-actions:lint | |
- name: Lint generators | |
run: | | |
yarn cli format java generators | |
diff=$(git status --porcelain ./generators | wc -l) | |
if [[ $diff > 0 ]]; then | |
echo "Format the generators folder by running 'apic format java generators'" | |
fi | |
exit $diff | |
- name: Lint json files | |
run: | | |
yarn eslint --ext=json . | |
echo 'Use yarn fix:json to fix issues' | |
outputs: | |
RUN_SCRIPTS: ${{ steps.diff.outputs.GITHUB_ACTIONS_CHANGED > 0 || steps.diff.outputs.SCRIPTS_CHANGED > 0 }} | |
SPECS_MATRIX: ${{ steps.spec-matrix.outputs.MATRIX }} | |
RUN_GEN: ${{ steps.gen-matrix.outputs.RUN_GEN }} | |
GEN_MATRIX: ${{ steps.gen-matrix.outputs.GEN_MATRIX }} | |
JAVASCRIPT_DATA: ${{ steps.gen-matrix.outputs.JAVASCRIPT_DATA }} | |
RUN_GEN_JAVASCRIPT: ${{ steps.gen-matrix.outputs.RUN_GEN_JAVASCRIPT }} | |
SWIFT_DATA: ${{ steps.gen-matrix.outputs.SWIFT_DATA }} | |
RUN_MACOS_SWIFT_CTS: ${{ steps.gen-matrix.outputs.RUN_MACOS_SWIFT_CTS }} | |
scripts: | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 10 | |
needs: setup | |
if: ${{ needs.setup.outputs.RUN_SCRIPTS == 'true' }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup | |
uses: ./.github/actions/setup | |
with: | |
type: minimal | |
- name: Check script linting | |
run: yarn scripts:lint | |
- name: Test scripts | |
run: yarn scripts:test | |
- name: Test custom eslint plugin | |
run: yarn workspace eslint-plugin-automation-custom test | |
specs: | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 10 | |
needs: setup | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup | |
uses: ./.github/actions/setup | |
with: | |
type: minimal | |
- name: Building specs | |
run: yarn cli build specs ${{ fromJSON(needs.setup.outputs.SPECS_MATRIX).toRun }} | |
- name: Store bundled specs | |
uses: actions/upload-artifact@v4 | |
with: | |
if-no-files-found: error | |
name: specs | |
path: ${{ fromJSON(needs.setup.outputs.SPECS_MATRIX).bundledPath }} | |
client_javascript_utils: | |
timeout-minutes: 10 | |
runs-on: ubuntu-22.04 | |
needs: setup | |
if: ${{ needs.setup.outputs.RUN_GEN_JAVASCRIPT == 'true' }} | |
strategy: | |
matrix: | |
client: | |
- client-common | |
- requester-browser-xhr | |
- requester-node-http | |
- requester-fetch | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Cache '${{ matrix.client }}' client folder | |
if: ${{ github.ref != 'refs/heads/main' }} | |
id: cache | |
uses: actions/cache@v4 | |
with: | |
key: | | |
${{ matrix.client }}-${{ hashFiles( | |
format('clients/algoliasearch-client-javascript/packages/{0}/**', matrix.client), | |
'clients/algoliasearch-client-javascript/yarn.lock' | |
)}} | |
path: clients/algoliasearch-client-javascript/packages/${{ matrix.client }} | |
- name: Remove generated clients | |
if: ${{ steps.cache.outputs.cache-hit != 'true' }} | |
run: cd clients/algoliasearch-client-javascript/packages && ls | grep -v -E "(client-common|requester-*)" | xargs rm -rf | |
- name: Setup | |
if: ${{ steps.cache.outputs.cache-hit != 'true' }} | |
uses: ./.github/actions/setup | |
with: | |
type: minimal | |
language: javascript | |
- name: Build '${{ matrix.client }}' client | |
if: ${{ steps.cache.outputs.cache-hit != 'true' }} | |
run: cd clients/algoliasearch-client-javascript && yarn build:many @algolia/${{ matrix.client }} | |
- name: Run tests for '${{ matrix.client }}' | |
if: ${{ steps.cache.outputs.cache-hit != 'true' }} | |
run: cd clients/algoliasearch-client-javascript && yarn workspace @algolia/${{ matrix.client }} test | |
client_gen_javascript: | |
timeout-minutes: 10 | |
runs-on: ubuntu-22.04 | |
needs: | |
- setup | |
- client_javascript_utils | |
- specs | |
- scripts | |
if: | | |
always() && | |
needs.setup.outputs.RUN_GEN_JAVASCRIPT == 'true' && | |
!contains(needs.*.result, 'cancelled') && | |
!contains(needs.*.result, 'failure') | |
env: | |
ALGOLIA_APPLICATION_ID: ${{ secrets.ALGOLIA_APPLICATION_ID }} | |
ALGOLIA_ADMIN_KEY: ${{ secrets.ALGOLIA_ADMIN_KEY }} | |
MONITORING_API_KEY: ${{ secrets.MONITORING_API_KEY }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download specs artifacts | |
uses: ./scripts/ci/actions/restore-artifacts | |
with: | |
type: specs | |
- name: Remove generated clients | |
if: ${{ startsWith(env.head_ref, 'chore/prepare-release-') }} | |
run: | | |
cd clients/algoliasearch-client-javascript/packages | |
ls | grep -v -E "(client-common|requester-*|algoliasearch)" | xargs rm -rf | |
cd algoliasearch | |
ls | grep -v -E "(__tests__|jest.config.ts)" | xargs rm -rf | |
- name: Setup | |
uses: ./.github/actions/setup | |
with: | |
language: javascript | |
- name: Generate clients | |
run: yarn cli generate javascript ${{ fromJSON(needs.setup.outputs.JAVASCRIPT_DATA).toRun }} | |
- name: Update `yarn.lock` for JavaScript | |
run: cd clients/algoliasearch-client-javascript && YARN_ENABLE_HARDENED_MODE=0 YARN_ENABLE_IMMUTABLE_INSTALLS=false yarn install | |
- name: Build clients | |
run: ${{ fromJSON(needs.setup.outputs.JAVASCRIPT_DATA).buildCommand }} | |
- name: Test JavaScript bundle size | |
if: ${{ startsWith(env.head_ref, 'chore/prepare-release-') }} | |
run: cd clients/algoliasearch-client-javascript && yarn test:size | |
- name: Run JavaScript 'algoliasearch' client tests | |
if: ${{ contains(fromJSON(needs.setup.outputs.JAVASCRIPT_DATA).toRun,'algoliasearch') }} | |
run: cd clients/algoliasearch-client-javascript && yarn workspace algoliasearch test | |
- name: Remove previous CTS output | |
run: rm -rf ${{ fromJSON(needs.setup.outputs.JAVASCRIPT_DATA).testsToDelete }} | |
- name: Generate CTS | |
run: yarn cli cts generate javascript ${{ fromJSON(needs.setup.outputs.JAVASCRIPT_DATA).toRun }} | |
# JavaScript test deps (needs to be cached because they are huge and inefficient) | |
- name: Get yarn js test cache directory path | |
shell: bash | |
id: yarn-cache-dir-tests | |
run: echo "dir=$(cd tests/output/javascript && yarn config get cacheFolder)" >> $GITHUB_OUTPUT | |
- name: Restore Yarn js tests | |
uses: actions/cache@v4 | |
with: | |
path: ${{ steps.yarn-cache-dir-tests.outputs.dir || 'tests/output/javascript/.yarn/cache' }} | |
key: yarn-cache-tests-${{ hashFiles('tests/output/javascript/yarn.lock') }} | |
- name: Cache js tests node modules | |
uses: actions/cache@v4 | |
with: | |
path: tests/output/javascript/node_modules | |
key: node-modules-tests-${{ hashFiles('tests/output/javascript/yarn.lock') }} | |
- name: Run CTS | |
run: yarn cli cts run javascript ${{ fromJSON(needs.setup.outputs.JAVASCRIPT_DATA).toRun }} | |
- name: Generate code snippets for documentation | |
run: yarn cli snippets javascript ${{ fromJSON(needs.setup.outputs.JAVASCRIPT_DATA).toRun }} | |
- name: Zip artifact before storing | |
run: zip -r -y clients-javascript.zip clients/algoliasearch-client-javascript ${{ fromJSON(needs.setup.outputs.JAVASCRIPT_DATA).testsToStore }} ${{ fromJSON(needs.setup.outputs.JAVASCRIPT_DATA).snippetsToStore }} -x "**/node_modules**" "**/.yarn/cache/**" "**/.yarn/install-state.gz" "**/build/**" "**/dist/**" "**/.gradle/**" "**/bin/**" "**/.nx/**" | |
- name: Store javascript clients | |
uses: actions/upload-artifact@v4 | |
with: | |
if-no-files-found: error | |
name: clients-javascript | |
path: clients-javascript.zip | |
client_gen: | |
timeout-minutes: 20 | |
runs-on: ubuntu-22.04 | |
needs: | |
- setup | |
- specs | |
- scripts | |
if: | | |
always() && | |
needs.setup.outputs.RUN_GEN == 'true' && | |
!contains(needs.*.result, 'cancelled') && | |
!contains(needs.*.result, 'failure') | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJSON(needs.setup.outputs.GEN_MATRIX) }} | |
env: | |
ALGOLIA_APPLICATION_ID: ${{ secrets.ALGOLIA_APPLICATION_ID }} | |
ALGOLIA_ADMIN_KEY: ${{ secrets.ALGOLIA_ADMIN_KEY }} | |
MONITORING_API_KEY: ${{ secrets.MONITORING_API_KEY }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download specs artifacts | |
uses: ./scripts/ci/actions/restore-artifacts | |
with: | |
type: specs | |
- name: Setup | |
uses: ./.github/actions/setup | |
with: | |
language: ${{ matrix.client.language }} | |
- name: Generate clients | |
run: yarn cli generate ${{ matrix.client.language }} ${{ matrix.client.toRun }} | |
- name: Update composer.lock | |
if: ${{ matrix.client.language == 'php' && startsWith(env.head_ref, 'chore/renovateBaseBranch') }} | |
run: cd ${{ matrix.client.path }} && composer update | |
- name: Check for file duplicates in Swift | |
if: ${{ matrix.client.language == 'swift' }} | |
run: | | |
set -eo pipefail | |
cd clients/algoliasearch-client-swift | |
find Sources -type f | rev | cut -d '/' -f1 | rev | sort | uniq -d | |
[ $(find Sources -type f | rev | cut -d '/' -f1 | rev | sort | uniq -d | wc -l) -gt 0 ] && echo "Duplicates found" && exit 1 || echo "No duplicate found" | |
- name: Build clients | |
run: ${{ matrix.client.buildCommand }} | |
- name: Run Java 'algoliasearch' public API validation | |
if: ${{ matrix.client.language == 'java' }} | |
run: | | |
cd ${{ matrix.client.path }} | |
./gradlew :api:japicmp || exit 0 | |
FILE=${{ matrix.client.path }}/api/build/reports/japi.txt | |
if [[ -f "$FILE" ]]; then | |
cat $FILE | |
fi | |
- name: Remove previous CTS output | |
run: rm -rf ${{ matrix.client.testsToDelete }} || true | |
- name: Generate CTS | |
run: yarn cli cts generate ${{ matrix.client.language }} ${{ matrix.client.toRun }} | |
- name: Run CTS | |
run: yarn cli cts run ${{ matrix.client.language }} ${{ matrix.client.toRun }} | |
- name: Generate code snippets for documentation | |
run: yarn cli snippets ${{ matrix.client.language }} ${{ matrix.client.toRun }} | |
- name: Zip artifact before storing | |
run: zip -r -y clients-${{ matrix.client.language }}.zip ${{ matrix.client.path }} ${{ matrix.client.testsToStore }} ${{ matrix.client.snippetsToStore }} -x "**/node_modules**" "**/__pycache__/**" "**/.yarn/cache/**" "**/build/**" "**/.build/**" "**/dist/**" "**/.gradle/**" "**/bin/**" "**/vendor/**" "**/target/**" "**/.dart_tool/**" | |
- name: Store ${{ matrix.client.language }} clients | |
uses: actions/upload-artifact@v4 | |
with: | |
if-no-files-found: error | |
name: clients-${{matrix.client.language }} | |
path: clients-${{matrix.client.language }}.zip | |
swift_cts_macos: | |
timeout-minutes: 20 | |
runs-on: macos-latest | |
needs: | |
- setup | |
- client_gen | |
if: | | |
always() && | |
startsWith(github.head_ref, 'chore/prepare-release-') && | |
needs.setup.outputs.RUN_GEN == 'true' && | |
needs.setup.outputs.RUN_MACOS_SWIFT_CTS == 'true' && | |
!contains(needs.*.result, 'cancelled') && | |
!contains(needs.*.result, 'failure') | |
env: | |
ALGOLIA_APPLICATION_ID: ${{ secrets.ALGOLIA_APPLICATION_ID }} | |
ALGOLIA_ADMIN_KEY: ${{ secrets.ALGOLIA_ADMIN_KEY }} | |
MONITORING_API_KEY: ${{ secrets.MONITORING_API_KEY }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download artifacts | |
uses: ./scripts/ci/actions/restore-artifacts | |
with: | |
type: languages | |
languages: | | |
swift | |
- name: Setup | |
uses: ./.github/actions/setup | |
with: | |
type: minimal | |
language: swift | |
- name: Run CTS | |
run: yarn cli cts run swift ${{ fromJSON(needs.setup.outputs.SWIFT_DATA).toRun }} | |
codegen: | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 15 | |
needs: | |
- setup | |
- client_gen | |
- client_gen_javascript | |
- swift_cts_macos | |
if: | | |
always() && | |
(needs.swift_cts_macos.result == 'success' || needs.swift_cts_macos.result == 'skipped') && | |
!contains(needs.*.result, 'cancelled') && | |
!contains(needs.*.result, 'failure') | |
outputs: | |
success: ${{ steps.setoutput.outputs.success }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
ref: ${{ github.event.pull_request.head.ref }} | |
token: ${{ secrets.ALGOLIA_BOT_TOKEN }} | |
- name: Download all artifacts | |
uses: ./scripts/ci/actions/restore-artifacts | |
with: | |
type: all | |
- name: Setup | |
uses: ./.github/actions/setup | |
with: | |
type: minimal | |
- name: Generate documentation specs with code snippets | |
run: yarn cli build specs ${{ fromJSON(needs.setup.outputs.SPECS_MATRIX).toRun }} --docs | |
- name: Build website | |
run: yarn website:build | |
- name: Deploy documentation | |
uses: nwtgck/actions-netlify@v3.0 | |
with: | |
publish-dir: 'website/build' | |
production-branch: main | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
deploy-message: 'Deploy from GitHub Actions' | |
enable-pull-request-comment: true | |
enable-commit-comment: true | |
overwrites-pull-request-comment: true | |
netlify-config-path: ./netlify.toml | |
env: | |
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} | |
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} | |
timeout-minutes: 5 | |
- name: Push generated code | |
id: pushGeneratedCode | |
run: yarn workspace scripts pushGeneratedCode | |
env: | |
GITHUB_TOKEN: ${{ secrets.ALGOLIA_BOT_TOKEN }} | |
PR_NUMBER: ${{ github.event.number }} | |
- name: Spread generation to each repository | |
id: spreadGeneration | |
if: github.ref == 'refs/heads/main' | |
run: yarn workspace scripts spreadGeneration | |
env: | |
GITHUB_TOKEN: ${{ secrets.ALGOLIA_BOT_TOKEN }} | |
- name: Wait for all release CI | |
if: github.ref == 'refs/heads/main' | |
run: yarn workspace scripts waitForAllReleases ${{ steps.spreadGeneration.outputs.PUSHED_LANGUAGES }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.ALGOLIA_BOT_TOKEN }} | |
- name: Set output | |
id: setoutput | |
run: echo "success=true" >> "$GITHUB_OUTPUT" | |
check_green: | |
runs-on: ubuntu-22.04 | |
timeout-minutes: 10 | |
needs: | |
- codegen | |
if: always() | |
steps: | |
- run: | | |
if [[ "${{ needs.codegen.outputs.success }}" != "true" ]]; then | |
echo "codegen step didn't succeed" | |
exit 1 | |
fi |