diff options
Diffstat (limited to '.github')
-rw-r--r-- | .github/workflows/crmsh-cd.yml | 57 | ||||
-rw-r--r-- | .github/workflows/crmsh-ci.yml | 368 |
2 files changed, 425 insertions, 0 deletions
diff --git a/.github/workflows/crmsh-cd.yml b/.github/workflows/crmsh-cd.yml new file mode 100644 index 0000000..48b03a0 --- /dev/null +++ b/.github/workflows/crmsh-cd.yml @@ -0,0 +1,57 @@ +# This workflow will install Python dependencies, run tests and lint with a single version of Python +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions +# For more information about secrets see: https://docs.github.com/en/free-pro-team@latest/actions/reference/encrypted-secrets + +name: crmsh CD + +on: push + +env: + PACKAGE_NAME: crmsh + CONTAINER_IMAGE: nyang23/obs-continuous-delivery:latest + OBS_USER: ${{ secrets.OBS_USER }} + OBS_PASS: ${{ secrets.OBS_PASS }} + OBS_PROJECT: ${{ secrets.OBS_PROJECT_CRMSH45 }} + TARGET_PROJECT: ${{ secrets.TARGET_PROJECT }} + +jobs: + integration: + if: github.repository == 'ClusterLabs/crmsh' && github.ref_name == 'crmsh-4.6' + uses: ./.github/workflows/crmsh-ci.yml + + delivery: + if: github.repository == 'ClusterLabs/crmsh' && github.ref_name == 'crmsh-4.6' + needs: integration + runs-on: ubuntu-20.04 + timeout-minutes: 10 + steps: + - uses: actions/checkout@v3 + - name: delivery process + run: | + docker pull "${CONTAINER_IMAGE}" + docker run -t -v "$(pwd)":/package:ro \ + -e OBS_USER=$OBS_USER \ + -e OBS_PASS=$OBS_PASS \ + -e OBS_PROJECT=$OBS_PROJECT \ + -e PACKAGE_NAME=$PACKAGE_NAME \ + "${CONTAINER_IMAGE}" \ + /bin/bash -c "cp -r /package ~/package && cd ~/package && /scripts/upload.sh" + + submit: + if: github.repository == 'ClusterLabs/crmsh' && github.ref_name == 'crmsh-4.6' + needs: delivery + runs-on: ubuntu-20.04 + timeout-minutes: 10 + steps: + - uses: actions/checkout@v3 + - name: submit process + run: | + docker pull "${CONTAINER_IMAGE}" + docker run -t \ + -e OBS_USER=$OBS_USER \ + -e OBS_PASS=$OBS_PASS \ + -e OBS_PROJECT=$OBS_PROJECT \ + -e PACKAGE_NAME=$PACKAGE_NAME \ + -e TARGET_PROJECT=$TARGET_PROJECT \ + "${CONTAINER_IMAGE}" \ + /bin/bash -c "cd ~ && /scripts/submit.sh" diff --git a/.github/workflows/crmsh-ci.yml b/.github/workflows/crmsh-ci.yml new file mode 100644 index 0000000..f58ebd9 --- /dev/null +++ b/.github/workflows/crmsh-ci.yml @@ -0,0 +1,368 @@ +# This workflow will install Python dependencies, run tests and lint with a single version of Python +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions +# For more information about secrets see: https://docs.github.com/en/free-pro-team@latest/actions/reference/encrypted-secrets + +name: crmsh CI + +on: + - pull_request + - workflow_call + +env: + DOCKER_SCRIPT: ./test/run-functional-tests + GET_INDEX_OF: ./test/run-functional-tests _get_index_of + +jobs: + general_check: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v3 + - name: check data-manifest + run: | + ./update-data-manifest.sh + output=`git --no-pager diff data-manifest` + [[ -z $output ]] || { + echo "$output" + echo "A new version of data-manifest is needed." + echo "Please run ./update-data-manifest.sh && git add ./data-manifest in your local environment and push the code again." + exit 1 + } + + unit_test: + runs-on: ubuntu-20.04 + strategy: + matrix: + python-version: ['3.6', '3.8', '3.10'] + fail-fast: false + timeout-minutes: 5 + steps: + - uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install tox + - name: Test with pytest in tox + run: | + tox -v -e${{ matrix.python-version }} + + functional_test_crm_report_bugs: + runs-on: ubuntu-20.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v3 + - name: functional test for crm_report bugs + run: | + echo '{ "exec-opts": ["native.cgroupdriver=systemd"] }' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker.service + index=`$GET_INDEX_OF crm_report_bugs` + $DOCKER_SCRIPT $index && $DOCKER_SCRIPT -d && $DOCKER_SCRIPT $index -u + - uses: codecov/codecov-action@v3 + + functional_test_crm_report_normal: + runs-on: ubuntu-20.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v3 + - name: functional test for crm_report normal + run: | + echo '{ "exec-opts": ["native.cgroupdriver=systemd"] }' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker.service + index=`$GET_INDEX_OF crm_report_normal` + $DOCKER_SCRIPT $index && $DOCKER_SCRIPT -d && $DOCKER_SCRIPT $index -u + - uses: codecov/codecov-action@v3 + + functional_test_bootstrap_bugs: + runs-on: ubuntu-20.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v3 + - name: functional test for bootstrap bugs + run: | + echo '{ "exec-opts": ["native.cgroupdriver=systemd"] }' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker.service + index=`$GET_INDEX_OF bootstrap_bugs` + $DOCKER_SCRIPT $index + - uses: codecov/codecov-action@v3 + + functional_test_bootstrap_bugs_non_root: + runs-on: ubuntu-20.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v3 + - name: functional test for bootstrap bugs, under non root user + run: | + echo '{ "exec-opts": ["native.cgroupdriver=systemd"] }' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker.service + index=`$GET_INDEX_OF bootstrap_bugs` + $DOCKER_SCRIPT $index -u + - uses: codecov/codecov-action@v3 + + functional_test_bootstrap_common: + runs-on: ubuntu-20.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v3 + - name: functional test for bootstrap common + run: | + echo '{ "exec-opts": ["native.cgroupdriver=systemd"] }' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker.service + index=`$GET_INDEX_OF bootstrap_init_join_remove` + $DOCKER_SCRIPT $index + - uses: codecov/codecov-action@v3 + + functional_test_bootstrap_common_non_root: + runs-on: ubuntu-20.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v3 + - name: functional test for bootstrap common, under non root user + run: | + echo '{ "exec-opts": ["native.cgroupdriver=systemd"] }' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker.service + index=`$GET_INDEX_OF bootstrap_init_join_remove` + $DOCKER_SCRIPT $index -u + - uses: codecov/codecov-action@v3 + + functional_test_bootstrap_options: + runs-on: ubuntu-20.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v3 + - name: functional test for bootstrap options + run: | + echo '{ "exec-opts": ["native.cgroupdriver=systemd"] }' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker.service + index=`$GET_INDEX_OF bootstrap_options` + $DOCKER_SCRIPT $index + - uses: codecov/codecov-action@v3 + + functional_test_bootstrap_options_non_root: + runs-on: ubuntu-20.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v3 + - name: functional test for bootstrap options, under non root user + run: | + echo '{ "exec-opts": ["native.cgroupdriver=systemd"] }' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker.service + index=`$GET_INDEX_OF bootstrap_options` + $DOCKER_SCRIPT $index -u + - uses: codecov/codecov-action@v3 + + functional_test_qdevice_setup_remove: + runs-on: ubuntu-20.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v3 + - name: functional test for qdevice setup and remove + run: | + echo '{ "exec-opts": ["native.cgroupdriver=systemd"] }' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker.service + index=`$GET_INDEX_OF qdevice_setup_remove` + $DOCKER_SCRIPT $index + - uses: codecov/codecov-action@v3 + + functional_test_qdevice_setup_remove_non_root: + runs-on: ubuntu-20.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v3 + - name: functional test for qdevice setup and remove, under non root user + run: | + echo '{ "exec-opts": ["native.cgroupdriver=systemd"] }' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker.service + index=`$GET_INDEX_OF qdevice_setup_remove` + $DOCKER_SCRIPT $index -u + - uses: codecov/codecov-action@v3 + + functional_test_qdevice_options: + runs-on: ubuntu-20.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v3 + - name: functional test for qdevice options + run: | + echo '{ "exec-opts": ["native.cgroupdriver=systemd"] }' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker.service + index=`$GET_INDEX_OF qdevice_options` + $DOCKER_SCRIPT $index && $DOCKER_SCRIPT -d && $DOCKER_SCRIPT $index -u + - uses: codecov/codecov-action@v3 + + functional_test_qdevice_validate: + runs-on: ubuntu-20.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v3 + - name: functional test for qdevice validate + run: | + echo '{ "exec-opts": ["native.cgroupdriver=systemd"] }' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker.service + index=`$GET_INDEX_OF qdevice_validate` + $DOCKER_SCRIPT $index + - uses: codecov/codecov-action@v3 + + functional_test_qdevice_validate_non_root: + runs-on: ubuntu-20.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v3 + - name: functional test for qdevice validate, under non root user + run: | + echo '{ "exec-opts": ["native.cgroupdriver=systemd"] }' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker.service + index=`$GET_INDEX_OF qdevice_validate` + $DOCKER_SCRIPT $index -u + - uses: codecov/codecov-action@v3 + + functional_test_qdevice_user_case: + runs-on: ubuntu-20.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v3 + - name: functional test for qdevice user case + run: | + echo '{ "exec-opts": ["native.cgroupdriver=systemd"] }' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker.service + index=`$GET_INDEX_OF qdevice_usercase` + $DOCKER_SCRIPT $index && $DOCKER_SCRIPT -d && $DOCKER_SCRIPT $index -u + - uses: codecov/codecov-action@v3 + + functional_test_resource_failcount: + runs-on: ubuntu-20.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v3 + - name: functional test for resource failcount + run: | + echo '{ "exec-opts": ["native.cgroupdriver=systemd"] }' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker.service + index=`$GET_INDEX_OF resource_failcount` + $DOCKER_SCRIPT $index && $DOCKER_SCRIPT -d && $DOCKER_SCRIPT $index -u + - uses: codecov/codecov-action@v3 + + functional_test_resource_set: + runs-on: ubuntu-20.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v3 + - name: functional test for resource set + run: | + echo '{ "exec-opts": ["native.cgroupdriver=systemd"] }' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker.service + index=`$GET_INDEX_OF resource_set` + $DOCKER_SCRIPT $index + - uses: codecov/codecov-action@v3 + + functional_test_resource_set_non_root: + runs-on: ubuntu-20.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v3 + - name: functional test for resource set, under non root user + run: | + echo '{ "exec-opts": ["native.cgroupdriver=systemd"] }' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker.service + index=`$GET_INDEX_OF resource_set` + $DOCKER_SCRIPT $index -u + - uses: codecov/codecov-action@v3 + + functional_test_configure_sublevel: + runs-on: ubuntu-20.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v3 + - name: functional test for configure sublevel bugs + run: | + echo '{ "exec-opts": ["native.cgroupdriver=systemd"] }' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker.service + index=`$GET_INDEX_OF configure_bugs` + $DOCKER_SCRIPT $index && $DOCKER_SCRIPT -d && $DOCKER_SCRIPT $index -u + - uses: codecov/codecov-action@v3 + + functional_test_constraints_bugs: + runs-on: ubuntu-20.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v3 + - name: functional test for constraints bugs + run: | + echo '{ "exec-opts": ["native.cgroupdriver=systemd"] }' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker.service + index=`$GET_INDEX_OF constraints_bugs` + $DOCKER_SCRIPT $index && $DOCKER_SCRIPT -d && $DOCKER_SCRIPT $index -u + - uses: codecov/codecov-action@v3 + + functional_test_geo_cluster: + runs-on: ubuntu-20.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v3 + - name: functional test for geo cluster + run: | + echo '{ "exec-opts": ["native.cgroupdriver=systemd"] }' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker.service + index=`$GET_INDEX_OF geo_setup` + $DOCKER_SCRIPT $index && $DOCKER_SCRIPT -d && $DOCKER_SCRIPT $index -u + - uses: codecov/codecov-action@v3 + + functional_test_healthcheck: + runs-on: ubuntu-20.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v3 + - name: functional test for healthcheck + run: | + echo '{ "exec-opts": ["native.cgroupdriver=systemd"] }' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker.service + index=`$GET_INDEX_OF healthcheck` + $DOCKER_SCRIPT $index && $DOCKER_SCRIPT -d && $DOCKER_SCRIPT $index -u + - uses: codecov/codecov-action@v3 + + functional_test_cluster_api: + runs-on: ubuntu-20.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v3 + - name: functional test for cluster api + run: | + echo '{ "exec-opts": ["native.cgroupdriver=systemd"] }' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker.service + $DOCKER_SCRIPT `$GET_INDEX_OF cluster_api` + - uses: codecov/codecov-action@v3 + + functional_test_user_access: + runs-on: ubuntu-20.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v3 + - name: functional test for user access + run: | + echo '{ "exec-opts": ["native.cgroupdriver=systemd"] }' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker.service + $DOCKER_SCRIPT `$GET_INDEX_OF user_access` + - uses: codecov/codecov-action@v3 + + functional_test_ssh_agent: + runs-on: ubuntu-20.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v3 + - name: functional test for user access + run: | + echo '{ "exec-opts": ["native.cgroupdriver=systemd"] }' | sudo tee /etc/docker/daemon.json + sudo systemctl restart docker.service + $DOCKER_SCRIPT `$GET_INDEX_OF ssh_agent` && $DOCKER_SCRIPT -d && $DOCKER_SCRIPT -u `$GET_INDEX_OF ssh_agent` + - uses: codecov/codecov-action@v3 + + original_regression_test: + runs-on: ubuntu-20.04 + timeout-minutes: 40 + steps: + - uses: actions/checkout@v3 + - name: original regression test + run: | + $DOCKER_SCRIPT `$GET_INDEX_OF "regression test"` |