ci: update #48
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: CI Centos7 | |
on: | |
push: | |
branches: [master, 'release/**'] | |
paths-ignore: | |
- 'docs/**' | |
- '**/*.md' | |
pull_request: | |
branches: [master, 'release/**'] | |
paths-ignore: | |
- 'docs/**' | |
- '**/*.md' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/master' && github.run_number || github.ref }} | |
cancel-in-progress: true | |
permissions: | |
contents: read | |
jobs: | |
test_apisix: | |
name: run ci on centos7 | |
runs-on: ubuntu-20.04 | |
timeout-minutes: 90 | |
strategy: | |
fail-fast: false | |
matrix: | |
test_dir: | |
- t/plugin/[a-k]* | |
- t/plugin/[l-z]* | |
- t/admin t/cli t/config-center-yaml t/control t/core t/debug t/deployment t/discovery t/error_page t/misc | |
- t/node t/pubsub t/router t/script t/secret t/stream-node t/utils t/wasm t/xds-library | |
steps: | |
- name: Check out code | |
uses: actions/[email protected] | |
with: | |
submodules: recursive | |
- name: Cache deps | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-deps | |
with: | |
path: deps | |
key: ${{ runner.os }}-${{ env.cache-name }}-centos7-${{ hashFiles('rockspec/apisix-master-0.rockspec') }} | |
- name: Extract branch name | |
if: ${{ startsWith(github.ref, 'refs/heads/release/') }} | |
id: branch_env | |
shell: bash | |
run: | | |
echo "version=${GITHUB_REF##*/}" >>$GITHUB_OUTPUT | |
- name: Extract test type | |
shell: bash | |
id: test_env | |
run: | | |
test_dir="${{ matrix.test_dir }}" | |
if [[ $test_dir =~ 't/plugin' ]]; then | |
echo "type=plugin" >>$GITHUB_OUTPUT | |
fi | |
if [[ $test_dir =~ 't/admin ' ]]; then | |
echo "type=first" >>$GITHUB_OUTPUT | |
fi | |
if [[ $test_dir =~ ' t/xds-library' ]]; then | |
echo "type=last" >>$GITHUB_OUTPUT | |
fi | |
- name: Free disk space | |
run: | | |
bash ./ci/free_disk_space.sh | |
- name: Linux launch common services | |
run: | | |
make ci-env-up project_compose_ci=ci/pod/docker-compose.common.yml | |
sudo ./ci/init-common-test-service.sh | |
- name: Build rpm package | |
if: ${{ startsWith(github.ref, 'refs/heads/release/') }} | |
run: | | |
export VERSION=${{ steps.branch_env.outputs.version }} | |
sudo gem install --no-document fpm | |
git clone --depth 1 https://github.com/api7/apisix-build-tools.git | |
# move codes under build tool | |
mkdir ./apisix-build-tools/apisix | |
for dir in `ls|grep -v "^apisix-build-tools$"`;do cp -r $dir ./apisix-build-tools/apisix/;done | |
cd apisix-build-tools | |
make package type=rpm app=apisix version=${VERSION} checkout=release/${VERSION} image_base=centos image_tag=7 local_code_path=./apisix | |
cd .. | |
rm -rf $(ls -1 --ignore=apisix-build-tools --ignore=t --ignore=utils --ignore=ci --ignore=Makefile --ignore=rockspec) | |
- name: Build xDS library | |
if: steps.test_env.outputs.type == 'last' | |
run: | | |
cd t/xds-library | |
go build -o libxds.so -buildmode=c-shared main.go export.go | |
- name: Run centos7 docker and mapping apisix into container | |
env: | |
TEST_FILE_SUB_DIR: ${{ matrix.test_dir }} | |
run: | | |
docker run -itd -v ${{ github.workspace }}:/apisix --env TEST_FILE_SUB_DIR="$TEST_FILE_SUB_DIR" --name centos7Instance --net="host" --dns 8.8.8.8 --dns-search apache.org docker.io/centos:7 /bin/bash | |
# docker exec centos7Instance bash -c "cp -r /tmp/apisix ./" | |
- name: Cache images | |
id: cache-images | |
uses: actions/cache@v3 | |
env: | |
cache-name: cache-apisix-docker-images | |
with: | |
path: docker-images-backup | |
key: ${{ runner.os }}-${{ env.cache-name }}-${{ steps.test_env.outputs.type }}-${{ hashFiles(format('./ci/pod/docker-compose.{0}.yml', steps.test_env.outputs.type )) }} | |
- if: ${{ steps.cache-images.outputs.cache-hit == 'true' }} | |
name: Load saved docker images | |
run: | | |
if [[ -f docker-images-backup/apisix-images.tar ]]; then | |
[[ ${{ steps.test_env.outputs.type }} != first ]] && sudo ./ci/init-${{ steps.test_env.outputs.type }}-test-service.sh before | |
docker load --input docker-images-backup/apisix-images.tar | |
rm docker-images-backup/apisix-images.tar | |
make ci-env-up project_compose_ci=ci/pod/docker-compose.${{ steps.test_env.outputs.type }}.yml | |
echo "loaded docker images" | |
if [[ ${{ steps.test_env.outputs.type }} != first ]]; then | |
sudo ./ci/init-${{ steps.test_env.outputs.type }}-test-service.sh after | |
fi | |
fi | |
- if: ${{ steps.cache-images.outputs.cache-hit != 'true' }} | |
name: Linux launch services | |
run: | | |
[[ ${{ steps.test_env.outputs.type }} != first ]] && sudo ./ci/init-${{ steps.test_env.outputs.type }}-test-service.sh before | |
[[ ${{ steps.test_env.outputs.type }} == plugin ]] && ./ci/pod/openfunction/build-function-image.sh | |
make ci-env-up project_compose_ci=ci/pod/docker-compose.${{ steps.test_env.outputs.type }}.yml | |
[[ ${{ steps.test_env.outputs.type }} != first ]] && sudo ./ci/init-${{ steps.test_env.outputs.type }}-test-service.sh after | |
echo "Linux launch services, done." | |
- name: Install dependencies | |
run: | | |
docker exec centos7Instance bash -c "cd apisix && ./ci/centos7-ci.sh install_dependencies" | |
- name: Install rpm package | |
if: ${{ startsWith(github.ref, 'refs/heads/release/') }} | |
run: | | |
docker exec centos7Instance bash -c "cd apisix && rpm -iv --prefix=/apisix ./apisix-build-tools/output/apisix-${{ steps.branch_env.outputs.version }}-0.el7.x86_64.rpm" | |
# Dependencies are attached with rpm, so revert `make deps` | |
docker exec centos7Instance bash -c "cd apisix && rm -rf deps" | |
docker exec centos7Instance bash -c "cd apisix && mv usr/bin . && mv usr/local/apisix/* ." | |
- name: Run test cases | |
run: | | |
docker exec centos7Instance bash -c "cd apisix && ./ci/centos7-ci.sh run_case" | |
- if: ${{ steps.cache-images.outputs.cache-hit != 'true' }} | |
name: Save docker images | |
run: | | |
echo "start backing up, $(date)" | |
bash ./ci/backup-docker-images.sh ${{ steps.test_env.outputs.type }} | |
echo "backup done, $(date)" |