Make Releases #28
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Make Releases | |
on: | |
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.26.2', '1.27.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@v4 | |
with: | |
fetch-depth: 0 | |
path: ngx-http-auth-jwt-module | |
- name: Get Metadata | |
id: meta | |
run: | | |
set -eux | |
cd ngx-http-auth-jwt-module | |
tag=$(git describe --tags --abbrev=0) | |
echo "filename=ngx-http-auth-jwt-module-${tag}_libjwt-${{matrix.libjwt-version}}_nginx-${{matrix.nginx-version}}.tgz" >> $GITHUB_OUTPUT | |
# TODO cache the build result so we don't have to do this every time? | |
- name: Download jansson | |
uses: actions/checkout@v4 | |
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@v4 | |
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 --without-http_rewrite_module --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 ${{steps.meta.outputs.filename}} ngx_http_auth_jwt_module.so | |
- name: Upload Build Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
if-no-files-found: error | |
name: release | |
path: ${{steps.meta.outputs.filename}} | |
release: | |
name: Create/Update Release | |
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 Artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
path: artifacts | |
- name: Flatten Artifacts | |
run: | | |
set -eux | |
cd artifacts | |
find . | |
for d in $(find . -mindepth 1 -type d); do | |
mv "$d/*" . | |
rm -rf $d | |
done | |
find . | |
- name: Upload Builds to Release | |
uses: ncipollo/release-action@v1 | |
with: | |
name: 'Development Build: ${{ github.ref_name }}@${{ github.sha }}' | |
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. | |
- Build Date: `${{ steps.vars.outputs.date_now }}` | |
- Commit: ${{ github.sha }} | |
prerelease: true | |
allowUpdates: true | |
removeArtifacts: true | |
artifactErrorsFailBuild: true | |
artifacts: artifacts/* | |
tag: dev-build |