Skip to content

Example/test maintenance (package-lock updating, formatting, linting) #12

Example/test maintenance (package-lock updating, formatting, linting)

Example/test maintenance (package-lock updating, formatting, linting) #12

Workflow file for this run

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"