fix: checking docker before post test #588
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: "Tests" | ||
on: | ||
workflow_call: | ||
defaults: | ||
run: | ||
shell: bash | ||
env: | ||
RUNNER_BIN_DIR: /home/runner/.local/bin | ||
permissions: | ||
contents: write | ||
packages: read | ||
checks: write | ||
jobs: | ||
installer-cosmovisor: | ||
name: "Installer - Cosmovisor mode" | ||
runs-on: ubuntu-20.04 | ||
env: | ||
PYTHONDEVMODE: 1 | ||
DEFAULT_DEBUG_BRANCH: ${{ github.ref_name }} | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: "Fresh install with Cosmovisor" | ||
working-directory: ./installer | ||
run: | | ||
sudo -E bash -c "python3 installer.py < tests/install-from-scratch-cosmovisor.txt" | ||
- name: "Upgrade - Keep existing" | ||
working-directory: ./installer | ||
run: | | ||
sudo -E bash -c "python3 installer.py < tests/upgrade-existing-cosmovisor.txt" | ||
- name: "Upgrade - Fresh install" | ||
working-directory: ./installer | ||
run: | | ||
sudo -E bash -c "python3 installer.py < tests/upgrade-fresh-install.txt" | ||
- name: Debugging with tmate | ||
if: ${{ failure() }} | ||
uses: mxschmitt/action-tmate@v3 | ||
timeout-minutes: 10 | ||
installer-standalone: | ||
name: "Installer - Standalone mode" | ||
runs-on: ubuntu-20.04 | ||
env: | ||
PYTHONDEVMODE: 1 | ||
DEFAULT_DEBUG_BRANCH: ${{ github.ref_name }} | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: "Fresh install" | ||
working-directory: ./installer | ||
run: | | ||
sudo -E bash -c "python3 installer.py < tests/install-from-scratch-standalone.txt" | ||
- name: "Upgrade existing installation" | ||
working-directory: ./installer | ||
run: | | ||
sudo -E bash -c "python3 installer.py < tests/upgrade-existing-standalone.txt" | ||
- name: "Upgrade with moving to cosmovisor" | ||
working-directory: ./installer | ||
run: | | ||
sudo -E bash -c "python3 installer.py < tests/upgrade-to-cosmovisor.txt" | ||
- name: Debugging with tmate | ||
if: ${{ failure() }} | ||
uses: mxschmitt/action-tmate@v3 | ||
timeout-minutes: 10 | ||
unit-tests: | ||
name: "Unit Tests" | ||
runs-on: ubuntu-20.04 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- uses: actions/setup-go@v4 | ||
with: | ||
go-version-file: ./go.mod | ||
cache: true | ||
- name: Install ginkgo | ||
working-directory: ./.. | ||
run: | | ||
go install github.com/onsi/ginkgo/v2/ginkgo@latest | ||
- name: Run Ginkgo unit tests | ||
run: ginkgo -r --race --randomize-all --randomize-suites --keep-going --trace --junit-report report-unit.xml | ||
- name: Upload unit tests result | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: report-unit.xml | ||
path: report-unit.xml | ||
integration-tests: | ||
name: "Integration Tests" | ||
runs-on: ubuntu-20.04 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Download binary artifact | ||
uses: actions/download-artifact@v3 | ||
id: download | ||
with: | ||
name: cheqd-noded | ||
path: ${{ env.RUNNER_BIN_DIR }} | ||
- name: Restore binary permissions | ||
run: sudo chmod +x ${{ env.RUNNER_BIN_DIR }}/cheqd-noded | ||
- name: Download node Docker image | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: cheqd-node-build.tar | ||
- name: Load node Docker image | ||
run: docker load -i cheqd-node-build.tar | ||
- name: Generate localnet configs | ||
working-directory: ./docker/localnet | ||
run: | | ||
bash gen-network-config.sh | ||
sudo chown -R 1000:1000 network-config | ||
- name: Set up Docker localnet | ||
working-directory: ./docker/localnet | ||
run: | | ||
docker compose --env-file build-latest.env up --detach --no-build | ||
- name: Import keys | ||
working-directory: ./docker/localnet | ||
run: | | ||
bash import-keys.sh | ||
- uses: actions/setup-go@v4 | ||
with: | ||
go-version-file: ./go.mod | ||
cache: true | ||
- name: Install ginkgo | ||
working-directory: ./.. | ||
run: go install github.com/onsi/ginkgo/v2/ginkgo@latest | ||
- name: Run Ginkgo integration tests | ||
working-directory: ./tests/integration | ||
run: | | ||
ginkgo -r --tags integration --race --randomize-suites --keep-going --trace --junit-report ../../report-integration.xml | ||
- name: Show logs | ||
if: failure() | ||
working-directory: ./docker/localnet | ||
run: docker compose --env-file build-latest.env logs --tail --follow | ||
- name: Upload integration tests result | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: report-integration.xml | ||
path: report-integration.xml | ||
# NOTE: This job is disabled since upgrade tests from v0.6.x to v1.x.x are not needed until next major release. | ||
upgrade-tests: | ||
name: "Upgrade Tests" | ||
runs-on: ubuntu-20.04 | ||
steps: | ||
- uses: actions/checkout@v4 | ||
# Preparations | ||
- name: Download old node binary (mainnet-latest) | ||
run: | | ||
mkdir -p ${{ env.RUNNER_BIN_DIR }} | ||
wget -c https://github.com/cheqd/cheqd-node/releases/download/v"${LEGACY_VERSION}"/cheqd-noded-"${LEGACY_VERSION}"-linux-amd64.tar.gz | ||
tar -xvf cheqd-noded-"${LEGACY_VERSION}"-linux-amd64.tar.gz -C ${{ env.RUNNER_BIN_DIR }} | ||
sudo chmod +x ${{ env.RUNNER_BIN_DIR }}/cheqd-noded | ||
env: | ||
LEGACY_VERSION: 1.4.4 | ||
- name: Login to GitHub Container Registry | ||
uses: docker/login-action@v3 | ||
with: | ||
registry: ghcr.io | ||
username: ${{ github.actor }} | ||
password: ${{ secrets.GITHUB_TOKEN }} | ||
- uses: actions/setup-go@v3 | ||
with: | ||
go-version-file: ./go.mod | ||
cache: true | ||
- name: Install ginkgo | ||
working-directory: ./.. | ||
run: go install github.com/onsi/ginkgo/v2/ginkgo@latest | ||
- name: Download new version of the Docker image (build-latest) | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: cheqd-node-build.tar | ||
- name: Load node Docker image | ||
run: docker load -i cheqd-node-build.tar | ||
# Run tests | ||
- name: Setting up network with old binary inside (mainnet version) | ||
working-directory: ./tests/upgrade/integration | ||
run: | | ||
bash scripts/old_binary_setup.sh | ||
- name: Run pre-upgrade tests | ||
working-directory: ./tests/upgrade/integration/v2 | ||
run: | | ||
ginkgo -r --race --tags upgrade_integration --focus-file pre_test.go --keep-going --trace --junit-report ../../../../report-pre-upgrade.xml | ||
- name: Upload pre-upgrade tests result | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: report-pre-upgrade.xml | ||
path: report-pre-upgrade.xml | ||
- name: Restart network using new node version (build-latest) | ||
working-directory: ./tests/upgrade/integration | ||
run: | | ||
bash scripts/upgrade.sh | ||
- name: Verifying docker processes | ||
working-directory: ./tests/upgrade/integration | ||
run: | | ||
docker ps -a | ||
- name: Run post-upgrade tests | ||
working-directory: ./tests/upgrade/integration/v2 | ||
run: | | ||
ginkgo -r --race --tags upgrade_integration --focus-file post_test.go --keep-going --trace --junit-report ../../../../report-post-upgrade.xml | ||
- name: Upload post-upgrade tests result | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: report-post-upgrade.xml | ||
path: report-post-upgrade.xml | ||
- name: Download binary artifact (build-latest) | ||
uses: actions/download-artifact@v3 | ||
id: download | ||
with: | ||
name: cheqd-noded | ||
path: ${{ env.RUNNER_BIN_DIR }} | ||
- name: Restore binary permissions | ||
run: sudo chmod +x ${{ env.RUNNER_BIN_DIR }}/cheqd-noded | ||
- name: Run integration tests on upgraded network | ||
working-directory: ./tests/integration | ||
run: | | ||
ginkgo -r --tags integration --race --randomize-suites --keep-going --trace --junit-report ../../report-upgraded-integration.xml | ||
- name: Upload post-upgrade integration tests result | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: report-upgraded-integration.xml | ||
path: report-upgraded-integration.xml | ||
- name: Show logs on failure | ||
if: failure() | ||
working-directory: ./docker/localnet | ||
run: docker compose --env-file build-latest.env logs --tail --follow | ||
- name: Submit governance fee parameter change proposals | ||
working-directory: ./tests/upgrade/integration/v2 | ||
run: | | ||
ginkgo -r --race --tags upgrade_integration --focus-file param_change_proposal_test.go --keep-going --trace --junit-report ../../../../report-pricing-proposal.xml | ||
- name: Upload pricing proposal tests result | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: report-pricing-proposal.xml | ||
path: report-pricing-proposal.xml | ||
- name: Run pricing integration tests after successful param change proposal | ||
working-directory: ./tests/integration | ||
run: | | ||
ginkgo -r --tags integration --race --randomize-suites --keep-going --trace --skip-file cli_diddoc_test.go --skip-file cli_diddoc_negative_test.go --skip-file cli_resource_test.go --skip-file cli_resource_negative_test.go --junit-report ../../report-pricing-change.xml | ||
- name: Upload pricing change tests result | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: report-pricing-change.xml | ||
path: report-pricing-change.xml | ||
- name: Cleanup after tests | ||
working-directory: ./tests/upgrade/integration | ||
run: | | ||
bash scripts/cleanup.sh | ||
report-results: | ||
name: "Report" | ||
runs-on: ubuntu-20.04 | ||
# NOTE: If not next major release, only unit and integration tests are necessary, otherwise all tests are needed. | ||
# needs: [unit-tests, integration-tests] | ||
needs: [unit-tests, integration-tests, upgrade-tests] | ||
if: always() | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Download unit test | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: report-unit.xml | ||
- name: Download integration test report | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: report-integration.xml | ||
- name: Download pre-upgrade test Report | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: report-pre-upgrade.xml | ||
- name: Download post-upgrade test Report | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: report-post-upgrade.xml | ||
- name: Download upgraded integration test Report | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: report-upgraded-integration.xml | ||
- name: Download pricing proposal test Report | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: report-pricing-proposal.xml | ||
- name: Download pricing change test Report | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: report-pricing-change.xml | ||
- name: Combine test results | ||
run: | | ||
python ./.github/scripts/xml_combine.py report-unit.xml report-integration.xml report-pre-upgrade.xml report-post-upgrade.xml report-upgraded-integration.xml report-pricing-proposal.xml report-pricing-change.xml > report.xml | ||
# run: | | ||
# python ./.github/scripts/xml_combine.py report-unit.xml report-integration.xml > report.xml | ||
- uses: mikepenz/action-junit-report@v4 | ||
with: | ||
report_paths: 'report.xml' | ||
check_name: "" | ||
suite_regex: '*' | ||
include_passed: true | ||
detailed_summary: true |