1
+ name : Build font and specimen
2
+
3
+ on : push
4
+
5
+ jobs :
6
+ build :
7
+ name : Build and test
8
+ runs-on : ubuntu-latest
9
+ steps :
10
+ - uses : actions/checkout@v4
11
+ - name : Set up Python 3.10
12
+ uses : actions/setup-python@v5
13
+ with :
14
+ python-version : " 3.10"
15
+ - name : Install sys tools/deps
16
+ run : |
17
+ sudo apt-get update
18
+ sudo apt-get install ttfautohint
19
+ sudo snap install yq
20
+ - uses : actions/cache@v4
21
+ with :
22
+ path : ./venv/
23
+ key : ${{ runner.os }}-venv-${{ hashFiles('**/requirements*.txt') }}
24
+ restore-keys : |
25
+ ${{ runner.os }}-venv-
26
+ - name : gen zip file name
27
+ id : zip-name
28
+ shell : bash
29
+ # Set the archive name to repo name + "-assets" e.g "MavenPro-assets"
30
+ run : echo "ZIP_NAME=$(echo '${{ github.repository }}' | awk -F '/' '{print $2}')-fonts" >> $GITHUB_ENV
31
+
32
+ # If a new release is cut, use the release tag to auto-bump the source files
33
+ # - name: Bump release
34
+ # if: github.event_name == 'release'
35
+ # run: |
36
+ # . venv/bin/activate
37
+ # SRCS=$(yq e ".sources[]" sources/config.yaml)
38
+ # TAG_NAME=${GITHUB_REF/refs\/tags\//}
39
+ # echo "Bumping $SRCS to $TAG_NAME"
40
+ # for src in $SRCS
41
+ # do
42
+ # bumpfontversion sources/$src --new-version $TAG_NAME;
43
+ # done
44
+
45
+ - name : Build font
46
+ run : make build
47
+ - name : Check with fontbakery
48
+ run : make test
49
+ continue-on-error : true
50
+ - name : proof
51
+ run : make proof
52
+ - name : setup site
53
+ run : cp scripts/index.html out/index.html
54
+ - name : Deploy
55
+ uses : peaceiris/actions-gh-pages@v4
56
+ if : ${{ github.ref == 'refs/heads/main' }}
57
+ with :
58
+ github_token : ${{ secrets.GITHUB_TOKEN }}
59
+ publish_dir : ./out
60
+ - name : Archive artifacts
61
+ uses : actions/upload-artifact@v4
62
+ with :
63
+ name : ${{ env.ZIP_NAME }}
64
+ path : |
65
+ fonts
66
+ out
67
+ outputs :
68
+ zip_name : ${{ env.ZIP_NAME }}
69
+
70
+ # There are two ways a release can be created: either by pushing a tag, or by
71
+ # creating a release from the GitHub UI. Pushing a tag does not automatically
72
+ # create a release, so we have to do that ourselves. However, creating a
73
+ # release from the GitHub UI *does* push a tag, and we don't want to create
74
+ # a new release in that case because one already exists!
75
+
76
+ release :
77
+ name : Create and populate release
78
+ needs : build
79
+ runs-on : ubuntu-latest
80
+ if : contains(github.ref, 'refs/tags/')
81
+ env :
82
+ ZIP_NAME : ${{ needs.build.outputs.zip_name }}
83
+ GH_TOKEN : ${{ github.token }}
84
+ steps :
85
+ - uses : actions/checkout@v4
86
+ - name : Download font artefact files
87
+ uses : actions/download-artifact@v4
88
+ with :
89
+ name : ${{ env.ZIP_NAME }}
90
+ path : ${{ env.ZIP_NAME }}
91
+ - name : Copy DESCRIPTION.en_us.html to artefact directory
92
+ run : cp documentation/DESCRIPTION.en_us.html ${{ env.ZIP_NAME }}/DESCRIPTION.en_us.html
93
+ - name : Copy ARTICLE.en_us.html to artefact directory
94
+ run : cp documentation/ARTICLE.en_us.html ${{ env.ZIP_NAME }}/ARTICLE.en_us.html
95
+ continue-on-error : true
96
+ - name : Copy OFL.txt to artefact directory
97
+ run : cp OFL.txt ${{ env.ZIP_NAME }}/OFL.txt
98
+ - name : Remove proof/fontbakery stuff from release
99
+ run : rm -rf ${{ env.ZIP_NAME }}/out
100
+ - name : gen release file name
101
+ shell : bash
102
+ run : echo "RELEASE_ZIP_NAME=$(echo '${{ github.repository }}' | awk -F '/' '{print $2}')-${{github.ref_name}}" >> $GITHUB_ENV
103
+ - name : Create release bundle
104
+ run : mv ${{ env.ZIP_NAME }} ${{ env.RELEASE_ZIP_NAME }}; zip -r ${{ env.RELEASE_ZIP_NAME }}.zip ${{ env.RELEASE_ZIP_NAME }}
105
+ - name : Check for release
106
+ id : create_release
107
+ run : |
108
+ if ! gh release view ${{ github.ref_name }}; then
109
+ git show -s --format=%B ${{ github.ref_name }} | tail -n +4 | gh release create ${{ github.ref_name }} -t ${{ github.ref_name }} -F -
110
+ fi
111
+ - name : Populate release
112
+ run : |
113
+ gh release upload ${{ github.ref_name }} ${{ env.RELEASE_ZIP_NAME }}.zip --clobber
114
+ - name : Set release live
115
+ run : |
116
+ gh release edit ${{ github.ref_name }} --draft=false
0 commit comments