Skip to content

📚 Update Dictionaries Main #601

📚 Update Dictionaries Main

📚 Update Dictionaries Main #601

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 }}