Skip to content

Release

Release #74

Workflow file for this run

name: Release
on:
release:
types:
- published
jobs:
build:
name: build bithesis manual
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: xu-cheng/texlive-action@v2
with:
scheme: full
run: |
apk add make msttcorefonts-installer fontconfig
update-ms-fonts
fc-cache -f
make doc
make handbooks
- name: Upload bithesis.pdf for later usage.
uses: actions/upload-artifact@v4
with:
name: bithesis
path: bithesis.pdf
- name: Upload handbooks for later usage.
uses: actions/upload-artifact@v4
with:
name: handbooks
path: "handbook/*.pdf"
- name: Upload *.cls for later usage.
uses: actions/upload-artifact@v4
with:
name: cls
path: "*.cls"
publish_templates:
name: Publish ${{ matrix.template }}
runs-on: ubuntu-latest
needs: build
strategy:
matrix:
template:
[
graduate-thesis,
undergraduate-thesis,
lab-report,
paper-translation,
presentation-slide,
undergraduate-thesis-en,
reading-report,
]
include:
- template: graduate-thesis
label: 硕博·学位论文
- template: undergraduate-thesis
label: 本科·毕业设计·论文
- template: lab-report
label: 实验报告
- template: paper-translation
label: 本科·毕业设计·外文翻译
- template: presentation-slide
label: 演示文档
- template: undergraduate-thesis-en
label: 本科·毕业设计·论文(全英文专业)
- template: reading-report
label: 本科·读书报告
steps:
- uses: actions/checkout@v4
- name: Download bithesis.pdf
uses: actions/download-artifact@v4
with:
name: bithesis
- name: Download `*.cls`
uses: actions/download-artifact@v4
with:
name: cls
- name: Copy manual to the template folder.
run: |
mv bithesis.pdf ./templates/${{ matrix.template }}
make copy-only
- name: Install zip
uses: montudor/action-zip@v1
- name: Zip files under ./${{ matrix.template }}
run: zip -qq -r ./${{ matrix.template }}.zip ./${{ matrix.template }}
working-directory: ./templates
- name: Upload ${{ matrix.template }}.zip to release
run: |
gh release upload ${{ github.ref }} \
"./templates/${{ matrix.template }}.zip#模板包·${{ matrix.label }} — ${{ matrix.template }}.zip"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
publish_cls:
name: Publish ${{ matrix.cls }}
runs-on: ubuntu-latest
needs: build
strategy:
matrix:
cls:
- name: bithesis
label: 论文
- name: bitreport
label: 实验报告
- name: bitbeamer
label: 幻灯片
steps:
- uses: actions/checkout@v4
- name: Download *.cls
uses: actions/download-artifact@v4
with:
name: cls
- name: Upload ${{ matrix.cls.name }}.cls to release
run: |
gh release upload ${{ github.ref }} \
"${{ matrix.cls.name }}.cls#文档类·${{ matrix.cls.label }} — ${{ matrix.cls.name }}.cls(用于升级替换)"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
release_notes:
name: Populate release notes with latest changelog and PDFs
runs-on: ubuntu-latest
# Makesure it's the last job.
needs: [build, publish_cls, publish_templates]
outputs:
release_body: ${{ steps.git-cliff.outputs.content }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Generate a changelog
uses: orhun/git-cliff-action@v3
id: git-cliff
with:
config: cliff.toml
args: -vv --latest --strip header
env:
OUTPUT: CHANGES.md
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/checkout@v4
- name: Download bithesis.pdf
uses: actions/download-artifact@v4
with:
name: bithesis
- name: Upload bithesis.pdf and changelog
uses: svenstaro/upload-release-action@v2
with:
file: bithesis.pdf
repo_token: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref }}
overwrite: true
body: |
> [!TIP]
> 若是初次使用,可先参考**快速使用指南**([本科][undergraduate-handbook]/[硕博][graduate-handbook])或者 [Wiki 网站](https://bithesis.bitnp.net/)。有需要再进一步参考[详细配置手册`bithesis.pdf`][bithesis-pdf]。
[undergraduate-handbook]: ${{ github.server_url }}/${{ github.repository }}/releases/download/${{ github.event.release.tag_name }}/undergraduate-handbook.pdf
[graduate-handbook]: ${{ github.server_url }}/${{ github.repository }}/releases/download/${{ github.event.release.tag_name }}/graduate-handbook.pdf
[bithesis-pdf]: ${{ github.server_url }}/${{ github.repository }}/releases/download/${{ github.event.release.tag_name }}/bithesis.pdf
${{ steps.git-cliff.outputs.content }}
- name: Download handbooks
uses: actions/download-artifact@v4
with:
name: handbooks
path: handbook
- name: Upload handbooks
run: |
gh release upload ${{ github.ref }} \
"handbook/undergraduate-handbook.pdf#快速使用指南·本科"
gh release upload ${{ github.ref }} \
"handbook/graduate-handbook.pdf#快速使用指南·硕博"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
upload_to_ctan:
name: Upload to CTAN
runs-on: ubuntu-latest
needs: build
if: ${{ ! github.event.release.prerelease }}
steps:
- uses: actions/checkout@v4
- name: Download bithesis.pdf
uses: actions/download-artifact@v4
with:
name: bithesis
- run: make pkg-only
- name: Determine version
id: version
run: |
version=${{ github.event.release.tag_name }}
echo "number=$(echo $version | sed 's/^v//')" >> "$GITHUB_OUTPUT"
echo "date=$(date '+%Y-%m-%d')" >> "$GITHUB_OUTPUT"
- name: Upload to CTAN
uses: paolobrasolin/ctan-submit-action@v1
with:
action: upload
file_path: bithesis.zip
fields: |
update: "true"
pkg: bithesis
version: ${{ steps.version.outputs.number }} ${{ steps.version.outputs.date }}
author: Feng Kaiyu
email: loveress01@outlook.com
uploader: Feng Kaiyu
- name: Report
run: >
echo "🎉 Successfully upload
${{ steps.version.outputs.number }} (${{ steps.version.outputs.date }})
to [CTAN](https://www.ctan.org/pkg/bithesis)." >> "$GITHUB_STEP_SUMMARY"
changelog:
name: Update CHANGELOG
runs-on: ubuntu-latest
if: ${{ ! github.event.release.prerelease }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ github.event.repository.default_branch }}
- name: Update CHANGELOG
uses: orhun/git-cliff-action@v3
with:
config: cliff.toml
args: --verbose
env:
OUTPUT: CHANGELOG.md
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create a PR
# Changes must be made through the merge queue, therefore a PR is necessary.
id: pr
uses: peter-evans/create-pull-request@v6
with:
commit-message: Update CHANGELOG for ${{ github.event.release.tag_name }}
title: Update CHANGELOG for ${{ github.event.release.tag_name }}
- name: Report status
run: |
echo "[Pull request #${{ steps.pr.outputs.pull-request-number }}](${{ steps.pr.outputs.pull-request-url }}) is created to update CHANGELOG." >> "$GITHUB_STEP_SUMMARY"
- name: Merge the PR
run: |
gh pr merge ${{ steps.pr.outputs.pull-request-number }}
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}