Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 65 additions & 16 deletions .github/workflows/package-apisix-runtime-deb-ubuntu20.04.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,41 +13,90 @@ on:
- '*.md'
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
inputs:
runtime_version:
description: "apisix-runtime version to stamp into the package"
required: false
default: "1.0.1"
apisix_nginx_module_ver:
description: "apisix-nginx-module tag or branch (empty = the pinned default)"
required: false
default: ""
iteration:
description: "package revision, e.g. 0 or 0mybranch"
required: false
default: "0"
image_base:
description: "base image"
required: false
default: "ubuntu"
image_tag:
description: "base image tag"
required: false
default: "24.04"

jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 60
timeout-minutes: 90
env:
BUILD_APISIX_RUNTIME_VERSION: 1.0.1
BUILD_APISIX_RUNTIME_VERSION: ${{ inputs.runtime_version || '1.0.1' }}
APISIX_NGINX_MODULE_VER: ${{ inputs.apisix_nginx_module_ver || '' }}
ITERATION: ${{ inputs.iteration || '0' }}
IMAGE_BASE: ${{ inputs.image_base || 'ubuntu' }}
IMAGE_TAG: ${{ inputs.image_tag || '24.04' }}
BUILDKIT_PROGRESS: plain
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4

- name: validate inputs
run: |
if [[ ! "$BUILD_APISIX_RUNTIME_VERSION" =~ ^[0-9A-Za-z._-]+$ ]]; then
echo "invalid runtime_version: $BUILD_APISIX_RUNTIME_VERSION" >&2
exit 1
fi
if [[ -n "$APISIX_NGINX_MODULE_VER" && ! "$APISIX_NGINX_MODULE_VER" =~ ^[A-Za-z0-9._/-]+$ ]]; then
echo "invalid apisix_nginx_module_ver: $APISIX_NGINX_MODULE_VER" >&2
exit 1
fi
if [[ ! "$ITERATION" =~ ^[0-9A-Za-z._+-]+$ ]]; then
echo "invalid iteration: $ITERATION" >&2
exit 1
fi

- name: install dependencies
run: |
sudo apt-get install -y make ruby ruby-dev rubygems build-essential

- name: build apisix-runtime deb
run: |
make package type=deb app=apisix-runtime runtime_version=${BUILD_APISIX_RUNTIME_VERSION} image_base=ubuntu image_tag=24.04

- name: run ubuntu 24.04 docker and mapping apisix-runtime deb into container
run: |
docker run -itd -v /home/runner/work/apisix-build-tools/apisix-build-tools/output:/output --name ubuntu24.04Instance --net="host" docker.io/ubuntu:24.04 /bin/bash
make package type=deb app=apisix-runtime \
runtime_version="$BUILD_APISIX_RUNTIME_VERSION" \
apisix_nginx_module_ver="$APISIX_NGINX_MODULE_VER" \
iteration="$ITERATION" \
image_base="$IMAGE_BASE" image_tag="$IMAGE_TAG"

- name: install deb in container
- name: locate the built deb
run: |
docker exec ubuntu24.04Instance bash -c "dpkg -i /output/apisix-runtime_${BUILD_APISIX_RUNTIME_VERSION}-0~ubuntu24.04_amd64.deb"
deb=$(ls output/apisix-runtime_*.deb)
echo "DEB_PATH=$deb" >> "$GITHUB_ENV"
echo "DEB_NAME=$(basename "$deb")" >> "$GITHUB_ENV"

- name: check and ensure apisix-runtime is installed
- name: install the deb in a clean container and check the runtime version
run: |
export APISIX_RUNTIME_VER=$(docker exec ubuntu24.04Instance bash -c "openresty -V" 2>&1 | awk '/-O2 -DAPISIX_RUNTIME_VER=/{print $5}' | awk -v FS="=" '{print $2}')
if [ "$APISIX_RUNTIME_VER" != "${BUILD_APISIX_RUNTIME_VERSION}" ]; then exit 1; fi
docker run --rm -v "$PWD/output:/output" "$IMAGE_BASE:$IMAGE_TAG" bash -c '
set -e
dpkg -i "/output/$1"
openresty -V 2>&1 | tr " " "\n" | grep -o "APISIX_RUNTIME_VER=.*" > /tmp/ver
cat /tmp/ver
test "$(cut -d= -f2 /tmp/ver)" = "$2"
' _ "$DEB_NAME" "$BUILD_APISIX_RUNTIME_VERSION"

- name: Publish Artifact
uses: actions/upload-artifact@v4.0.0
with:
name: apisix-runtime_${{ env.BUILD_APISIX_RUNTIME_VERSION }}-0~ubuntu24.04_amd64.deb
path: output/apisix-runtime_${{ env.BUILD_APISIX_RUNTIME_VERSION }}-0~ubuntu24.04_amd64.deb
retention-days: 5
name: ${{ env.DEB_NAME }}
path: ${{ env.DEB_PATH }}
retention-days: 14
if-no-files-found: error
5 changes: 5 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ openresty="apisix-runtime"
artifact="0"
runtime_version=0
build_latest=
### git ref (tag or branch) of apisix-nginx-module to build against;
### empty keeps the default pinned in build-apisix-runtime.sh
apisix_nginx_module_ver=
apisix_repo="https://github.com/apache/apisix"
apisix_runtime_repo="https://github.com/api7/apisix-build-tools.git"
dashboard_repo="https://github.com/apache/apisix-dashboard"
Expand Down Expand Up @@ -101,6 +104,7 @@ define build_runtime
--build-arg IMAGE_BASE=$(image_base) \
--build-arg IMAGE_TAG=$(image_tag) \
--build-arg BUILD_LATEST=$(build_latest) \
--build-arg APISIX_NGINX_MODULE_VER=$(apisix_nginx_module_ver) \
--build-arg CODE_PATH=$(4) \
--platform $(arch) \
-f ./dockerfiles/Dockerfile.$(2).$(3) .
Expand All @@ -114,6 +118,7 @@ define build_runtime
--build-arg IMAGE_BASE=$(image_base) \
--build-arg IMAGE_TAG=$(image_tag) \
--build-arg BUILD_LATEST=$(build_latest) \
--build-arg APISIX_NGINX_MODULE_VER=$(apisix_nginx_module_ver) \
--build-arg CODE_PATH=$(4) \
--load \
--cache-from=$(cache_from) \
Expand Down
17 changes: 10 additions & 7 deletions build-apisix-runtime.sh
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ if [[ ! "$apisix_nginx_module_ver" =~ ^[A-Za-z0-9._/-]+$ ]]; then
echo "ERROR: invalid apisix_nginx_module_ver: $apisix_nginx_module_ver" >&2
exit 1
fi
# a branch ref carries slashes, which would turn the checkout into a nested
# directory and break every path relative to it
apisix_nginx_module_dir="apisix-nginx-module-${apisix_nginx_module_ver//\//-}"
wasm_nginx_module_ver="0.7.0"
lua_var_nginx_module_ver="v0.5.3"
lua_resty_events_ver="0.2.0"
Expand Down Expand Up @@ -111,11 +114,11 @@ else
fi

if [ "$repo" == apisix-nginx-module ]; then
cp -r "$prev_workdir" "./apisix-nginx-module-${apisix_nginx_module_ver}"
cp -r "$prev_workdir" "./${apisix_nginx_module_dir}"
else
git clone --depth=1 -b "$apisix_nginx_module_ver" -- \
https://github.com/api7/apisix-nginx-module.git \
"apisix-nginx-module-${apisix_nginx_module_ver}"
"${apisix_nginx_module_dir}"
fi

if [ "$repo" == wasm-nginx-module ]; then
Expand All @@ -138,7 +141,7 @@ cd ngx_multi_upstream_module-${ngx_multi_upstream_module_ver} || exit 1
./patch.sh ../openresty-${OPENRESTY_VERSION}
cd ..

cd "apisix-nginx-module-${apisix_nginx_module_ver}/patch" || exit 1
cd "${apisix_nginx_module_dir}/patch" || exit 1
./patch.sh ../../openresty-${OPENRESTY_VERSION}
cd ../..

Expand Down Expand Up @@ -171,9 +174,9 @@ fi
$debug_args \
--add-module=../mod_dubbo-${mod_dubbo_ver} \
--add-module=../ngx_multi_upstream_module-${ngx_multi_upstream_module_ver} \
--add-module="../apisix-nginx-module-${apisix_nginx_module_ver}" \
--add-module="../apisix-nginx-module-${apisix_nginx_module_ver}/src/stream" \
--add-module="../apisix-nginx-module-${apisix_nginx_module_ver}/src/meta" \
--add-module="../${apisix_nginx_module_dir}" \
--add-module="../${apisix_nginx_module_dir}/src/stream" \
--add-module="../${apisix_nginx_module_dir}/src/meta" \
--add-module=../wasm-nginx-module-${wasm_nginx_module_ver} \
--add-module=../lua-var-nginx-module-${lua_var_nginx_module_ver} \
--add-module=../lua-resty-events-${lua_resty_events_ver} \
Expand Down Expand Up @@ -220,7 +223,7 @@ sudo install -d "$OR_PREFIX"/lualib/resty/events/compat/
sudo install -m 644 lualib/resty/events/compat/*.lua "$OR_PREFIX"/lualib/resty/events/compat/
cd ..

cd "apisix-nginx-module-${apisix_nginx_module_ver}" || exit 1
cd "${apisix_nginx_module_dir}" || exit 1
sudo OPENRESTY_PREFIX="$OR_PREFIX" make install
cd ..

Expand Down
3 changes: 3 additions & 0 deletions dockerfiles/Dockerfile.apisix-runtime.deb
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,16 @@ ARG RUNTIME_VERSION
ARG IMAGE_BASE
ARG IMAGE_TAG
ARG BUILD_LATEST
ARG APISIX_NGINX_MODULE_VER
ARG CODE_PATH

ENV IMAGE_BASE=${IMAGE_BASE}
ENV IMAGE_TAG=${IMAGE_TAG}
ENV version=${VERSION}
ENV runtime_version=${RUNTIME_VERSION}
ENV build_latest=${BUILD_LATEST:-}
# empty keeps the default pinned in build-apisix-runtime.sh
ENV apisix_nginx_module_ver=${APISIX_NGINX_MODULE_VER:-}

COPY ${CODE_PATH} ./

Expand Down
3 changes: 3 additions & 0 deletions dockerfiles/Dockerfile.apisix-runtime.rpm
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,14 @@ ARG RUNTIME_VERSION
ARG IMAGE_BASE
ARG IMAGE_TAG
ARG CODE_PATH
ARG APISIX_NGINX_MODULE_VER

ENV IMAGE_BASE=${IMAGE_BASE}
ENV IMAGE_TAG=${IMAGE_TAG}
ENV version=${VERSION}
ENV runtime_version=${RUNTIME_VERSION}
# empty keeps the default pinned in build-apisix-runtime.sh
ENV apisix_nginx_module_ver=${APISIX_NGINX_MODULE_VER:-}

COPY ${CODE_PATH} ./

Expand Down
Loading