📚 Update Dictionaries Main #1157
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: ' 📚 Update Dictionaries Main' | |
on: | |
workflow_dispatch: | |
inputs: | |
base: | |
description: The Base Ref to apply the diff | |
required: false | |
default: 'main' | |
schedule: | |
- cron: '0 7 * * *' | |
permissions: | |
contents: read | |
env: | |
NEW_BRANCH: "update-dictionaries-${{ inputs.base || 'main' }}" | |
REF_BRANCH: ${{ inputs.base || 'main' }} | |
jobs: | |
calc-ref: | |
runs-on: ubuntu-latest | |
outputs: | |
ref: ${{ env.REF_BRANCH }} | |
steps: | |
- name: Ref Branch | |
run: | | |
echo Ref: "${{ env.REF_BRANCH }}" | |
load-integrations: | |
needs: | |
- calc-ref | |
uses: ./.github/workflows/reuseable-load-integrations-repo-list.yml | |
with: | |
ref: ${{ needs.calc-ref.outputs.ref }} | |
dirty: false | |
check-dictionaries: | |
if: github.repository_owner == 'streetsidesoftware' | |
needs: | |
- calc-ref | |
env: | |
REF_BRANCH: ${{ needs.calc-ref.outputs.ref }} | |
runs-on: ubuntu-latest | |
outputs: | |
patch: ${{ env.PATCH_DIFF }} | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ env.REF_BRANCH }} | |
- name: Enable Corepack | |
run: corepack enable | |
- name: Use Node.js | |
uses: actions/setup-node@v4 | |
with: | |
cache: pnpm | |
- name: Install | |
run: pnpm install | |
- name: Update Dictionaries | |
run: | | |
pnpm run update-dictionary-packages | |
# Try to avoid unnecessary updates by limiting it to `package.json` changes. | |
# To do this, revert to the previous package lock and re-install. | |
- name: Update Package Lock | |
run: | | |
git checkout pnpm-lock.yaml | |
pnpm i --no-frozen-lockfile | |
- name: Build Patch | |
run: | | |
echo 'PATCH_DIFF<<__DIFF__' >> $GITHUB_ENV | |
git --no-pager diff >> $GITHUB_ENV | |
echo '__DIFF__' >> $GITHUB_ENV | |
- name: Show Patch | |
id: patch | |
run: | | |
echo "$PATCH_DIFF" | |
- name: Store Repo Diff | |
run: | | |
mkdir temp | |
echo "$PATCH_DIFF" > temp/patch.diff | |
- name: store diff | |
uses: actions/upload-artifact@v4 | |
with: | |
name: diffs-update | |
path: temp/*.diff | |
retention-days: 1 | |
check-result: | |
runs-on: ubuntu-latest | |
needs: | |
- calc-ref | |
- check-dictionaries | |
- load-integrations | |
steps: | |
- name: Show Needs | |
env: | |
NEEDS: ${{ toJSON(needs) }} | |
run: | | |
echo "Needs: $NEEDS" | |
build: | |
needs: | |
- calc-ref | |
- check-dictionaries | |
uses: './.github/workflows/reuseable-build-dist-cache.yml' | |
with: | |
ref: ${{ needs.calc-ref.outputs.ref }} | |
patch: ${{ needs.check-dictionaries.outputs.patch }} | |
integrations: | |
if: ${{ needs.check-dictionaries.outputs.patch }} | |
runs-on: ubuntu-latest | |
needs: | |
- load-integrations | |
- build | |
- calc-ref | |
- check-dictionaries | |
env: | |
REF_BRANCH: ${{ needs.calc-ref.outputs.ref }} | |
PATCH: ${{ needs.check-dictionaries.outputs.patch }} | |
strategy: | |
# the integration tests are independent, so we want to run them all. | |
fail-fast: false | |
matrix: | |
# List of repositories to check. | |
# Use `repo-list.sh` in `integration-tests` to generate. | |
repo: ${{ fromJSON(needs.load-integrations.outputs.repos) }} | |
# repo: | |
# # - prettier/prettier | |
# # - typescript-eslint/typescript-eslint | |
# - wireapp/wire-webapp | |
steps: | |
- name: Build Results | |
run: | | |
echo "key: ${{ needs.build.outputs.key }}" | |
echo "path: ${{ needs.build.outputs.path }}" | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ env.REF_BRANCH }} | |
- name: Enable Corepack | |
run: corepack enable | |
- name: Patch | |
run: | | |
echo "$PATCH" | git apply | |
- name: Use Node.js ${{ env.NODE_VERSION }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
cache: 'pnpm' | |
- run: pnpm -v | |
- name: Cache Build | |
id: step-cache-build | |
uses: actions/[email protected] | |
with: | |
key: ${{ needs.build.outputs.key }} | |
path: ${{ needs.build.outputs.path }} | |
- name: Cached Results | |
run: | | |
echo Build Cache: ${{ steps.step-cache-build.outputs.cache-hit == 'true' && 'Hit' || 'Miss' }} | |
- name: Install | |
run: pnpm i | |
- name: Has pnpm has failed? | |
if: ${{ failure() }} | |
run: | | |
ls -alF /home/runner/.pnpm/_logs/*.log | |
cat /home/runner/.pnpm/_logs/*.log | |
- name: Check Build | |
if: ${{ steps.step-cache-build.outputs.cache-hit != 'true' }} | |
run: exit 1 | |
- name: Repo Info | |
id: step-repo-info | |
run: | | |
echo "repo-info=$(jq -c '.repositories[] | select(.path == "${{ matrix.repo }}")' integration-tests/config/config.json)" >> $GITHUB_OUTPUT | |
- name: Cache Integration Test Repository Files | |
uses: actions/[email protected] | |
with: | |
key: int-repo-temp-files-${{ matrix.repo }}-${{ fromJSON(steps.step-repo-info.outputs.repo-info).commit }} | |
path: | | |
integration-tests/repositories/temp/${{ matrix.repo }} | |
- name: Run Integration Tests ${{ matrix.repo }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: > | |
cd integration-tests | |
&& pnpm i | |
&& pnpm run update-snapshots-only -- ${{ matrix.repo }} | |
- name: Normalize Repo Name | |
id: step-normalize-repo-name | |
env: | |
REPO: ${{ matrix.repo }} | |
REPLACE: '/' | |
REPLACE_WITH: '__' | |
run: | | |
echo "REPO_NAME=${REPO//${REPLACE}/${REPLACE_WITH}}" >> $GITHUB_OUTPUT | |
- name: Store Repo Diff | |
env: | |
REPO: ${{ steps.step-normalize-repo-name.outputs.REPO_NAME }} | |
run: | | |
mkdir temp || echo temp already exists | |
echo "${{ matrix.repo }} =>" $REPO | |
git diff integration-tests/config integration-tests/repositories integration-tests/snapshots > temp/$REPO.diff | |
- name: store diff | |
uses: actions/upload-artifact@v4 | |
with: | |
name: diffs-integrations-${{ steps.step-normalize-repo-name.outputs.REPO_NAME }} | |
path: temp/*.diff | |
retention-days: 1 | |
update-snapshots: | |
if: ${{ needs.check-dictionaries.outputs.patch }} | |
runs-on: ubuntu-latest | |
needs: | |
- calc-ref | |
- check-dictionaries | |
env: | |
REF_BRANCH: ${{ needs.calc-ref.outputs.ref }} | |
PATCH: ${{ needs.check-dictionaries.outputs.patch }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ env.REF_BRANCH }} | |
- name: Enable Corepack | |
run: corepack enable | |
- name: Patch | |
run: | | |
echo "$PATCH" | git apply | |
- name: Use Node.js ${{ env.NODE_VERSION }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
cache: 'pnpm' | |
- run: pnpm -v | |
- name: Install and Build | |
run: | | |
pnpm i | |
pnpm run build | |
- name: Has pnpm has failed? | |
if: ${{ failure() }} | |
run: | | |
ls -alF /home/runner/.pnpm/_logs/*.log | |
cat /home/runner/.pnpm/_logs/*.log | |
- name: Update update-snapshots-only | |
continue-on-error: true | |
run: | | |
pnpm run test:update-snapshots | |
- name: Store Update Snapshot Diff | |
run: | | |
mkdir temp || echo temp already exists | |
git diff packages/cspell packages/cspell-lib > temp/update_snapshot.diff | |
- name: store diff | |
uses: actions/upload-artifact@v4 | |
with: | |
name: diffs-update-snapshots | |
path: temp/*.diff | |
retention-days: 1 | |
pr-setup: | |
runs-on: ubuntu-latest | |
needs: | |
- integrations | |
- update-snapshots | |
- calc-ref | |
- check-dictionaries | |
env: | |
REF_BRANCH: ${{ needs.calc-ref.outputs.ref }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ env.REF_BRANCH }} | |
- name: Enable Corepack | |
run: corepack enable | |
- name: Use Node.js ${{ env.NODE_VERSION }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
cache: 'pnpm' | |
- name: restore repos | |
uses: actions/download-artifact@v4 | |
with: | |
pattern: diffs-* | |
path: temp | |
merge-multiple: true | |
- name: show downloaded | |
run: ls -alF temp | |
- name: apply diff | |
run: | | |
git apply --allow-empty temp/*.diff | |
- name: Update Integrations List | |
run: | | |
pnpm run update-integrations-list | |
- name: PR Body | |
id: body | |
uses: streetsidesoftware/actions/public/pr-body@v1 | |
with: | |
title: Update Dictionaries (${{ env.REF_BRANCH }}) | |
- name: PR | |
uses: streetsidesoftware/actions/.github/actions/pr@v1 | |
with: | |
commit-message: 'fix: Workflow Bot -- Update Dictionaries (${{ env.REF_BRANCH }})' | |
branch: ${{ env.NEW_BRANCH }} | |
base: ${{ env.REF_BRANCH }} | |
title: 'fix: Workflow Bot -- Update Dictionaries (${{ env.REF_BRANCH }})' | |
body: ${{ steps.body.outputs.body }} | |
app_id: ${{ secrets.AUTOMATION_APP_ID }} | |
app_private_key: ${{ secrets.AUTOMATION_PRIVATE_KEY }} |