-
Notifications
You must be signed in to change notification settings - Fork 3
141 lines (123 loc) · 4.96 KB
/
ci.yml
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
on:
push:
branches:
- main
pull_request:
branches:
- main
name: Build and deploy sites
jobs:
build:
name: Build site and generate HTML
runs-on: ubuntu-latest
outputs:
ref-url: ${{ steps.deploy.outputs.deploy-url }}
steps:
- name: Install deps for figures
run: |
sudo apt update && sudo apt install -y texlive-latex-base texlive-pictures texlive-luatex texlive-latex-extra fonts-firacode texlive-fonts-extra poppler-utils
- name: Install elan
run: |
set -o pipefail
curl -sSfL https://github.com/leanprover/elan/releases/download/v3.0.0/elan-x86_64-unknown-linux-gnu.tar.gz | tar xz
./elan-init -y --default-toolchain none
echo "$HOME/.elan/bin" >> "$GITHUB_PATH"
- uses: actions/checkout@v4
- name: Lean Version
run: |
lean --version
- name: Cache .lake
uses: actions/cache@v3
with:
path: .lake
key: ${{ runner.os }}-${{ hashFiles('lean-toolchain') }}-${{ hashFiles('lake-manifest.json') }}-${{ hashFiles('lakefile.lean') }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-${{ hashFiles('lean-toolchain') }}-${{ hashFiles('lake-manifest.json') }}-${{ hashFiles('lakefile.lean') }}-${{ github.sha }}
${{ runner.os }}-${{ hashFiles('lean-toolchain') }}-${{ hashFiles('lake-manifest.json') }}-${{ hashFiles('lakefile.lean') }}
${{ runner.os }}-${{ hashFiles('lean-toolchain') }}-${{ hashFiles('lake-manifest.json') }}-
${{ runner.os }}-${{ hashFiles('lean-toolchain') }}-
- name: Build
run: |
lake build
- name: Generate HTML
run: |
lake exe generate-manual --depth 2 --with-word-count "words.txt"
- name: Report word count
run: |
echo "Word Counts"
echo "-----------"
cat words.txt
- name: Save word count
run: |
echo "# Word Counts" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
cat words.txt >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
- name: Offline link checker
uses: lycheeverse/[email protected]
with:
args: --base './_out/html-multi/' --no-progress --offline './_out/html-multi/**/*.html'
# deploy-alias computes a stable, but difficult-to-guess, URL component
# for the PR preview. This is so we can have a stable name to use for
# feedback on draft material, but at the same time we avoid having
# something guessable by outsiders.
#
# SALT is a repository secret that contains some arbitrary string.
- id: deploy-alias
uses: actions/github-script@v7
name: Compute Alias
with:
script: |
var crypto = require('crypto');
if (process.env.PR && process.env.SALT) {
var hash = crypto.createHash('sha256')
.update(process.env.PR)
.update(process.env.SALT)
.digest('hex')
.slice(0,8);
return `pr-${process.env.PR}-${hash}`
}
env:
PR: ${{ github.event.number }}
SALT: ${{ secrets.SALT }}
# deploy-info computes metadata that's shown in the Netlify interface
# about the deployment (for non-PR deploys)
- id: deploy-info
name: Compute Deployment Metadata
if: github.event_name != 'pull_request'
run: |
set -e
echo "message=$(git log -1 --pretty=format:"%s")" >> "$GITHUB_OUTPUT"
- name: Deploy
id: deploy
uses: nwtgck/[email protected]
with:
publish-dir: _out/html-multi
production-branch: main
github-token: ${{ secrets.GITHUB_TOKEN }}
deploy-message: |
${{ github.event_name == 'pull_request' && format('pr#{0}: {1}', github.event.number, github.event.pull_request.title) || format('ref/{0}: {1}', github.ref_name, steps.deploy-info.outputs.message) }}
alias: ${{ steps.deploy-alias.outputs.result }}
enable-commit-comment: false
enable-pull-request-comment: false
github-deployment-environment: |
${{ github.event_name == 'pull_request' && format('lean-ref-pr-#{0}', github.event.number) || 'lean-ref' }}
fails-without-credentials: true
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: "447031bf-9a96-4cee-831b-1f73599a7cb2"
check-links:
name: Check links
runs-on: ubuntu-latest
needs: [build]
steps:
- uses: actions/checkout@v4
with:
sparse-checkout: |
.skip-link-check
- name: Online link checker
uses: filiph/[email protected]
continue-on-error: true
with:
arguments: --skip-file .skip-link-check -e ${{ needs.build.outputs.ref-url }}