📚 Update Dictionaries Main #1147
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: Setup pnpm | |
uses: pnpm/[email protected] | |
- 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: Setup pnpm | |
uses: pnpm/[email protected] | |
- 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: Setup pnpm | |
uses: pnpm/[email protected] | |
- 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: Setup pnpm | |
uses: pnpm/[email protected] | |
- 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 }} |