Skip to content

Commit

Permalink
GH Actions setup
Browse files Browse the repository at this point in the history
  • Loading branch information
zauguin committed Oct 29, 2024
1 parent 3b69553 commit d1b6c46
Show file tree
Hide file tree
Showing 4 changed files with 217 additions and 0 deletions.
38 changes: 38 additions & 0 deletions .github/actions/ctan-upload/action.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: CTAN upload

inputs:
filename:
required: true
dry-run:
required: true
uploader:
required: true
email:
required: true
version:
required: false
default: ${{ github.ref_name }}

runs:
using: composite
steps:
- name: Send to CTAN
uses: zauguin/[email protected]
with:
package-name: luaotfload
version: ${{ inputs.version }}
author: 'Marcel Krüger, LaTeX Project Team'
uploader: ${{ inputs.uploader }}
email: ${{ inputs.email }}
license: lppl1.3
summary: "Automatically generate MathML from LuaLaTeX math mode material"
ctan-path: /macros/luatex/latex/luamml
support: https://github.com/latex3/luamml/issues
update: true
topic: maths,luatex
description: |
LuaMML is an experimental package to automatically generate a MathML representation of mathematical expessions written in LuaLaTeX documents. These MathML representations can be used for improving accessibility or to ease conversion into new output formats like HTML.
filename: ${{ inputs.filename }}
dry-run: ${{ inputs.dry-run }}
announcement-filename: ctan.ann
note: Uploaded automatically by GitHub Actions.
50 changes: 50 additions & 0 deletions .github/tl_packages
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Needed for any use of texlua even if not testing LuaTeX
l3build latex latex-bin luatex latex-bin-dev
#
# Required to build plain and LaTeX formats:
# TeX90 plain for unpacking, pdfLaTeX, LuaLaTeX and XeTeX for tests
cm etex knuth-lib tex tex-ini-files unicode-data
#
# various tools / dependencies of other packages
ctablestack filehook ifoddpage iftex luatexbase trimspaces oberdiek
etoolbox xkeyval ucharcat xstring everyhook svn-prov setspace
csquotes everysel lua-uni-algos
#
# slices from oberdiek
atbegshi atveryend bigintcalc bitset bookmark epstopdf-pkg etexcmds
gettitlestring hologo hycolor intcalc kvdefinekeys kvsetkeys
letltxmacro ltxcmds luacolor pdfescape pdflscape pdftexcmds refcount
rerunfilecheck uniquecounter
#
# graphics
graphics xcolor graphics-def pgf
#
# fonts support - perhaps take here luaotfload out of the list ...
# or is it installed as dependency anyway?
fontspec microtype unicode-math ttfutils
#
# fonts
sourcecodepro asana-math ebgaramond tex-gyre amsfonts gnu-freefont
opensans fira tex-gyre-math lm lm-math amiri ipaex xits
libertine coelacanth fontawesome stix2-otf dejavu luatexko
unfonts-core cjk-ko iwona libertinus-fonts fandol cm-unicode noto
cuprum gentium-tug
#
# languages
luatexja arabluatex babel babel-english
#
# math
amsmath lualatex-math latex-amsmath-dev
#
# a few more packages
luacode environ adjustbox collectbox varwidth geometry url ulem
lua-ul
#
# some packages for the documentation
caption fancyvrb hyperref inconsolata listings luatex85 mdwtools
metalogo pdfpages pgf-blur standalone tikzducks tikzlings titlesec
tocloft tools hypdoc
#
# Assuming a 'basic' font set up, metafont is required to avoid
# warnings with some packages and errors with others
metafont mfware texlive-scripts
77 changes: 77 additions & 0 deletions .github/workflows/deploy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
name: Release

on:
# Only triggers for new tags
push:
tags: "*"

jobs:
# Mostly the same as the main.yaml workflow, but we only use a single job
l3build:
runs-on: ubuntu-latest
steps:
# Boilerplate
- name: Checkout repository
uses: actions/checkout@v4
- name: Install TeX Live
uses: zauguin/install-texlive@v3
with:
# Here we use the same list of packages as in the testing workflow.
package_file: .github/tl_packages
- name: Run l3build
run: l3build ctan -H --show-log-on-error
- name: Upload package artifact
uses: actions/upload-artifact@v4
with:
name: Package
path: |
build/distrib/ctan/*.zip
ctan.ann
- name: Validate CTAN package
uses: ./.github/actions/ctan-upload
with:
uploader: Dummy Name
email: [email protected]
filename: "build/distrib/ctan/luaotfload-ctan.zip"
dry-run: true

github:
runs-on: ubuntu-latex
needs:
- l3build
steps:
- name: Download package artifact
uses: actions/download-artifact@v4
with:
name: Package
- name: Create GitHub release
uses: ncipollo/release-action@2c591bcc8ecdcd2db72b97d6147f871fcd833ba5
id: release
with:
artifacts: "build/distrib/ctan/*.zip"
prerelease: ${{ endsWith(github.ref, '-dev') }}
token: ${{ secrets.GITHUB_TOKEN }}
bodyFile: ctan.ann

ctan-upload:
if: "${{ !endsWith(github.ref, '-dev') }}"
runs-on: ubuntu-latest
environment: CTAN
needs:
- l3build
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
sparse-checkout: .github
- name: Download package artifact
uses: actions/download-artifact@v4
with:
name: Package
- name: Upload CTAN package
uses: ./.github/actions/ctan-upload
with:
uploader: ${{ secrets.CTAN_NAME }}
email: ${{ secrets.CTAN_EMAIL }}
filename: "build/distrib/ctan/luaotfload-ctan.zip"
dry-run: false
52 changes: 52 additions & 0 deletions .github/workflows/main.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Automated testing

# Currently we run in two situations:
on:
# Whenever someone pushes to a branch or tag in our repo
push:
branches:
- "*"
# Whenever a pull request is opened, reopened or gets new commits.
pull_request:
# This implies that for every push to a local branch in our repo for which a
# pull request is open this runs twice. But it's important to ensure that pull
# requests get tested even if their branch comes from a fork.

jobs:
l3build:
runs-on: ubuntu-latest
strategy:
matrix:
kind: [doc, test]
name: "${{ format('{0}', matrix.kind == 'doc' && 'Documentation' || 'Test suite') }}"
steps:
# Boilerplate
- name: Checkout repository
uses: actions/checkout@v4
- name: Install TeX Live
uses: zauguin/install-texlive@v3
with:
# The list of packages to install is in a separate file under .github/tl_packages
# to allow reuse.
package_file: .github/tl_packages
cache_version: 0
- name: Run l3build
run: ${{ format('l3build {0} -q -H', matrix.kind == 'doc' && 'doc' || 'check --show-log-on-error') }}
# Now we create the artifacts: There are two cases where this happens.
# 1. If we failed running tests
- name: Archive failed test output
if: ${{ matrix.kind == 'test' && always() }}
uses: zauguin/l3build-failure-artifacts@v1
with:
name: testfiles-${{ matrix.platform }}
# Decide how long to keep the test output artifact:
retention-days: 3
# 2. If we succeed building documentation
- name: Archive documentation
if: ${{ matrix.kind == 'doc' && success() }}
uses: actions/upload-artifact@v4
with:
name: Documentation
path: "**/*.pdf"
# Decide how long to keep the test output artifact:
retention-days: 21

0 comments on commit d1b6c46

Please sign in to comment.