Initial commit.
gitea/icedream/nginx-mod-build-lua/master There was a failure building this commit
Details
gitea/icedream/nginx-mod-build-lua/master There was a failure building this commit
Details
commit
bab5a9cf53
|
@ -0,0 +1,55 @@
|
||||||
|
def MODULE_GIT_URL="https://github.com/openresty/lua-nginx-module.git"
|
||||||
|
|
||||||
|
pipeline {
|
||||||
|
agent none
|
||||||
|
parallel {
|
||||||
|
stage("Build on nginx:stable-alpine") {
|
||||||
|
agent {
|
||||||
|
docker {
|
||||||
|
image 'nginx:stable-alpine'
|
||||||
|
label 'linux && docker && amd64'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
steps {
|
||||||
|
sh 'apk add --no-cache curl gnupg1'
|
||||||
|
sh './download-nginx.sh'
|
||||||
|
|
||||||
|
dir('module') {
|
||||||
|
git changelog: false, url: MODULE_GIT_URL
|
||||||
|
}
|
||||||
|
|
||||||
|
/* BUILD DEPENDENCIES */
|
||||||
|
sh 'apk add lua5.1-dev luajit-dev'
|
||||||
|
// FIXME - workaround wrong include path for luajit
|
||||||
|
sh 'echo "#include <luajit-2.1/luajit.h>" > /usr/include/luajit.h'
|
||||||
|
|
||||||
|
sh './build-alpine.sh'
|
||||||
|
archiveArtifacts "*.so,required_packages.txt"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
stage("Build on nginx:mainline-alpine") {
|
||||||
|
agent {
|
||||||
|
docker {
|
||||||
|
image 'nginx:mainline-alpine'
|
||||||
|
label 'linux && docker && amd64'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
steps {
|
||||||
|
sh 'apk add --no-cache curl gnupg1'
|
||||||
|
sh './download-nginx.sh'
|
||||||
|
|
||||||
|
dir('module') {
|
||||||
|
git changelog: false, url: MODULE_GIT_URL
|
||||||
|
}
|
||||||
|
|
||||||
|
/* BUILD DEPENDENCIES */
|
||||||
|
sh 'apk add lua5.1-dev luajit-dev'
|
||||||
|
// FIXME - workaround wrong include path for luajit
|
||||||
|
sh 'echo "#include <luajit-2.1/luajit.h>" > /usr/include/luajit.h'
|
||||||
|
|
||||||
|
sh './build-alpine.sh'
|
||||||
|
archiveArtifacts "*.so,required_packages.txt"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,79 @@
|
||||||
|
#!/bin/sh -e
|
||||||
|
|
||||||
|
resolve_package() {
|
||||||
|
for pkg in "$@"
|
||||||
|
do
|
||||||
|
apk info "$pkg" | head -n1 | awk '{print $1}'
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
strip_version_from_pkg_name() {
|
||||||
|
for pkg in "$@"
|
||||||
|
do
|
||||||
|
echo "$pkg" | sed 's,-[0-9a-zA-Z.]\+-r[0-9]\+$,,'
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
find_runtime_dependency_pkgs() {
|
||||||
|
for p in "$@"
|
||||||
|
do
|
||||||
|
ldd "$p" 2>/dev/null |\
|
||||||
|
grep '=> .\+\.so' |\
|
||||||
|
awk '{print $3}' |\
|
||||||
|
sort |\
|
||||||
|
uniq |\
|
||||||
|
while read -r so
|
||||||
|
do
|
||||||
|
apk info --who-owns $so
|
||||||
|
done |\
|
||||||
|
awk '{print $5}' |\
|
||||||
|
awk -F- '{print $1}'
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
find_devel_pkg() {
|
||||||
|
# shellcheck disable=SC2046
|
||||||
|
strip_version_from_pkg_name $(
|
||||||
|
apk list -d "$1" |\
|
||||||
|
grep dev |\
|
||||||
|
sort |\
|
||||||
|
uniq |\
|
||||||
|
awk '{print $1}'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
# retrieve configure args of already packaged nginx
|
||||||
|
NGINX_CONFIGURE_ARGS="$(nginx -V 2>&1 | grep -o '^configure arguments: .*$' | sed 's,^configure arguments: ,,g')"
|
||||||
|
# remove preconfigured dynamic modules so only ours will be placed in the objs folder
|
||||||
|
NGINX_CONFIGURE_ARGS="$(printf '%s' "$NGINX_CONFIGURE_ARGS" | sed 's,--with-[^=]\+module=dynamic,,g')"
|
||||||
|
|
||||||
|
apk update
|
||||||
|
|
||||||
|
# Determine all dependencies used for the packaged nginx and install them
|
||||||
|
DEPENDENCIES="$(
|
||||||
|
find_runtime_dependency_pkgs /usr/lib/nginx/modules/*.so
|
||||||
|
# shellcheck disable=SC2046
|
||||||
|
strip_version_from_pkg_name $(resolve_package $(apk info -R nginx | tail -n+2))
|
||||||
|
)"
|
||||||
|
DEVPACKAGES="$(for dep in $DEPENDENCIES; do find_devel_pkg "$dep"; done | sort | uniq)"
|
||||||
|
apk add --virtual .build-deps \
|
||||||
|
gcc \
|
||||||
|
libc-dev \
|
||||||
|
make \
|
||||||
|
linux-headers \
|
||||||
|
$DEVPACKAGES
|
||||||
|
tar -zx -f nginx.tar.gz
|
||||||
|
rm nginx.tar.gz
|
||||||
|
cd nginx-*/
|
||||||
|
|
||||||
|
./configure $NGINX_CONFIGURE_ARGS --add-dynamic-module=../module --with-debug
|
||||||
|
make modules
|
||||||
|
|
||||||
|
. /etc/os_release
|
||||||
|
|
||||||
|
find_runtime_dependency_pkgs objs/*.so > ../required_packages.txt
|
||||||
|
for so in objs/*.so
|
||||||
|
do
|
||||||
|
name="$(basename "$so" .so)-$ID$VERSION_ID-nginx$NGINX_VERSION.so"
|
||||||
|
install -m644 "$so" "../$name"
|
||||||
|
done
|
|
@ -0,0 +1,24 @@
|
||||||
|
#!/bin/sh -ex
|
||||||
|
NGINX_GPG_KEYS="B0F4253373F8F6F510D42178520A9993A1C052F8"
|
||||||
|
|
||||||
|
# NGINX_VERSION is provided by the Nginx Docker image as env var
|
||||||
|
NGINX_URL="https://nginx.org/download/nginx-$NGINX_VERSION.tar.gz"
|
||||||
|
|
||||||
|
curl -fSL "$NGINX_URL" -o nginx.tar.gz
|
||||||
|
curl -fSL "$NGINX_URL.asc" -o nginx.tar.gz.asc
|
||||||
|
|
||||||
|
# GnuPG download integrity check
|
||||||
|
GNUPGHOME="$(mktemp -d)"
|
||||||
|
export GNUPGHOME
|
||||||
|
for server in \
|
||||||
|
ha.pool.sks-keyservers.net \
|
||||||
|
hkp://keyserver.ubuntu.com:80 \
|
||||||
|
hkp://p80.pool.sks-keyservers.net:80 \
|
||||||
|
pgp.mit.edu \
|
||||||
|
; do
|
||||||
|
echo "Fetching GPG key $NGINX_GPG_KEYS from $server"
|
||||||
|
gpg --keyserver "$server" --keyserver-options timeout=10 --recv-keys "$NGINX_GPG_KEYS" && found=yes && break
|
||||||
|
done
|
||||||
|
test -z "$found" && echo >&2 "error: failed to fetch GPG key $GPG_KEYS" && exit 1
|
||||||
|
gpg --batch --verify nginx.tar.gz.asc nginx.tar.gz
|
||||||
|
rm -rf "$GNUPGHOME" nginx.tar.gz.asc
|
Loading…
Reference in New Issue