Step pre-release tag #56
Workflow file for this run
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
name: Create release | |
# We create releases for all new tags | |
on: | |
push: | |
tags: | |
- "*" | |
jobs: | |
# The l3build job contains the actual work. This is mostly the same as in main.yaml | |
# and should stay synchronized. Sadly it doesn't seem possible to reuse the instructions at the moment. | |
release: | |
runs-on: ubuntu-20.04 | |
name: Build release | |
environment: Release | |
steps: | |
# Boilerplate | |
- name: Checkout repository | |
uses: actions/checkout@v2 | |
# GitHub Actions don't regenerate the test if the key doesn't change, so | |
# we integrate a random UUID into the key to keep them different. | |
# DO NOT CHANGE THIS | |
- name: Generate unique ID | |
id: get-id | |
run: | | |
echo -n ::set-output name=id:: | |
cat /proc/sys/kernel/random/uuid | |
# Actually load the cache. Since we never reuse the key, we need restore-keys | |
# to indicate the prefix of our caches. This loads the newest cache with this | |
# prefix in the key. | |
# | |
# If we want to force regeneration of the cache, increase the number after | |
# *both* instances of "texlive-v" | |
- name: Load cache | |
uses: actions/cache@v2 | |
with: | |
path: ~/texlive | |
key: texlive2022-v0-${{ steps.get-id.outputs.id }} | |
restore-keys: texlive2022-v0- | |
# We need Ghostscript for dvips and XeTeX tests. | |
- run: sudo apt-get update && sudo apt-get install ghostscript | |
- name: Install TeX Live | |
uses: zauguin/install-texlive@v1 | |
with: | |
# List the required TeX Live packages in a separate file to allow reuse in | |
# different workflows. | |
package_file: .github/tl_packages | |
- name: Run l3build | |
run: l3build ctan -q -H --show-log-on-error | |
- name: Archive failed test output | |
if: ${{ always() }} | |
uses: zauguin/l3build-failure-artifacts@v1 | |
with: | |
name: testfiles | |
# Decide how long to keep the test output artifact: | |
retention-days: 3 | |
# Now create the release (this only runs if the previous steps were successful) | |
- name: Create GitHub release | |
uses: ncipollo/release-action@880be3d0a71bc0fa98db60201d2cbdc27324f547 | |
id: release | |
with: | |
artifacts: "*.zip" | |
token: ${{ secrets.GITHUB_TOKEN }} | |
prerelease: ${{ startsWith(github.ref, 'refs/tags/dev-') }} | |
# Determine the name of the tag we are working on. Sadly GH Actions only provides | |
# github.ref which has the name prefixed with github.ref and no way to remove a prefix | |
# in normal expressions, so we need an action for that. | |
- name: Get name | |
uses: frabert/replace-string-action@9b62dfe3ae936b1cc380f2421c8ac9e63a4a3e85 | |
id: name | |
if: ${{ always() }} | |
with: | |
pattern: "^refs/(?:heads|tags)/" | |
string: ${{ github.ref }} | |
replace-with: "" | |
# While the normal notification job only informs about failed runs, we additionally want to notify about successful releases. | |
- name: Send mail | |
# The explicit commit hash ensures that this can't be used by dawidd6 as a | |
# backdoor to execute arbitrary code during our runs. | |
uses: dawidd6/action-send-mail@ceb614a2c5737d913f2d2729e2bcc70ad933382b | |
with: | |
# Currently using my (Marcel's) mail server for sending mails. | |
server_address: typesetting.eu | |
server_port: 587 | |
# These values can be changed in the repository settings. | |
username: ${{secrets.MAIL_USERNAME}} | |
password: ${{secrets.MAIL_PASSWORD}} | |
# If we want to send notifications to additional addresses, at them here as | |
# a comma separated list. | |
to: [email protected] | |
# The name is arbitrary, but if you want to change the address you need to | |
# coordinate it with the administrator of the mail server to allow the account | |
# to send from the mail address. | |
from: LaTeX CI <[email protected]> | |
# Determine the subject and body of the mail. | |
subject: "Version ${{steps.name.outputs.replaced}} of ${{github.repository}} has been released" | |
body: | | |
The release ${{steps.name.outputs.replaced}} has been created for ${{github.repository}}. | |
More information can be found at | |
${{steps.release.outputs.html_url}} | |
- name: Send failure notification | |
uses: dawidd6/action-send-mail@ceb614a2c5737d913f2d2729e2bcc70ad933382b | |
if: ${{ failure() }} | |
with: | |
server_address: typesetting.eu | |
server_port: 587 | |
username: ${{secrets.MAIL_USERNAME}} | |
password: ${{secrets.MAIL_PASSWORD}} | |
to: [email protected] | |
from: LaTeX CI <[email protected]> | |
priority: high | |
# Determine the subject and body of the mail. | |
subject: "Test failure while trying to build release ${{steps.name.outputs.replaced}} in ${{github.repository}}" | |
body: | | |
Test failure for ${{github.repository}} | |
------------------------------------------------------------- | |
On tag: ${{steps.name.outputs.replaced}} (${{github.sha}}) | |
Initiated by: ${{github.actor}} | |
Commit URL: https://github.com/${{github.repository}}/commit/${{github.sha}} | |
More information: https://github.com/${{github.repository}}/actions/runs/${{github.run_id}} |