-
Notifications
You must be signed in to change notification settings - Fork 3
172 lines (165 loc) · 6.37 KB
/
testing.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
# This Source Code Form is licensed MPL-2.0: http://mozilla.org/MPL/2.0
# Linting: xclip -sel c <.github/workflows/testing.yml # https://rhysd.github.io/actionlint/
on:
push:
branches: ['trunk', 'next', 'wip/**']
pull_request:
branches: ['trunk', 'next']
jobs:
Jammy-Docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Fetch last release tag
run: |
git fetch --unshallow
git describe
- name: Prepare CI Image
# Build docker image using latest package as cache
run: |
echo ${{ secrets.GITHUB_TOKEN }} |
time misc/docker_build misc/Dockerfile.jammy ghcr.io/tim-janik/anklang/anklang-ci $GITHUB_ACTOR
- name: Configure Build
run: |
echo 'prefix=/' > config-defaults.mk
echo 'CC=clang' >> config-defaults.mk
echo 'CXX=clang++' >> config-defaults.mk
(umask 0077 && echo "${{ secrets.SSH_ID_GHDOCS4ANKLANG_ECDSA }}" > .git/.ssh_id_ghdocs4anklang)
cat config-defaults.mk
misc/docker_run sudo chown ubuntu:ubuntu -R /anklang/
misc/docker_run misc/version.sh
misc/docker_run bash -c 'source config-defaults.mk && $CXX --version'
- name: Make all pdf check
run: |
misc/docker_run make -j`nproc` all pdf
misc/docker_run make check
- name: Make install
run: |
misc/docker_run make install DESTDIR=inst
misc/docker_run cp -a inst/share/doc/anklang/ out/anklang-docs/
- uses: actions/upload-artifact@v3
if: success()
with:
name: docs
path: |
out/anklang-docs/
- name: Upload tim-janik.github.io/docs/anklang
if: github.ref == 'refs/heads/trunk'
run: |
misc/docker_run env
misc/docker_run doc/poxy.sh -b -u out/anklang-docs/
- name: Cleanup
run: |
misc/docker_clean
Arch-Replay:
runs-on: ubuntu-latest
env:
DOCKER_RUN: docker run --cap-add SYS_PTRACE -v /home/runner/work/anklang/anklang/:/anklang/ -w /anklang/ -t --rm anklang-arch
steps:
- uses: actions/checkout@v3
- name: Fetch last release tag
run: |
git fetch --unshallow
git describe
- name: Prepare CI Image
# Build docker image using latest package as cache
run: |
docker --version
set -x
echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin
docker pull ghcr.io/$GITHUB_REPOSITORY/anklang-ci:arch-latest || true
time docker build -f misc/Dockerfile.arch -t anklang-arch misc/ --cache-from=ghcr.io/$GITHUB_REPOSITORY/anklang-ci:arch-latest
docker tag anklang-arch ghcr.io/$GITHUB_REPOSITORY/anklang-ci:arch-latest
docker push ghcr.io/$GITHUB_REPOSITORY/anklang-ci:arch-latest || true
$DOCKER_RUN env </dev/null |& cat
- name: Configure Build
run: |
echo 'prefix=/' > config-defaults.mk
cat config-defaults.mk
$DOCKER_RUN sudo chown builder:builder -R /anklang/
$DOCKER_RUN misc/version.sh
- name: Make all check
run: |
$DOCKER_RUN make -j`nproc` all
$DOCKER_RUN make check
- name: Make x11test
run: |
$DOCKER_RUN make x11test-v
- uses: actions/upload-artifact@v3
if: always()
with:
name: x11test
path: out/x11test/
- name: Cleanup
run: |
$DOCKER_RUN sudo chown `id -u`:`id -g` -R /anklang/
Lunar-Clang-Tidy:
runs-on: ubuntu-latest
env:
DOCKER_RUN: docker run --cap-add SYS_PTRACE -v /home/runner/work/anklang/anklang/:/anklang/ -w /anklang/ -t --rm anklang-lunar
steps:
- uses: actions/checkout@v3
- name: Fetch last release tag
run: |
git fetch --unshallow
git describe
- name: Prepare CI Image
# Build docker image using latest package as cache
run: |
docker --version
set -x
echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin
docker pull ghcr.io/$GITHUB_REPOSITORY/anklang-ci:lunar-latest || true
time docker build -f misc/Dockerfile.lunar -t anklang-lunar misc/ --cache-from=ghcr.io/$GITHUB_REPOSITORY/anklang-ci:lunar-latest
docker tag anklang-lunar ghcr.io/$GITHUB_REPOSITORY/anklang-ci:lunar-latest
docker push ghcr.io/$GITHUB_REPOSITORY/anklang-ci:lunar-latest || true
$DOCKER_RUN env </dev/null |& cat
- name: Configure Build
# Set ubuntu:ubuntu permissions for docker volume, since Github CI uses something like 1001:123
# Silence host Git about ownership: https://github.com/git/git/commit/8959555cee7ec045958f9b6dd62e541affb7e7d9
# git config --global --add safe.directory '*'
run: |
echo 'prefix=/' > config-defaults.mk
echo 'CC=clang-17' >> config-defaults.mk
echo 'CXX=clang++-17' >> config-defaults.mk
echo 'CLANG_TIDY=clang-tidy-17' >> config-defaults.mk
cat config-defaults.mk
$DOCKER_RUN sudo chown ubuntu:ubuntu -R /anklang/
$DOCKER_RUN misc/version.sh
$DOCKER_RUN bash -c 'source config-defaults.mk && $CXX --version'
- name: Make all check
run: |
$DOCKER_RUN make -j`nproc` all
$DOCKER_RUN make check
- name: Make clang-tidy
run: |
$DOCKER_RUN make -j`nproc` clang-tidy
- uses: actions/upload-artifact@v3
if: success()
with:
name: clang-tidy
path: out/clang-tidy/
- name: Cleanup
run: |
$DOCKER_RUN sudo chown `id -u`:`id -g` -R /anklang/
Ping-IRC:
if: always()
needs: [Jammy-Docs, Arch-Replay, Lunar-Clang-Tidy]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Check Jobs
run: |
echo '${{ needs.Jammy-Docs.result }}' '${{ needs.Arch-Replay.result }}' '${{ needs.Lunar-Clang-Tidy.result }}'
test success = '${{ needs.Jammy-Docs.result }}'
test success = '${{ needs.Arch-Replay.result }}'
test success = '${{ needs.Lunar-Clang-Tidy.result }}'
- name: Ping IRC
if: always()
run: |
R='${{ github.repository }}' && R=${R#*/}
B='${{ github.ref }}' && B=${B#refs/heads/}
S='${{ job.status }}' && URL='${{ github.event.head_commit.url }}'
U='${{ github.actor }}' && B="$(git branch --show-current)"
MSG=$(git log -1 --format='%s')
.github/workflows/ircbot.py -q -j "#Anklang" -R "$R" -U "$U" -D "$B" -S "$S" "$MSG" "$URL"