-
Notifications
You must be signed in to change notification settings - Fork 123
143 lines (125 loc) · 4.41 KB
/
make-releases.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
name: CI
on:
push:
branches:
- master
paths:
- src/**
pull_request:
branches:
- master
paths:
- src/**
workflow_dispatch:
jobs:
build:
name: "NGINX: ${{ matrix.nginx-version }}; libjwt: ${{ matrix.libjwt-version }}"
strategy:
matrix:
# NGINX versions to build/test against
nginx-version: ['1.20.2', '1.22.1', '1.24.0', '1.25.3']
# The following versions of libjwt are compatible:
# * v1.0 - v1.12.0
# * v1.12.1 - v1.14.0
# * v1.15.0+
# At the time of writing this:
# * Debian and Ubuntu's repos have v1.10.2
# * EPEL has v1.12.1
# This compiles against each version prior to a breaking change and the latest release
libjwt-version: ['1.12.0', '1.14.0', '1.15.3']
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
with:
path: 'ngx-http-auth-jwt-module'
# TODO cache the build result so we don't have to do this every time?
- name: Download jansson
uses: actions/checkout@v3
with:
repository: 'akheron/jansson'
ref: 'v2.14'
path: 'jansson'
- name: Build jansson
working-directory: ./jansson
run: |
cmake . -DJANSSON_BUILD_SHARED_LIBS=1 -DJANSSON_BUILD_DOCS=OFF && \
make && \
make check && \
sudo make install
# TODO cache the build result so we don't have to do this every time?
- name: Download libjwt
uses: actions/checkout@v3
with:
repository: 'benmcollins/libjwt'
ref: 'v${{matrix.libjwt-version}}'
path: 'libjwt'
- name: Build libjwt
working-directory: ./libjwt
run: |
autoreconf -i && \
./configure && \
make all && \
sudo make install
- name: Download NGINX
run: |
mkdir nginx
curl -O http://nginx.org/download/nginx-${{matrix.nginx-version}}.tar.gz
tar -xzf nginx-${{matrix.nginx-version}}.tar.gz --strip-components 1 -C nginx
- name: Configure NGINX
working-directory: ./nginx
run: |
BUILD_FLAGS=''
MAJ=$(echo ${{matrix.nginx-version}} | cut -f1 -d.)
MIN=$(echo ${{matrix.nginx-version}} | cut -f2 -d.)
REV=$(echo ${{matrix.nginx-version}} | cut -f3 -d.)
if [ "${MAJ}" -gt 1 ] || [ "${MAJ}" -eq 1 -a "${MIN}" -ge 23 ]; then
BUILD_FLAGS="${BUILD_FLAGS} --with-cc-opt='-DNGX_LINKED_LIST_COOKIES=1'"
fi
./configure --with-compat --add-dynamic-module=../ngx-http-auth-jwt-module ${BUILD_FLAGS}
- name: Make Modules
working-directory: ./nginx
run: make modules
- name: Create release archive
run: |
cp ./nginx/objs/ngx_http_auth_jwt_module.so ./
tar czf ngx_http_auth_jwt_module_libjwt_${{matrix.libjwt-version}}_nginx_${{matrix.nginx-version}}.tgz ngx_http_auth_jwt_module.so
- name: Upload build artifact
uses: actions/upload-artifact@v3
with:
if-no-files-found: error
name: ngx_http_auth_jwt_module_libjwt_${{matrix.libjwt-version}}_nginx_${{matrix.nginx-version}}.tgz
path: ngx_http_auth_jwt_module_libjwt_${{matrix.libjwt-version}}_nginx_${{matrix.nginx-version}}.tgz
update_releases_page:
name: Upload builds to Releases
if: github.event_name != 'pull_request'
needs:
- build
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Set up variables
id: vars
run: |
echo "date_now=$(date --rfc-3339=seconds)" >> "${GITHUB_OUTPUT}"
- name: Download build artifacts from previous jobs
uses: actions/download-artifact@v3
with:
path: artifacts
- name: Upload builds to Releases
uses: ncipollo/release-action@v1
with:
allowUpdates: true
artifactErrorsFailBuild: true
artifacts: artifacts/*/*
body: |
> [!WARNING]
> This is an automatically generated pre-release version of the module, which includes the latest master branch changes.
> Please report any bugs you find to the issue tracker.
- Build Date: `${{ steps.vars.outputs.date_now }}`
- Commit: ${{ github.sha }}
name: 'Development build: ${{ github.ref_name }}@${{ github.sha }}'
prerelease: true
removeArtifacts: true
tag: dev-build