-
-
Notifications
You must be signed in to change notification settings - Fork 272
122 lines (118 loc) · 5.39 KB
/
deploy.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
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.
# 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}}
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}}