feat(artifacts.yml): add GitHub Actions workflow to update bundled artifacts

This commit adds a new GitHub Actions workflow file, artifacts.yml, which is triggered on push events to the main branch. The workflow consists of two jobs: "filter" and "build".

The "filter" job checks if any of the specified files (package.json and assets/**) have changed. If any file in the scope has changed, a step is executed. Otherwise, the workflow is prevented from running.

The "build" job is executed if the branch is main and the repository is not a fork. It performs the following steps:
1. Checkout the repository
2. Setup pnpm package manager
3. Get the pnpm store directory path
4. Setup pnpm cache using actions/cache
5. Install dependencies using pnpm
6. Build the artifacts
7. Configure git user email and name
8. Add all changes to the commit and commit with the message "build: update bundled artifacts [skip ci]"
9. Push the changes to the repository
This commit is contained in:
Sped0n
2023-11-04 16:58:17 +08:00
parent d379453cbc
commit d45d22829e

66
.github/workflows/artifacts.yml vendored Normal file
View File

@@ -0,0 +1,66 @@
name: 'Update artifacts'
on:
push:
branches:
- main
jobs:
filter:
runs-on: ubuntu-latest
name: Filter
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Get changed files in scope
id: changed-files-specific
uses: tj-actions/changed-files@v40
with:
files:
- package.json
- assets/**
- name: Run step if any file(s) in the scope change
if: steps.changed-files-specific.outputs.any_changed == 'true'
run: echo "file(s) in scope is affected"
- name: Prevent from running
if: steps.changed-files-specific.outputs.any_changed != 'true'
run: exit 1
build:
timeout-minutes: 30
runs-on: ubuntu-latest
needs: [filter]
if: |
github.ref == 'refs/heads/main' &&
github.event.repository.fork == false
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup pnpm
uses: pnpm/action-setup@v2
- name: Get pnpm store directory
id: pnpm-cache
run: echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- name: Setup pnpm cache
uses: actions/cache@v3
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: ${{ runner.os }}-pnpm-store-
- name: Install dependencies
run: pnpm install
- name: Build
run: |
pnpm run build
git config --global user.email "noreply@github.com"
git config --global user.name "CI"
git add -A && git commit -m "build: update bundled artifacts [skip ci]"
git push