Example/test maintenance (package-lock updating, formatting, linting) #12
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: Example/test maintenance (package-lock updating, formatting, linting) | |
on: | |
workflow_dispatch: | |
schedule: | |
# Run at 10:00 UTC (4:00 AM MT) every day | |
- cron: '0 10 * * *' | |
jobs: | |
determine-signing-key: | |
runs-on: ubuntu-latest | |
outputs: | |
signing-key-id: ${{ steps.set-key.outputs.key }} | |
steps: | |
- id: set-key | |
run: echo "key=C8B77BCBE16CD2B94B43F9C8757397B82D4ED7B0" >> $GITHUB_OUTPUT | |
determine-prefix: | |
runs-on: ubuntu-latest | |
outputs: | |
prefix: ${{ steps.set-prefix.outputs.prefix }} | |
steps: | |
- id: set-prefix | |
run: echo "prefix=maintenance-$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT | |
create-branch-prefix: | |
needs: | |
- determine-signing-key | |
- determine-prefix | |
uses: ./.github/workflows/create_branch_prefix.yml | |
with: | |
prefix: ${{ needs.determine-prefix.outputs.prefix }} | |
version: $(jq -r '.version' package.json) | |
signing-key-id: ${{ needs.determine-signing-key.outputs.signing-key-id }} | |
secrets: | |
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }} | |
prepare-maintenance: | |
name: Prepare Maintenance | |
needs: | |
- create-branch-prefix | |
- determine-signing-key | |
runs-on: ubuntu-latest | |
outputs: | |
test-infos: ${{ steps.get-test-infos.outputs.test-infos }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ needs.create-branch-prefix.outputs.base-branch }} | |
token: ${{ secrets.LASTMJS_GITHUB_TOKEN }} | |
- uses: ./.github/actions/setup_node | |
- uses: ./.github/actions/setup_dfx | |
- run: npm install | |
# Run global prettier/lint fixes | |
- name: Run Prettier | |
run: npx prettier --write . | |
- name: Run ESLint | |
run: npx eslint . --fix | |
- uses: ./.github/actions/commit_and_push | |
with: | |
branch-name: ${{ needs.create-branch-prefix.outputs.base-branch }} | |
commit-message: 'Example/test maintenance: formatting and linting' | |
gpg-signing-key: ${{ secrets.GPG_SIGNING_KEY }} | |
signing-key-id: ${{ needs.determine-signing-key.outputs.signing-key-id }} | |
- id: get-test-infos | |
uses: ./.github/actions/get_test_infos | |
with: | |
directories: ./examples | |
update-test-dependencies: | |
needs: | |
- prepare-maintenance | |
- create-branch-prefix | |
- determine-signing-key | |
name: Update dependencies for ${{ matrix.test.name }} | |
runs-on: ubuntu-latest | |
env: | |
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }} | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
strategy: | |
fail-fast: false | |
matrix: | |
test: ${{ fromJson(needs.prepare-maintenance.outputs.test-infos) }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ needs.create-branch-prefix.outputs.base-branch }} | |
token: ${{ secrets.LASTMJS_GITHUB_TOKEN }} | |
- uses: ./.github/actions/setup_node | |
- uses: ./.github/actions/setup_dfx | |
# Update package-lock.json in test directory | |
- name: Update package-lock.json | |
working-directory: ${{ matrix.test.path }} | |
run: | | |
rm -f package-lock.json | |
npm install | |
- name: Create branch name | |
id: create-branch-name | |
uses: ./.github/actions/create_branch_name | |
with: | |
prefix: ${{ needs.create-branch-prefix.outputs.branch-prefix }} | |
path: ${{ matrix.test.displayPath }} | |
- uses: ./.github/actions/commit_and_push | |
with: | |
branch-name: ${{ steps.create-branch-name.outputs.branch-name }} | |
commit-message: 'Example/test maintenance: update dependencies' | |
gpg-signing-key: ${{ secrets.GPG_SIGNING_KEY }} | |
create-branch: 'true' | |
signing-key-id: ${{ needs.determine-signing-key.outputs.signing-key-id }} | |
squash-branches: | |
needs: | |
- update-test-dependencies | |
- create-branch-prefix | |
- determine-signing-key | |
uses: ./.github/workflows/squash_branches.yml | |
with: | |
base-branch: ${{ needs.create-branch-prefix.outputs.base-branch }} | |
branch-prefix: ${{ needs.create-branch-prefix.outputs.branch-prefix }} | |
commit-message: 'Example/test maintenance: update dependencies' | |
signing-key-id: ${{ needs.determine-signing-key.outputs.signing-key-id }} | |
secrets: | |
GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }} | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
LASTMJS_GITHUB_TOKEN: ${{ secrets.LASTMJS_GITHUB_TOKEN }} | |
create-pr: | |
needs: | |
- squash-branches | |
- create-branch-prefix | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.ref }} | |
fetch-depth: 0 | |
- name: Check for differences | |
id: check-diff | |
run: | | |
git fetch origin main | |
if git diff --quiet origin/main ${{ needs.create-branch-prefix.outputs.base-branch }}; then | |
echo "No differences found between branches" | |
echo "has_changes=false" >> $GITHUB_OUTPUT | |
else | |
echo "Changes detected" | |
echo "has_changes=true" >> $GITHUB_OUTPUT | |
fi | |
- name: Create Pull Request | |
if: steps.check-diff.outputs.has_changes == 'true' | |
env: | |
GH_TOKEN: ${{ secrets.LASTMJS_GITHUB_TOKEN }} | |
run: | | |
gh pr create \ | |
--base main \ | |
--head ${{ needs.create-branch-prefix.outputs.base-branch }} \ | |
--title "Example/test maintenance: update dependencies, formatting, and linting" \ | |
--body "Automated PR for maintenance tasks: | |
- Updated package-lock.json files | |
- Fixed formatting with Prettier | |
- Fixed linting issues with ESLint" |