apisix/.github/workflows/centos7-ci.yml

118 lines
4.0 KiB
YAML
Raw Normal View History

name: CI Centos7
on:
push:
branches: [master, 'release/**']
paths-ignore:
- 'docs/**'
pull_request:
branches: [master]
paths-ignore:
- 'docs/**'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
test_apisix:
name: run ci on centos7
runs-on: ubuntu-latest
services:
etcd:
image: bitnami/etcd:3.4.0
ports:
- 2379:2379
- 2380:2380
env:
ALLOW_NONE_AUTHENTICATION: yes
ETCD_ADVERTISE_CLIENT_URLS: http://0.0.0.0:2379
steps:
- name: Check out code
uses: actions/checkout@v2.3.4
with:
submodules: recursive
- name: Extract branch name
if: ${{ startsWith(github.ref, 'refs/heads/release/') }}
id: branch_env
shell: bash
run: |
echo "##[set-output name=version;]$(echo ${GITHUB_REF##*/})"
- 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 https://github.com/api7/apisix-build-tools.git
cd apisix-build-tools
make package type=rpm app=apisix version=${VERSION} checkout=release/${VERSION}
cd ..
rm -rf $(ls -1 --ignore=apisix-build-tools --ignore=t --ignore=utils --ignore=ci --ignore=Makefile --ignore=rockspec)
- name: Install Redis Cluster
run: |
docker run -d -p ${MASTER1_PORT}:6379 -p ${MASTER2_PORT}:6380 -p ${MASTER3_PORT}:6381 -p ${SLAVE1_PORT}:6382 -p ${SLAVE2_PORT}:6383 -p ${SLAVE3_PORT}:6384 --name redis-cluster vishnunair/docker-redis-cluster:latest
env:
MASTER1_PORT: 5000
MASTER2_PORT: 5001
MASTER3_PORT: 5002
SLAVE1_PORT: 5003
SLAVE2_PORT: 5004
SLAVE3_PORT: 5005
- name: Running Redis Cluster Test
run: |
sudo apt-get install -y redis-tools
docker ps -a
redis-cli -h 127.0.0.1 -p 5000 ping
redis-cli -h 127.0.0.1 -p 5000 cluster nodes
- name: Running etcd server with TLS
run: |
sudo docker run -d -p 12379:12379 -p 12380:12380 \
-e ALLOW_NONE_AUTHENTICATION=yes \
-e ETCD_ADVERTISE_CLIENT_URLS=https://0.0.0.0:12379 \
-e ETCD_LISTEN_CLIENT_URLS=https://0.0.0.0:12379 \
-e ETCD_CERT_FILE=/certs/etcd.pem \
-e ETCD_KEY_FILE=/certs/etcd.key \
-e GITHUB_ACTIONS=true \
-e CI=true \
-v /home/runner/work/apisix/apisix/t/certs:/certs \
bitnami/etcd:3.4.0
- name: Run centos7 docker and mapping apisix into container
run: |
docker run -itd -v /home/runner/work/apisix/apisix:/apisix --name centos7Instance --net="host" docker.io/centos:7 /bin/bash
# docker exec centos7Instance bash -c "cp -r /tmp/apisix ./"
- name: Run other docker containers for test
run: |
./ci/install-ext-services-via-docker.sh
- 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.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"
- name: Publish Artifact
if: ${{ startsWith(github.ref, 'refs/heads/release/') }}
uses: actions/upload-artifact@v2.2.3
with:
name: "rpm"
path: "./apisix-build-tools/output/apisix-${{ steps.branch_env.outputs.version }}-0.x86_64.rpm"