forked from rrthomas/hpmor
-
Notifications
You must be signed in to change notification settings - Fork 6
180 lines (151 loc) · 4.52 KB
/
check-and-ebook.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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
name: Check and Make eBook
# This workflow runs upon
# - push to main (check, make, publish)
# - create new PR (check, make)
on:
workflow_dispatch:
push:
branches: ["main"]
pull_request:
branches: ["main"]
# permissions:
# contents: read
jobs:
#
# check source code
#
check:
runs-on: ubuntu-24.04
outputs:
cache-hit: ${{ steps.cache-lookup.outputs.cache-hit }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
persist-credentials: false
fetch-depth: 1 # 0 if you want to push to repo
- name: Calculate hash on chapters/*.tex
id: calculate-hash
run: |
echo "hash=${{ hashFiles('chapters/*.tex') }}" >> $GITHUB_OUTPUT
touch hash-chapters.txt
- name: Cache lookup
id: cache-lookup
uses: actions/cache@v4
with:
path: hash-chapters.txt
key: chapter-hash-for-ebook-${{ github.ref_name }}-${{ steps.calculate-hash.outputs.hash }}
- name: Python set up
uses: actions/setup-python@v5
with:
python-version: "3.12"
# no packages besides pytest installed, so no caching needed
# cache: "pip"
- name: Run pytest unittests
run: |
pip install pytest
pytest
- name: Check chapters for known issues
run: python3 -O scripts/check_chapters.py
- name: Check pre-commit hooks
uses: pre-commit/[email protected]
#
# make eBook
#
make:
needs: check
# do not run for unchanged tex files
if: needs.check.outputs.cache-hit != 'true'
runs-on: ubuntu-24.04
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
persist-credentials: false
fetch-depth: 1 # 0 if you want to push to repo
- name: Python set up
uses: actions/setup-python@v5
with:
python-version: "3.12"
# no packages installed, so no caching
# cache: "pip"
# - name: setup environment to DE lang
# run: |
# cd /usr/share/locales
# sudo ./install-language-pack de_DE.UTF-8
- name: ls before
run: |
pwd
ls -l
- name: Install apt packages using cache
uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: texlive-extra-utils pandoc calibre imagemagick ghostscript
version: 1.0
# execute_install_scripts: true
- name: Install ImageMagick to fix caching issue
# since cache does not properly work / "convert" not found
run: |
sudo apt-get install imagemagick
- name: Print versions
run: |
cat /etc/os-release
# xelatex -v
# latexmk -v
calibre --version
pandoc --version
python3 --version
- name: Download previous hpmor.html
run: |
wget --quiet https://github.com/entorb/hpmor-de/releases/download/WorkInProgress/hpmor.html -O hpmor-prev.html
- name: Make eBooks
run: |
wget --quiet https://github.com/entorb/hpmor-de/releases/download/WorkInProgress/hpmor.pdf -O hpmor.pdf
sh scripts/make_ebooks.sh > /dev/null
cp hpmor-prev.html hpmor.html
echo "Test" >> hpmor.html
- name: Compare to previous hpmor.html
run: |
diff -u hpmor-prev.html hpmor.html > hpmor-html-diff.log || :
rm hpmor-prev.html
- name: ls after
run: |
pwd
ls -l
- name: Upload eBooks as artifact
uses: actions/upload-artifact@v4
with:
name: ebooks
path: |
./hpmor.docx
./hpmor.html
./hpmor-html-diff.log
./hpmor.epub
./hpmor.mobi
./hpmor.fb2
retention-days: 14
#
# make upload to release WorkInProgress
#
upload:
needs: make
# only for push into main branch
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
runs-on: ubuntu-24.04
steps:
- name: Download eBooks artifact
uses: actions/download-artifact@v4
with:
name: ebooks
- name: Publish eBooks to release WorkInProgress
uses: softprops/action-gh-release@v2
with:
tag_name: WorkInProgress
prerelease: true
files: |
./hpmor.docx
./hpmor.html
./hpmor-html-diff.log
./hpmor.epub
./hpmor.mobi
./hpmor.fb2