Skip to content

Build and Release Typst document #25

Build and Release Typst document

Build and Release Typst document #25

name: Build and Release Typst document
on:
workflow_dispatch:
inputs:
tag_name:
description: Tag name of release
required: false
schedule:
- cron: "0 0 * * 0"
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup node.js
uses: actions/setup-node@v3
with:
node-version: 18.x
cache: 'npm'
- uses: typst-community/setup-typst@v3
with:
typst-version: 0.11.0-rc1
cache-dependency-path: OI-Wiki-export/oi-wiki-export-typst/oi-wiki.typ
- name: Pre-build operations
env:
GH_TOKEN: ${{ github.token }}
run: |
sudo apt-get install curl git unzip imagemagick libwebp-dev librsvg2-dev fonts-noto-cjk fonts-noto-cjk-extra
sudo apt-get remove fonts-noto-color-emoji
mkdir .fonts
curl -L $(gh api /repos/lxgw/LxgwWenKai/releases/latest -q '.assets[].browser_download_url | select(contains("tar.gz"))') | tar xfz - -C .fonts
git clone https://github.com/OI-wiki/OI-wiki.git --depth=1 --single-branch -b master
cd remark-typst
npm install
cd ..
cd oi-wiki-export-typst
npm install
- name: Build Typst document
run: |
cd oi-wiki-export-typst
node index.js ../OI-wiki
typst compile oi-wiki-export.typ --font-path .fonts
- name: Create Tag
id: create_tag
run: |
tag_name=$(TZ="Asia/Shanghai" date +"v%Y%m%d_%H%M")_typst
if [[ -n "${{github.event.inputs.tag_name}}" ]]; then tag_name=${{github.event.inputs.tag_name}}; fi
git tag $tag_name
git push --tags
echo "::set-output name=tag_name::$tag_name"
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.create_tag.outputs.tag_name }}
release_name: Release ${{ steps.create_tag.outputs.tag_name }}
draft: false
prerelease: false
- name: Upload Release Asset
id: upload_release_asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./oi-wiki-export-typst/oi-wiki-export.pdf
asset_name: OI-wiki.pdf
asset_content_type: application/pdf