-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
5715d45
commit 4de7e88
Showing
1 changed file
with
147 additions
and
0 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,147 @@ | ||
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) | ||
}); |