fix: 更新 lock 文件 #3
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: Build distribution theme | |
on: | |
push: | |
branches: | |
- main | |
paths: | |
- "**" | |
- "!**.md" | |
release: | |
types: | |
- created | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: false | |
- name: Set up Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
- uses: pnpm/[email protected] | |
name: Install pnpm | |
id: install-pnpm | |
with: | |
version: 7 | |
run_install: false | |
- name: Get pnpm store directory | |
id: pnpm-cache | |
run: | | |
echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" | |
- uses: actions/cache@v3 | |
name: Setup pnpm cache | |
with: | |
path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} | |
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('./pnpm-lock.yaml') }} | |
restore-keys: | | |
${{ runner.os }}-pnpm-store- | |
- name: Install dependencies | |
run: | | |
pnpm install | |
- name: Build distribution | |
run: | | |
pnpm build | |
- name: Inject slug/short variables | |
uses: rlespinasse/github-slug-action@v4 | |
- name: Compress zip | |
run: | | |
PACKAGE_VERSION=$(sed -nE 's/^\s*"version": "(.*?)",$/\1/p' package.json) | |
PACKAGE_NAME=${GITHUB_REPOSITORY_NAME_PART_SLUG} | |
PRE_ZIP_FOLDER=${PACKAGE_NAME}-${PACKAGE_VERSION} | |
ARTIFACT_NAME=${PRE_ZIP_FOLDER}.zip | |
ARTIFACT_PATHNAME=dist/${ARTIFACT_NAME} | |
echo "${PACKAGE_NAME} version $PACKAGE_VERSION" | |
echo "Artifact name: ${ARTIFACT_NAME}" | |
echo "Artifact pathname: ${ARTIFACT_PATHNAME}" | |
echo "PACKAGE_VERSION=${PACKAGE_VERSION}" >> $GITHUB_ENV | |
echo "ARTIFACT_NAME=${ARTIFACT_NAME}" >> $GITHUB_ENV | |
echo "ARTIFACT_PATHNAME=${ARTIFACT_PATHNAME}" >> $GITHUB_ENV | |
echo "RELEASE_ID=${{ github.event.release.id }}" >> $GITHUB_ENV | |
mkdir $PRE_ZIP_FOLDER | |
mkdir dist | |
cp -r theme.yaml settings.yaml annotation-settings.yaml templates $PRE_ZIP_FOLDER/ | |
zip -r $ARTIFACT_PATHNAME $PRE_ZIP_FOLDER | |
- name: Upload artifact | |
uses: actions/upload-artifact@v2 | |
with: | |
name: ${{ env.ARTIFACT_NAME }} | |
path: | | |
dist/*.zip | |
retention-days: 7 | |
github-release: | |
runs-on: ubuntu-latest | |
if: github.event_name == 'release' | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
submodules: false | |
- name: Set up Node.js | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 16 | |
- uses: pnpm/[email protected] | |
name: Install pnpm | |
id: install-pnpm | |
with: | |
version: 7 | |
run_install: false | |
- name: Get pnpm store directory | |
id: pnpm-cache | |
run: | | |
echo "::set-output name=pnpm_cache_dir::$(pnpm store path)" | |
- uses: actions/cache@v3 | |
name: Setup pnpm cache | |
with: | |
path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} | |
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('./pnpm-lock.yaml') }} | |
restore-keys: | | |
${{ runner.os }}-pnpm-store- | |
- name: Install dependencies | |
run: | | |
pnpm install | |
- name: Build distribution | |
run: | | |
pnpm build | |
- name: Inject slug/short variables | |
uses: rlespinasse/github-slug-action@v4 | |
- name: Compress zip | |
run: | | |
PACKAGE_VERSION=$(sed -nE 's/^\s*"version": "(.*?)",$/\1/p' package.json) | |
PACKAGE_NAME=${GITHUB_REPOSITORY_NAME_PART_SLUG} | |
PRE_ZIP_FOLDER=${PACKAGE_NAME}-${PACKAGE_VERSION} | |
ARTIFACT_NAME=${PRE_ZIP_FOLDER}.zip | |
ARTIFACT_PATHNAME=dist/${ARTIFACT_NAME} | |
echo "${PACKAGE_NAME} version $PACKAGE_VERSION" | |
echo "Artifact name: ${ARTIFACT_NAME}" | |
echo "Artifact pathname: ${ARTIFACT_PATHNAME}" | |
echo "PACKAGE_VERSION=${PACKAGE_VERSION}" >> $GITHUB_ENV | |
echo "ARTIFACT_NAME=${ARTIFACT_NAME}" >> $GITHUB_ENV | |
echo "ARTIFACT_PATHNAME=${ARTIFACT_PATHNAME}" >> $GITHUB_ENV | |
echo "RELEASE_ID=${{ github.event.release.id }}" >> $GITHUB_ENV | |
mkdir $PRE_ZIP_FOLDER | |
mkdir dist | |
cp -r theme.yaml settings.yaml annotation-settings.yaml templates $PRE_ZIP_FOLDER/ | |
zip -r $ARTIFACT_PATHNAME $PRE_ZIP_FOLDER | |
- name: Upload a release asset | |
uses: actions/github-script@v2 | |
with: | |
github-token: ${{secrets.GITHUB_TOKEN}} | |
script: | | |
const fs = require('fs').promises; | |
const { repo: { owner, repo }, sha } = context; | |
console.log({ owner, repo, sha }); | |
const releaseId = process.env.RELEASE_ID | |
const artifactPathName = process.env.ARTIFACT_PATHNAME | |
const artifactName = process.env.ARTIFACT_NAME | |
console.log('Releasing', releaseId, artifactPathName, artifactName) | |
await github.repos.uploadReleaseAsset({ | |
owner, repo, | |
release_id: releaseId, | |
name: artifactName, | |
data: await fs.readFile(artifactPathName) | |
}); |