📚 Update Dictionaries Main #601
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: | |
schedule: | |
- cron: "0 7 * * *" | |
permissions: | |
contents: read | |
env: | |
NEW_BRANCH: "update-dictionaries-main" | |
REF_BRANCH: 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@v3 | |
with: | |
ref: ${{ env.REF_BRANCH }} | |
- name: Setup pnpm | |
uses: pnpm/[email protected] | |
- name: Use Node.js | |
uses: actions/setup-node@v3 | |
with: | |
cache: pnpm | |
- name: Install | |
run: pnpm install | |
- name: Update Dictionaries | |
run: | | |
pnpm run update-dictionary-packages | |
- 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@v3 | |
with: | |
name: diffs | |
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@v3 | |
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@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
cache: "pnpm" | |
- run: pnpm -v | |
- name: Cache Build | |
id: step-cache-build | |
uses: actions/cache@v3 | |
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 && '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 }} | |
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/cache@v3 | |
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: Store Repo Diff | |
run: | | |
mkdir temp || echo temp already exists | |
REPO=$(echo "${{ matrix.repo }}" | sed "s/[/]/__/g") | |
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@v3 | |
with: | |
name: diffs | |
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@v3 | |
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@v3 | |
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 | |
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@v3 | |
with: | |
name: diffs | |
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 }} | |
outputs: | |
base: ${{ env.REF_BRANCH }} | |
body: | | |
## Update Dictionaries (${{ env.REF_BRANCH }}) | |
commit-message: "fix: Workflow Bot -- Update Dictionaries" | |
branch: ${{ env.NEW_BRANCH }} | |
title: "fix: Workflow Bot -- Update Dictionaries (${{ env.REF_BRANCH }})" | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
ref: ${{ env.REF_BRANCH }} | |
- name: Setup pnpm | |
uses: pnpm/[email protected] | |
- name: Use Node.js ${{ env.NODE_VERSION }} | |
uses: actions/setup-node@v3 | |
with: | |
node-version: ${{ env.NODE_VERSION }} | |
cache: "pnpm" | |
- name: restore repos | |
uses: actions/download-artifact@v3 | |
with: | |
name: diffs | |
path: temp | |
- 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: Build Patch | |
run: | | |
git --no-pager diff > temp/patch.diff | |
- name: store patch | |
uses: actions/upload-artifact@v3 | |
with: | |
name: patch | |
path: temp/patch.diff | |
retention-days: 1 | |
pr: | |
uses: ./.github/workflows/reuseable-pr-from-artifact.yml | |
needs: | |
- pr-setup | |
with: | |
patch_artifact: patch | |
base: ${{ needs.pr-setup.outputs.base }} | |
body: ${{ needs.pr-setup.outputs.body }} | |
commit-message: ${{ needs.pr-setup.outputs.commit-message }} | |
branch: ${{ needs.pr-setup.outputs.branch }} | |
title: ${{ needs.pr-setup.outputs.title }} | |
secrets: | |
app_id: ${{ secrets.AUTOMATION_APP_ID }} | |
private_key: ${{ secrets.AUTOMATION_PRIVATE_KEY }} |