Skip to content

Update to lab1 and lab files #7

Update to lab1 and lab files

Update to lab1 and lab files #7

Workflow file for this run

name: Build and Release Slides
on:
push:
tags:
- "slides_*_*" # ex: slides_intro_2025-09-01
jobs:
build-and-release:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- name: Extract subject and version
shell: bash
run: |
REF="${GITHUB_REF#refs/tags/}" # slides_intro_2025-09-01
SUBJECT="${REF#slides_}"; SUBJECT="${SUBJECT%%_*}" # intro
VERSION="${REF#slides_${SUBJECT}_}" # 2025-09-01
case "$SUBJECT" in intro|git|latex|unix|machine-code) ;;
*) echo "Unsupported subject: $SUBJECT"; exit 1;;
esac
echo "SUBJECT=$SUBJECT" >> $GITHUB_ENV
echo "VERSION=$VERSION" >> $GITHUB_ENV
- name: Compile LaTeX
uses: xu-cheng/latex-action@v4
with:
latexmk_use_xelatex: true
work_in_root_file_dir: true
root_file: "lectures/${{ env.SUBJECT }}/slides_handout.tex"
env:
TEXINPUTS: ".:../../latex-support//:./latex-support//:"
- name: Rename output PDF
run: |
SRC="lectures/${{ env.SUBJECT }}/slides_handout.pdf"
DST="lectures/${{ env.SUBJECT }}/slides_${{ env.SUBJECT }}_${{ env.VERSION }}.pdf"
mv "$SRC" "$DST"
echo "ASSET=$DST" >> $GITHUB_ENV
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
files: ${{ env.ASSET }}
name: "Slides (${{ env.SUBJECT }}) ${{ env.VERSION }}"
tag_name: ${{ github.ref_name }}
draft: false
prerelease: false
- name: Prepare stable 'latest' filename
run: |
cp "lectures/${{ env.SUBJECT }}/slides_${{ env.SUBJECT }}_${{ env.VERSION }}.pdf" \
"lectures/${{ env.SUBJECT }}/slides_${{ env.SUBJECT }}_latest.pdf"
echo "ASSET_LATEST=lectures/${{ env.SUBJECT }}/slides_${{ env.SUBJECT }}_latest.pdf" >> $GITHUB_ENV
- name: Delete old asset from subject 'latest' release (if exists)
uses: actions/github-script@v7
with:
script: |
const tag = `slides_${process.env.SUBJECT}_latest`;
try {
const rel = await github.rest.repos.getReleaseByTag({
owner: context.repo.owner,
repo: context.repo.repo,
tag
});
for (const a of rel.data.assets ?? []) {
if (a.name === `slides_${process.env.SUBJECT}_latest.pdf`) {
await github.rest.repos.deleteReleaseAsset({
owner: context.repo.owner,
repo: context.repo.repo,
asset_id: a.id
});
}
}
} catch (e) {
if (e.status !== 404) throw e; // 404 = ingen 'latest' release än
}
- name: Create/Update subject 'latest' release
uses: softprops/action-gh-release@v2
with:
tag_name: slides_${{ env.SUBJECT }}_latest
name: "Slides (${{ env.SUBJECT }}) latest"
files: ${{ env.ASSET_LATEST }}
draft: false
prerelease: false