[backport -> release/3.1.x] chore: improve backporting process #29303
Workflow file for this run
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: Build & Test | |
on: | |
pull_request: | |
paths-ignore: | |
# ignore top-level markdown files (CHANGELOG.md, README.md, etc.) | |
- '*.md' | |
push: | |
paths-ignore: | |
# ignore top-level markdown files (CHANGELOG.md, README.md, etc.) | |
- '*.md' | |
branches: | |
- master | |
- release/* | |
- test-please/* | |
# cancel previous runs if new commits are pushed to the PR, but run for each commit on master | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
name: Build dependencies | |
runs-on: ubuntu-22.04 | |
env: | |
DOWNLOAD_ROOT: $HOME/download-root | |
steps: | |
- name: Checkout Kong source code | |
uses: actions/checkout@v3 | |
- name: Set environment variables | |
run: | | |
grep -v '^#' .requirements >> $GITHUB_ENV | |
echo "INSTALL_ROOT=$HOME/install-root" >> $GITHUB_ENV | |
echo "DOWNLOAD_ROOT=$HOME/download-root" >> $GITHUB_ENV | |
echo "LD_LIBRARY_PATH=$INSTALL_ROOT/openssl/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV | |
- name: Lookup build cache | |
uses: actions/cache@v3 | |
id: cache-deps | |
with: | |
path: ${{ env.INSTALL_ROOT }} | |
key: ${{ hashFiles('.ci/setup_env_github.sh') }}-${{ hashFiles('.github/workflows/build_and_test.yml') }}-${{ hashFiles('.requirements') }}-${{ hashFiles('kong-*.rockspec') }}-${{ hashFiles('Makefile') }} | |
- name: Checkout kong-build-tools | |
if: steps.cache-deps.outputs.cache-hit != 'true' | |
uses: actions/checkout@v3 | |
with: | |
repository: Kong/kong-build-tools | |
path: kong-build-tools | |
ref: ${{ env.KONG_BUILD_TOOLS_VERSION }} | |
- name: Checkout go-pluginserver | |
if: steps.cache-deps.outputs.cache-hit != 'true' | |
uses: actions/checkout@v3 | |
with: | |
repository: Kong/go-pluginserver | |
path: go-pluginserver | |
- name: Add to Path | |
if: steps.cache-deps.outputs.cache-hit != 'true' | |
run: echo "$INSTALL_ROOT/openssl/bin:$INSTALL_ROOT/openresty/nginx/sbin:$INSTALL_ROOT/openresty/bin:$INSTALL_ROOT/luarocks/bin:$GITHUB_WORKSPACE/kong-build-tools/openresty-build-tools" >> $GITHUB_PATH | |
- name: Install packages | |
if: steps.cache-deps.outputs.cache-hit != 'true' | |
run: sudo apt update && sudo apt install libyaml-dev valgrind libprotobuf-dev | |
- name: Build Kong dependencies | |
if: steps.cache-deps.outputs.cache-hit != 'true' | |
run: | | |
source .ci/setup_env_github.sh | |
make dev | |
lint-doc-and-unit-tests: | |
name: Lint, Doc and Unit tests | |
runs-on: ubuntu-22.04 | |
needs: build | |
env: | |
KONG_TEST_PG_DATABASE: kong | |
KONG_TEST_PG_USER: kong | |
services: | |
postgres: | |
image: postgres:13 | |
env: | |
POSTGRES_USER: kong | |
POSTGRES_DB: kong | |
POSTGRES_HOST_AUTH_METHOD: trust | |
ports: | |
- 5432:5432 | |
options: --health-cmd pg_isready --health-interval 5s --health-timeout 5s --health-retries 8 | |
steps: | |
- name: Set environment variables | |
run: | | |
echo "INSTALL_ROOT=$HOME/install-root" >> $GITHUB_ENV | |
echo "DOWNLOAD_ROOT=$HOME/download-root" >> $GITHUB_ENV | |
echo "LD_LIBRARY_PATH=$INSTALL_ROOT/openssl/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV | |
- name: Checkout Kong source code | |
uses: actions/checkout@v3 | |
- name: Lookup build cache | |
uses: actions/cache@v3 | |
id: cache-deps | |
with: | |
path: ${{ env.INSTALL_ROOT }} | |
key: ${{ hashFiles('.ci/setup_env_github.sh') }}-${{ hashFiles('.github/workflows/build_and_test.yml') }}-${{ hashFiles('.requirements') }}-${{ hashFiles('kong-*.rockspec') }}-${{ hashFiles('Makefile') }} | |
- name: Add to Path | |
run: echo "$INSTALL_ROOT/openssl/bin:$INSTALL_ROOT/openresty/nginx/sbin:$INSTALL_ROOT/openresty/bin:$INSTALL_ROOT/luarocks/bin:$GITHUB_WORKSPACE/kong-build-tools/openresty-build-tools" >> $GITHUB_PATH | |
- name: Check autodoc generation | |
run: | | |
eval `luarocks path` | |
scripts/autodoc | |
- name: Check Admin API definition generation | |
run: | | |
eval `luarocks path` | |
scripts/gen-admin-api-def.sh | |
- name: Lint Lua code | |
run: | | |
eval `luarocks path` | |
make lint | |
- name: Validate rockspec file | |
run: | | |
eval `luarocks path` | |
scripts/validate-rockspec | |
- name: Unit tests | |
run: | | |
eval `luarocks path` | |
make dev | |
bin/busted -v -o htest spec/01-unit | |
integration-tests-postgres: | |
name: Postgres ${{ matrix.suite }} - ${{ matrix.split }} tests | |
runs-on: ubuntu-22.04 | |
needs: build | |
strategy: | |
fail-fast: false | |
matrix: | |
suite: [integration, plugins] | |
split: [first (01-04), second (>= 05)] | |
env: | |
KONG_TEST_PG_DATABASE: kong | |
KONG_TEST_PG_USER: kong | |
KONG_TEST_DATABASE: postgres | |
KONG_SPEC_TEST_GRPCBIN_PORT: "15002" | |
KONG_SPEC_TEST_GRPCBIN_SSL_PORT: "15003" | |
KONG_SPEC_TEST_OTELCOL_FILE_EXPORTER_PATH: ${{ github.workspace }}/tmp/otel/file_exporter.json | |
TEST_SUITE: ${{ matrix.suite }} | |
TEST_SPLIT: ${{ matrix.split }} | |
services: | |
postgres: | |
image: postgres:13 | |
env: | |
POSTGRES_USER: kong | |
POSTGRES_DB: kong | |
POSTGRES_HOST_AUTH_METHOD: trust | |
ports: | |
- 5432:5432 | |
options: --health-cmd pg_isready --health-interval 5s --health-timeout 5s --health-retries 8 | |
grpcbin: | |
image: kong/grpcbin | |
ports: | |
- 15002:9000 | |
- 15003:9001 | |
redis: | |
image: redis | |
ports: | |
- 6379:6379 | |
- 6380:6380 | |
options: >- | |
--name kong_redis | |
zipkin: | |
image: openzipkin/zipkin:2.19 | |
ports: | |
- 9411:9411 | |
steps: | |
- name: Set environment variables | |
run: | | |
echo "INSTALL_ROOT=$HOME/install-root" >> $GITHUB_ENV | |
echo "DOWNLOAD_ROOT=$HOME/download-root" >> $GITHUB_ENV | |
echo "LD_LIBRARY_PATH=$INSTALL_ROOT/openssl/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV | |
- name: Checkout Kong source code | |
uses: actions/checkout@v3 | |
- name: Lookup build cache | |
uses: actions/cache@v3 | |
id: cache-deps | |
with: | |
path: ${{ env.INSTALL_ROOT }} | |
key: ${{ hashFiles('.ci/setup_env_github.sh') }}-${{ hashFiles('.github/workflows/build_and_test.yml') }}-${{ hashFiles('.requirements') }}-${{ hashFiles('kong-*.rockspec') }}-${{ hashFiles('Makefile') }} | |
- name: Add to Path | |
run: echo "$INSTALL_ROOT/openssl/bin:$INSTALL_ROOT/openresty/nginx/sbin:$INSTALL_ROOT/openresty/bin:$INSTALL_ROOT/luarocks/bin:$GITHUB_WORKSPACE/kong-build-tools/openresty-build-tools:$INSTALL_ROOT/go-pluginserver" >> $GITHUB_PATH | |
- name: Add gRPC test host names | |
run: | | |
echo "127.0.0.1 grpcs_1.test" | sudo tee -a /etc/hosts | |
echo "127.0.0.1 grpcs_2.test" | sudo tee -a /etc/hosts | |
- name: Enable SSL for Redis | |
if: ${{ matrix.suite == 'plugins' }} | |
run: | | |
docker cp ${{ github.workspace }} kong_redis:/workspace | |
docker cp ${{ github.workspace }}/spec/fixtures/redis/docker-entrypoint.sh kong_redis:/usr/local/bin/docker-entrypoint.sh | |
docker restart kong_redis | |
docker logs kong_redis | |
- name: Run OpenTelemetry Collector | |
if: ${{ matrix.suite == 'plugins' }} | |
run: | | |
mkdir -p ${{ github.workspace }}/tmp/otel | |
touch ${{ github.workspace }}/tmp/otel/file_exporter.json | |
sudo chmod 777 -R ${{ github.workspace }}/tmp/otel | |
docker run -p 4317:4317 -p 4318:4318 -p 55679:55679 \ | |
-v ${{ github.workspace }}/spec/fixtures/opentelemetry/otelcol.yaml:/etc/otel-collector-config.yaml \ | |
-v ${{ github.workspace }}/tmp/otel:/etc/otel \ | |
--name opentelemetry-collector -d \ | |
otel/opentelemetry-collector-contrib:0.52.0 \ | |
--config=/etc/otel-collector-config.yaml | |
sleep 2 | |
docker logs opentelemetry-collector | |
- name: Tests | |
run: | | |
eval `luarocks path` | |
make dev | |
.ci/run_tests.sh | |
integration-tests-dbless: | |
name: DB-less integration tests | |
runs-on: ubuntu-22.04 | |
needs: build | |
env: | |
KONG_TEST_PG_DATABASE: kong | |
KONG_TEST_PG_USER: kong | |
KONG_TEST_DATABASE: 'off' | |
KONG_SPEC_TEST_GRPCBIN_PORT: "15002" | |
KONG_SPEC_TEST_GRPCBIN_SSL_PORT: "15003" | |
KONG_SPEC_TEST_OTELCOL_FILE_EXPORTER_PATH: ${{ github.workspace }}/tmp/otel/file_exporter.json | |
TEST_SUITE: dbless | |
services: | |
grpcbin: | |
image: moul/grpcbin | |
ports: | |
- 15002:9000 | |
- 15003:9001 | |
steps: | |
- name: Set environment variables | |
run: | | |
echo "INSTALL_ROOT=$HOME/install-root" >> $GITHUB_ENV | |
echo "DOWNLOAD_ROOT=$HOME/download-root" >> $GITHUB_ENV | |
echo "LD_LIBRARY_PATH=$INSTALL_ROOT/openssl/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV | |
- name: Checkout Kong source code | |
uses: actions/checkout@v3 | |
- name: Lookup build cache | |
uses: actions/cache@v3 | |
id: cache-deps | |
with: | |
path: ${{ env.INSTALL_ROOT }} | |
key: ${{ hashFiles('.ci/setup_env_github.sh') }}-${{ hashFiles('.github/workflows/build_and_test.yml') }}-${{ hashFiles('.requirements') }}-${{ hashFiles('kong-*.rockspec') }}-${{ hashFiles('Makefile') }} | |
- name: Add to Path | |
run: echo "$INSTALL_ROOT/openssl/bin:$INSTALL_ROOT/openresty/nginx/sbin:$INSTALL_ROOT/openresty/bin:$INSTALL_ROOT/luarocks/bin:$GITHUB_WORKSPACE/kong-build-tools/openresty-build-tools:$INSTALL_ROOT/go-pluginserver" >> $GITHUB_PATH | |
- name: Add gRPC test host names | |
run: | | |
echo "127.0.0.1 grpcs_1.test" | sudo tee -a /etc/hosts | |
echo "127.0.0.1 grpcs_2.test" | sudo tee -a /etc/hosts | |
- name: Run OpenTelemetry Collector | |
run: | | |
mkdir -p ${{ github.workspace }}/tmp/otel | |
touch ${{ github.workspace }}/tmp/otel/file_exporter.json | |
sudo chmod 777 -R ${{ github.workspace }}/tmp/otel | |
docker run -p 4317:4317 -p 4318:4318 -p 55679:55679 \ | |
-v ${{ github.workspace }}/spec/fixtures/opentelemetry/otelcol.yaml:/etc/otel-collector-config.yaml \ | |
-v ${{ github.workspace }}/tmp/otel:/etc/otel \ | |
--name opentelemetry-collector -d \ | |
otel/opentelemetry-collector-contrib:0.52.0 \ | |
--config=/etc/otel-collector-config.yaml | |
sleep 2 | |
docker logs opentelemetry-collector | |
- name: Tests | |
run: | | |
eval `luarocks path` | |
make dev | |
.ci/run_tests.sh | |
integration-tests-cassandra: | |
name: C* ${{ matrix.cassandra_version }} ${{ matrix.suite }} - ${{ matrix.split }} tests | |
runs-on: ubuntu-22.04 | |
needs: build | |
strategy: | |
fail-fast: false | |
matrix: | |
suite: [integration, plugins] | |
cassandra_version: [3] | |
split: [first (01-04), second (>= 05)] | |
env: | |
KONG_TEST_DATABASE: cassandra | |
KONG_SPEC_TEST_GRPCBIN_PORT: "15002" | |
KONG_SPEC_TEST_GRPCBIN_SSL_PORT: "15003" | |
KONG_SPEC_TEST_OTELCOL_FILE_EXPORTER_PATH: ${{ github.workspace }}/tmp/otel/file_exporter.json | |
TEST_SUITE: ${{ matrix.suite }} | |
TEST_SPLIT: ${{ matrix.split }} | |
services: | |
cassandra: | |
image: cassandra:${{ matrix.cassandra_version }} | |
ports: | |
- 7199:7199 | |
- 7000:7000 | |
- 9160:9160 | |
- 9042:9042 | |
options: --health-cmd "cqlsh -e 'describe cluster'" --health-interval 5s --health-timeout 5s --health-retries 8 | |
grpcbin: | |
image: moul/grpcbin | |
ports: | |
- 15002:9000 | |
- 15003:9001 | |
redis: | |
image: redis | |
ports: | |
- 6379:6379 | |
- 6380:6380 | |
options: >- | |
--name kong_redis | |
zipkin: | |
image: openzipkin/zipkin:2.19 | |
ports: | |
- 9411:9411 | |
steps: | |
- name: Set environment variables | |
run: | | |
echo "INSTALL_ROOT=$HOME/install-root" >> $GITHUB_ENV | |
echo "DOWNLOAD_ROOT=$HOME/download-root" >> $GITHUB_ENV | |
echo "LD_LIBRARY_PATH=$INSTALL_ROOT/openssl/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV | |
- name: Checkout Kong source code | |
uses: actions/checkout@v3 | |
- name: Lookup build cache | |
uses: actions/cache@v3 | |
id: cache-deps | |
with: | |
path: ${{ env.INSTALL_ROOT }} | |
key: ${{ hashFiles('.ci/setup_env_github.sh') }}-${{ hashFiles('.github/workflows/build_and_test.yml') }}-${{ hashFiles('.requirements') }}-${{ hashFiles('kong-*.rockspec') }}-${{ hashFiles('Makefile') }} | |
- name: Add to Path | |
run: echo "$INSTALL_ROOT/openssl/bin:$INSTALL_ROOT/openresty/nginx/sbin:$INSTALL_ROOT/openresty/bin:$INSTALL_ROOT/luarocks/bin:$GITHUB_WORKSPACE/kong-build-tools/openresty-build-tools:$INSTALL_ROOT/go-pluginserver" >> $GITHUB_PATH | |
- name: Add gRPC test host names | |
run: | | |
echo "127.0.0.1 grpcs_1.test" | sudo tee -a /etc/hosts | |
echo "127.0.0.1 grpcs_2.test" | sudo tee -a /etc/hosts | |
- name: Enable SSL for Redis | |
if: ${{ matrix.suite == 'plugins' }} | |
run: | | |
docker cp ${{ github.workspace }} kong_redis:/workspace | |
docker cp ${{ github.workspace }}/spec/fixtures/redis/docker-entrypoint.sh kong_redis:/usr/local/bin/docker-entrypoint.sh | |
docker restart kong_redis | |
docker logs kong_redis | |
- name: Run OpenTelemetry Collector | |
if: ${{ matrix.suite == 'plugins' }} | |
run: | | |
mkdir -p ${{ github.workspace }}/tmp/otel | |
touch ${{ github.workspace }}/tmp/otel/file_exporter.json | |
sudo chmod 777 -R ${{ github.workspace }}/tmp/otel | |
docker run -p 4317:4317 -p 4318:4318 -p 55679:55679 \ | |
-v ${{ github.workspace }}/spec/fixtures/opentelemetry/otelcol.yaml:/etc/otel-collector-config.yaml \ | |
-v ${{ github.workspace }}/tmp/otel:/etc/otel \ | |
--name opentelemetry-collector -d \ | |
otel/opentelemetry-collector-contrib:0.52.0 \ | |
--config=/etc/otel-collector-config.yaml | |
sleep 2 | |
docker logs opentelemetry-collector | |
- name: Tests | |
run: | | |
eval `luarocks path` | |
make dev | |
.ci/run_tests.sh | |
pdk-tests: | |
name: PDK tests | |
runs-on: ubuntu-22.04 | |
needs: build | |
env: | |
TEST_SUITE: pdk | |
steps: | |
- name: Set environment variables | |
run: | | |
echo "INSTALL_ROOT=$HOME/install-root" >> $GITHUB_ENV | |
echo "DOWNLOAD_ROOT=$HOME/download-root" >> $GITHUB_ENV | |
echo "LD_LIBRARY_PATH=$INSTALL_ROOT/openssl/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV | |
- name: Checkout Kong source code | |
uses: actions/checkout@v3 | |
- name: Lookup build cache | |
uses: actions/cache@v3 | |
id: cache-deps | |
with: | |
path: ${{ env.INSTALL_ROOT }} | |
key: ${{ hashFiles('.ci/setup_env_github.sh') }}-${{ hashFiles('.github/workflows/build_and_test.yml') }}-${{ hashFiles('.requirements') }}-${{ hashFiles('kong-*.rockspec') }}-${{ hashFiles('Makefile') }} | |
- name: Add to Path | |
run: echo "$INSTALL_ROOT/openssl/bin:$INSTALL_ROOT/openresty/nginx/sbin:$INSTALL_ROOT/openresty/bin:$INSTALL_ROOT/luarocks/bin:$GITHUB_WORKSPACE/kong-build-tools/openresty-build-tools:$DOWNLOAD_ROOT/cpanm" >> $GITHUB_PATH | |
- name: Install Test::Nginx | |
run: | | |
CPAN_DOWNLOAD=$DOWNLOAD_ROOT/cpanm | |
mkdir -p $CPAN_DOWNLOAD | |
curl -o $CPAN_DOWNLOAD/cpanm https://cpanmin.us | |
chmod +x $CPAN_DOWNLOAD/cpanm | |
echo "Installing CPAN dependencies..." | |
cpanm --notest --local-lib=$HOME/perl5 local::lib && eval $(perl -I $HOME/perl5/lib/perl5/ -Mlocal::lib) | |
cpanm --notest Test::Nginx | |
- name: Tests | |
run: | | |
eval `luarocks path` | |
make dev | |
eval $(perl -I $HOME/perl5/lib/perl5/ -Mlocal::lib) | |
.ci/run_tests.sh | |