diff options
Diffstat (limited to '.circleci/config.yml')
-rw-r--r-- | .circleci/config.yml | 936 |
1 files changed, 368 insertions, 568 deletions
diff --git a/.circleci/config.yml b/.circleci/config.yml index a5d9637eb..27c616436 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -5,244 +5,192 @@ orbs: go: circleci/go@1.7.0 slack: circleci/slack@4.4.2 +parameters: + ubuntu_image: + type: string + default: "ubuntu-2004:202104-01" + build_dir: + type: string + default: "/opt/cibuild" + result_path: + type: string + default: "/tmp/build_test_results" + +executors: + amd64_medium: + machine: + image: << pipeline.parameters.ubuntu_image >> + resource_class: medium + amd64_large: + machine: + image: << pipeline.parameters.ubuntu_image >> + resource_class: large + arm64_medium: + machine: + image: << pipeline.parameters.ubuntu_image >> + resource_class: arm.medium + arm64_large: + machine: + image: << pipeline.parameters.ubuntu_image >> + resource_class: arm.large + mac_amd64_medium: + macos: + xcode: 12.0.1 + resource_class: medium + environment: + HOMEBREW_NO_AUTO_UPDATE: "true" + mac_amd64_large: + macos: + xcode: 12.0.1 + resource_class: large + environment: + HOMEBREW_NO_AUTO_UPDATE: "true" + workflows: version: 2 - build_pr: + "circleci_build_and_test": jobs: - codegen_verification - - amd64_build - - amd64_test: - requires: - - amd64_build - filters: - branches: - ignore: - - /rel\/.*/ - - /hotfix\/.*/ - - amd64_test_nightly: - requires: - - amd64_build - filters: - branches: - only: - - /rel\/.*/ - - /hotfix\/.*/ - context: slack-secrets - - amd64_integration: - requires: - - amd64_build - filters: - branches: - ignore: - - /rel\/.*/ - - /hotfix\/.*/ - - amd64_integration_nightly: - requires: - - amd64_build - filters: - branches: - only: - - /rel\/.*/ - - /hotfix\/.*/ - context: slack-secrets - - amd64_e2e_subs: - requires: - - amd64_build - filters: - branches: - ignore: - - /rel\/.*/ - - /hotfix\/.*/ - - amd64_e2e_subs_nightly: - requires: - - amd64_build - filters: - branches: - only: - - /rel\/.*/ - - /hotfix\/.*/ - context: slack-secrets - - amd64_e2e_expect: - requires: - - amd64_build - filters: - branches: - ignore: - - /rel\/.*/ - - /hotfix\/.*/ - - amd64_e2e_expect_nightly: - requires: - - amd64_build - filters: - branches: - only: - - /rel\/.*/ - - /hotfix\/.*/ - context: slack-secrets - - arm64_build - - arm64_test: - requires: - - arm64_build - filters: - branches: - ignore: - - /rel\/.*/ - - /hotfix\/.*/ - - arm64_test_nightly: - requires: - - arm64_build - filters: - branches: - only: - - /rel\/.*/ - - /hotfix\/.*/ - context: slack-secrets - - arm64_integration: - requires: - - arm64_build - filters: - branches: - ignore: - - /rel\/.*/ - - /hotfix\/.*/ - - arm64_integration_nightly: - requires: - - arm64_build - filters: - branches: - only: - - /rel\/.*/ - - /hotfix\/.*/ - context: slack-secrets - - arm64_e2e_subs: - requires: - - arm64_build - filters: - branches: - ignore: - - /rel\/.*/ - - /hotfix\/.*/ - - arm64_e2e_subs_nightly: - requires: - - arm64_build - filters: - branches: - only: - - /rel\/.*/ - - /hotfix\/.*/ - context: slack-secrets - - arm64_e2e_expect: + + - build: + name: << matrix.platform >>_build + matrix: &matrix-default + parameters: + platform: ["amd64", "arm64", "mac_amd64"] + + - test: + name: << matrix.platform >>_test + matrix: + <<: *matrix-default requires: - - arm64_build - filters: + - << matrix.platform >>_build + filters: &filters-default branches: ignore: - /rel\/.*/ - /hotfix\/.*/ - - arm64_e2e_expect_nightly: + + - test_nightly: + name: << matrix.platform >>_test_nightly + matrix: + <<: *matrix-default requires: - - arm64_build - filters: + - << matrix.platform >>_build + filters: &filters-nightly branches: only: - /rel\/.*/ - /hotfix\/.*/ context: slack-secrets - - mac_amd64_build - - mac_amd64_test: + + - integration: + name: << matrix.platform >>_integration + matrix: + <<: *matrix-default requires: - - mac_amd64_build + - << matrix.platform >>_build filters: - branches: - ignore: - - /rel\/.*/ - - /hotfix\/.*/ - - mac_amd64_test_nightly: + <<: *filters-default + + - integration_nightly: + name: << matrix.platform >>_integration_nightly + matrix: + <<: *matrix-default requires: - - mac_amd64_build + - << matrix.platform >>_build filters: - branches: - only: - - /rel\/.*/ - - /hotfix\/.*/ + <<: *filters-nightly context: slack-secrets - - mac_amd64_integration: + + - e2e_expect: + name: << matrix.platform >>_e2e_expect + matrix: + <<: *matrix-default requires: - - mac_amd64_build + - << matrix.platform >>_build filters: - branches: - ignore: - - /rel\/.*/ - - /hotfix\/.*/ - - mac_amd64_integration_nightly: + <<: *filters-default + + - e2e_expect_nightly: + name: << matrix.platform >>_e2e_expect_nightly + matrix: + <<: *matrix-default requires: - - mac_amd64_build + - << matrix.platform >>_build filters: - branches: - only: - - /rel\/.*/ - - /hotfix\/.*/ + <<: *filters-nightly context: slack-secrets - - mac_amd64_e2e_subs: + + - e2e_subs: + name: << matrix.platform >>_e2e_subs + matrix: + <<: *matrix-default requires: - - mac_amd64_build + - << matrix.platform >>_build filters: - branches: - ignore: - - /rel\/.*/ - - /hotfix\/.*/ - - mac_amd64_e2e_subs_nightly: + <<: *filters-default + + - e2e_subs_nightly: + name: << matrix.platform >>_e2e_subs_nightly + matrix: + <<: *matrix-default requires: - - mac_amd64_build + - << matrix.platform >>_build filters: - branches: - only: - - /rel\/.*/ - - /hotfix\/.*/ + <<: *filters-nightly context: slack-secrets - - mac_amd64_e2e_expect: + + - tests_verification_job: + name: << matrix.platform >>_<< matrix.job_type >>_verification + matrix: + parameters: + platform: ["amd64", "arm64", "mac_amd64"] + job_type: ["test", "test_nightly", "integration", "integration_nightly", "e2e_expect", "e2e_expect_nightly"] requires: - - mac_amd64_build - filters: - branches: - ignore: - - /rel\/.*/ - - /hotfix\/.*/ - - mac_amd64_e2e_expect_nightly: + - << matrix.platform >>_<< matrix.job_type >> + + - upload_binaries: + name: << matrix.platform >>_upload_binaries + matrix: + <<: *matrix-default requires: - - mac_amd64_build + - << matrix.platform >>_test_nightly_verification + - << matrix.platform >>_integration_nightly_verification + - << matrix.platform >>_e2e_expect_nightly_verification + - << matrix.platform >>_e2e_subs_nightly + - codegen_verification filters: branches: only: - /rel\/.*/ - - /hotfix\/.*/ - context: slack-secrets - - tests_verification_job: - name: << matrix.job_type >>_<< matrix.job_version >>_verification - matrix: - parameters: - job_type: ["amd64", "arm64", "mac_amd64"] - job_version: ["test", "test_nightly", "integration", "integration_nightly", "e2e_expect", "e2e_expect_nightly"] - requires: - - << matrix.job_type >>_<< matrix.job_version >> + context: + - slack-secrets + - aws-secrets + #- windows_x64_build commands: prepare_go: description: Clean out existing Go so we can use our preferred version + steps: + - run: | + sudo rm -rf ${HOME}/.go_workspace /usr/local/go + + prepare_build_dir: + description: Set up build directory parameters: - circleci_home: + build_dir: type: string - default: "/home/circleci" + default: << pipeline.parameters.build_dir >> steps: - - run: | - sudo rm -rf << parameters.circleci_home >>/.go_workspace /usr/local/go + - run: + working_directory: /tmp + command: | + sudo mkdir -p << parameters.build_dir >> + sudo chown -R $USER:$GROUP << parameters.build_dir >> + prepare_windows: description: Prepare windows image - parameters: - circleci_home: - type: string - default: "/home/circleci" steps: - run: name: install deps @@ -261,35 +209,38 @@ commands: generic_build: description: Run basic build and store in workspace for re-use by different architectures parameters: - circleci_home: + build_dir: type: string - default: "/home/circleci" + default: << pipeline.parameters.build_dir >> steps: - restore_libsodium - restore_cache: keys: - - 'go-mod-1-14-7-v1-{{ arch }}-{{ checksum "go.mod" }}-{{ checksum "go.sum" }}' + - 'go-mod-1-14-7-v2-{{ arch }}-{{ checksum "go.mod" }}-{{ checksum "go.sum" }}' - restore_cache: keys: - - 'go-cache-{{ .Environment.CIRCLE_STAGE }}-' + - 'go-cache-v2-{{ .Environment.CIRCLE_STAGE }}-' - run: name: scripts/travis/build.sh --make_debug command: | - export PATH=$(echo "$PATH" | sed -e 's|:<< parameters.circleci_home >>/\.go_workspace/bin||g' | sed -e 's|:/usr/local/go/bin||g') - export GOPATH="<< parameters.circleci_home >>/go" + export PATH=$(echo "$PATH" | sed -e "s|:${HOME}/\.go_workspace/bin||g" | sed -e 's|:/usr/local/go/bin||g') + export GOPATH="<< parameters.build_dir >>/go" export ALGORAND_DEADLOCK=enable + export GIMME_INSTALL_DIR=<< parameters.build_dir >> + export GIMME_ENV_PREFIX=<< parameters.build_dir >>/.gimme/envs + export GIMME_VERSION_PREFIX=<< parameters.build_dir >>/.gimme/versions scripts/travis/build.sh --make_debug - cache_libsodium - save_cache: - key: 'go-mod-1-14-7-v1-{{ arch }}-{{ checksum "go.mod" }}-{{ checksum "go.sum" }}' + key: 'go-mod-1-14-7-v2-{{ arch }}-{{ checksum "go.mod" }}-{{ checksum "go.sum" }}' paths: - - << parameters.circleci_home >>/go/pkg/mod + - << parameters.build_dir >>/go/pkg/mod - save_cache: - key: 'go-cache-{{ .Environment.CIRCLE_STAGE }}-{{ .Environment.CIRCLE_BUILD_NUM }}' + key: 'go-cache-v2-{{ .Environment.CIRCLE_STAGE }}-{{ .Environment.CIRCLE_BUILD_NUM }}' paths: - tmp/go-cache - persist_to_workspace: - root: << parameters.circleci_home >> + root: << parameters.build_dir >> paths: - project - go @@ -305,7 +256,7 @@ commands: mkdir -p tmp find crypto/libsodium-fork -type f -exec openssl md5 "{}" + > tmp/libsodium.md5 - save_cache: - key: 'libsodium-fork-{{ .Environment.CIRCLE_STAGE }}-{{ checksum "tmp/libsodium.md5" }}' + key: 'libsodium-fork-v2-{{ .Environment.CIRCLE_STAGE }}-{{ checksum "tmp/libsodium.md5" }}' paths: - crypto/libs @@ -319,14 +270,16 @@ commands: find crypto/libsodium-fork -type f -exec openssl md5 "{}" + > tmp/libsodium.md5 - restore_cache: keys: - - 'libsodium-fork-{{ .Environment.CIRCLE_STAGE }}-{{ checksum "tmp/libsodium.md5" }}' + - 'libsodium-fork-v2-{{ .Environment.CIRCLE_STAGE }}-{{ checksum "tmp/libsodium.md5" }}' - generic_buildtest: + generic_test: description: Run build tests from build workspace, for re-use by diferent architectures parameters: - circleci_home: + platform: + type: string + build_dir: type: string - default: "/home/circleci" + default: << pipeline.parameters.build_dir >> result_subdir: type: string no_output_timeout: @@ -337,33 +290,38 @@ commands: default: "" result_path: type: string - default: "/tmp/results" + default: << pipeline.parameters.result_path >> steps: - attach_workspace: - at: << parameters.circleci_home >> - - run: mkdir -p << parameters.result_path >>/<< parameters.result_subdir >>/$CIRCLE_NODE_INDEX + at: << parameters.build_dir >> + - run: | + mkdir -p << parameters.result_path >>/<< parameters.result_subdir >>/${CIRCLE_NODE_INDEX} + touch << parameters.result_path >>/<< parameters.result_subdir >>/${CIRCLE_NODE_INDEX}/results.xml + touch << parameters.result_path >>/<< parameters.result_subdir >>/${CIRCLE_NODE_INDEX}/testresults.json - restore_cache: keys: - - 'go-cache-{{ .Environment.CIRCLE_STAGE }}-' + - 'go-cache-v2-{{ .Environment.CIRCLE_STAGE }}-' - run: name: Run build tests no_output_timeout: << parameters.no_output_timeout >> command: | set -e set -x - export PATH=$(echo "$PATH" | sed -e 's|:<< parameters.circleci_home >>/\.go_workspace/bin||g' | sed -e 's|:/usr/local/go/bin||g') + export PATH=$(echo "$PATH" | sed -e "s|:${HOME}/\.go_workspace/bin||g" | sed -e 's|:/usr/local/go/bin||g') export KMD_NOUSB=True - export GOPATH="<< parameters.circleci_home >>/go" + export GOPATH="<< parameters.build_dir >>/go" export PATH="${PATH}:${GOPATH}/bin" export ALGORAND_DEADLOCK=enable + export GIMME_ENV_PREFIX=<< parameters.build_dir >>/.gimme/envs + export GIMME_VERSION_PREFIX=<< parameters.build_dir >>/.gimme/versions GOLANG_VERSION=$(./scripts/get_golang_version.sh) - eval "$(~/gimme "${GOLANG_VERSION}")" + eval "$(<< parameters.build_dir >>/gimme "${GOLANG_VERSION}")" scripts/configure_dev.sh scripts/buildtools/install_buildtools.sh -o "gotest.tools/gotestsum" PACKAGES="$(go list ./... | grep -v /go-algorand/test/)" export PACKAGE_NAMES=$(echo $PACKAGES | tr -d '\n') - export PARTITION_TOTAL=$CIRCLE_NODE_TOTAL - export PARTITION_ID=$CIRCLE_NODE_INDEX + export PARTITION_TOTAL=${CIRCLE_NODE_TOTAL} + export PARTITION_ID=${CIRCLE_NODE_INDEX} export PARALLEL_FLAG="-p 1" gotestsum --format testname --junitfile << parameters.result_path >>/<< parameters.result_subdir >>/${CIRCLE_NODE_INDEX}/results.xml --jsonfile << parameters.result_path >>/<< parameters.result_subdir >>/${CIRCLE_NODE_INDEX}/testresults.json -- --tags "sqlite_unlock_notify sqlite_omit_load_extension" << parameters.short_test_flag >> -race -timeout 1h -coverprofile=coverage.txt -covermode=atomic -p 1 $PACKAGE_NAMES - store_artifacts: @@ -376,9 +334,12 @@ commands: paths: - << parameters.result_subdir >> - save_cache: - key: 'go-cache-{{ .Environment.CIRCLE_STAGE }}-{{ .Environment.CIRCLE_BUILD_NUM }}' + key: 'go-cache-v2-{{ .Environment.CIRCLE_STAGE }}-{{ .Environment.CIRCLE_BUILD_NUM }}' paths: - tmp/go-cache + - upload_to_buildpulse: + platform: << parameters.platform >> + path: << parameters.result_path >>/<< parameters.result_subdir>> upload_coverage: description: Collect coverage reports and upload them @@ -389,12 +350,48 @@ commands: command: | scripts/travis/upload_coverage.sh || true + upload_to_buildpulse: + description: Collect build reports and upload them + parameters: + platform: + type: string + path: + type: string + steps: + - run: + name: Send test results to BuildPulse + when: always + command: | + set -e + if ! ls << parameters.path >>/*/*.xml &> /dev/null; then exit 0; fi + sed -i"" -e 's/classname="/classname="<< parameters.platform >>-/' << parameters.path >>/*/*.xml + case "<< parameters.platform >>" in + arm64) + URL=https://github.com/buildpulse/test-reporter/releases/download/v0.21.0-pre/test-reporter-linux-arm64 + SUM=53f94c29ad162c2b9ebb1f4a2f967f5262c0459ee4a0c34332977d8c89aafc18 + ;; + amd64) + URL=https://github.com/buildpulse/test-reporter/releases/download/v0.21.0-pre/test-reporter-linux-amd64 + SUM=4655e54d756580c0de0112cab488e6e08d0af75e9fc8caea2d63f9e13be8beb5 + ;; + mac_amd64) + URL=https://github.com/buildpulse/test-reporter/releases/download/v0.21.0-pre/test-reporter-darwin-amd64 + SUM=2f9e20a6f683c80f35d04e36bc57ecfe605bb48fee5a1b8d8f7c45094028eea3 + ;; + esac + curl -fsSL --retry 3 --retry-connrefused $URL > ./buildpulse-test-reporter + echo "$SUM *buildpulse-test-reporter" | shasum -a 256 -c --status + chmod +x ./buildpulse-test-reporter + ./buildpulse-test-reporter submit << parameters.path >> --account-id 23182699 --repository-id 191266671 || true + generic_integration: description: Run integration tests from build workspace, for re-use by diferent architectures parameters: - circleci_home: + platform: type: string - default: "/home/circleci" + build_dir: + type: string + default: << pipeline.parameters.build_dir >> result_subdir: type: string no_output_timeout: @@ -405,31 +402,36 @@ commands: default: "" result_path: type: string - default: "/tmp/results" + default: << pipeline.parameters.result_path >> steps: - attach_workspace: - at: << parameters.circleci_home >> - - run: mkdir -p << parameters.result_path >>/<< parameters.result_subdir >>/$CIRCLE_NODE_INDEX + at: << parameters.build_dir >> + - run: | + mkdir -p << parameters.result_path >>/<< parameters.result_subdir >>/${CIRCLE_NODE_INDEX} + touch << parameters.result_path >>/<< parameters.result_subdir >>/${CIRCLE_NODE_INDEX}/results.xml + touch << parameters.result_path >>/<< parameters.result_subdir >>/${CIRCLE_NODE_INDEX}/testresults.json - run: name: Run integration tests no_output_timeout: << parameters.no_output_timeout >> command: | set -x - export PATH=$(echo "$PATH" | sed -e 's|:<< parameters.circleci_home >>/\.go_workspace/bin||g' | sed -e 's|:/usr/local/go/bin||g') + export PATH=$(echo "$PATH" | sed -e "s|:${HOME}/\.go_workspace/bin||g" | sed -e 's|:/usr/local/go/bin||g') export KMD_NOUSB=True - export GOPATH="<< parameters.circleci_home >>/go" + export GOPATH="<< parameters.build_dir >>/go" export PATH="${PATH}:${GOPATH}/bin" export ALGORAND_DEADLOCK=enable export BUILD_TYPE=integration + export GIMME_ENV_PREFIX=<< parameters.build_dir >>/.gimme/envs + export GIMME_VERSION_PREFIX=<< parameters.build_dir >>/.gimme/versions GOLANG_VERSION=$(./scripts/get_golang_version.sh) - eval "$(~/gimme "${GOLANG_VERSION}")" + eval "$(<< parameters.build_dir >>/gimme "${GOLANG_VERSION}")" scripts/configure_dev.sh scripts/buildtools/install_buildtools.sh -o "gotest.tools/gotestsum" export ALGOTEST=1 export SHORTTEST=<< parameters.short_test_flag >> - export TEST_RESULTS=<< parameters.result_path >>/<< parameters.result_subdir >>/$CIRCLE_NODE_INDEX - export PARTITION_TOTAL=$CIRCLE_NODE_TOTAL - export PARTITION_ID=$CIRCLE_NODE_INDEX + export TEST_RESULTS=<< parameters.result_path >>/<< parameters.result_subdir >>/${CIRCLE_NODE_INDEX} + export PARTITION_TOTAL=${CIRCLE_NODE_TOTAL} + export PARTITION_ID=${CIRCLE_NODE_INDEX} test/scripts/run_integration_tests.sh - store_artifacts: path: << parameters.result_path >> @@ -440,13 +442,16 @@ commands: root: << parameters.result_path >> paths: - << parameters.result_subdir >> + - upload_to_buildpulse: + platform: << parameters.platform >> + path: << parameters.result_path >>/<< parameters.result_subdir>> tests_verification_command: description: Check if all tests were run at least once and only once across all parallel runs parameters: result_path: type: string - default: "/tmp/results" + default: << pipeline.parameters.result_path >> result_subdir: type: string steps: @@ -461,11 +466,38 @@ commands: path: << parameters.result_path >>/<< parameters.result_subdir >> destination: << parameters.result_subdir >>/combined-test-results + upload_binaries_command: + description: save build artifacts for potential deployments + parameters: + platform: + type: string + build_dir: + type: string + default: << pipeline.parameters.build_dir >> + steps: + - attach_workspace: + at: << parameters.build_dir >> + - run: + name: Upload binaries << parameters.platform >> + command: | + export PATH=$(echo "$PATH" | sed -e "s|:${HOME}/\.go_workspace/bin||g" | sed -e 's|:/usr/local/go/bin||g') + export GOPATH="<< parameters.build_dir >>/go" + export NO_BUILD=true + export TRAVIS_BRANCH=${CIRCLE_BRANCH} + scripts/travis/deploy_packages.sh + - when: + condition: + equal: [ "amd64", << parameters.platform >> ] + steps: + - run: + name: test_release.sh + command: | + export TRAVIS_BRANCH=${CIRCLE_BRANCH} + scripts/travis/test_release.sh + jobs: codegen_verification: - machine: - image: ubuntu-2004:202104-01 - resource_class: medium + executor: amd64_medium steps: - checkout - prepare_go @@ -474,406 +506,158 @@ jobs: export GOPATH="/home/circleci/go" scripts/travis/codegen_verification.sh - amd64_build: - machine: - image: ubuntu-2004:202104-01 - resource_class: medium + build: + parameters: + platform: + type: string + executor: << parameters.platform >>_medium + working_directory: << pipeline.parameters.build_dir >>/project steps: + - prepare_build_dir - checkout - prepare_go - generic_build - amd64_test: - machine: - image: ubuntu-2004:202104-01 - resource_class: medium + test: + parameters: + platform: + type: string + executor: << parameters.platform >>_medium + working_directory: << pipeline.parameters.build_dir >>/project parallelism: 4 steps: + - prepare_build_dir - prepare_go - - generic_buildtest: - result_subdir: amd64_test + - generic_test: + platform: << parameters.platform >> + result_subdir: << parameters.platform >>_test short_test_flag: "-short" - upload_coverage - amd64_test_nightly: - machine: - image: ubuntu-2004:202104-01 - resource_class: medium + test_nightly: + parameters: + platform: + type: string + executor: << parameters.platform >>_medium + working_directory: << pipeline.parameters.build_dir >>/project parallelism: 4 steps: + - prepare_build_dir - prepare_go - - generic_buildtest: - result_subdir: amd64_test_nightly + - generic_test: + platform: << parameters.platform >> + result_subdir: << parameters.platform >>_test_nightly no_output_timeout: 45m - upload_coverage - - slack/notify: + - slack/notify: &slack-fail-event event: fail template: basic_fail_1 - amd64_integration: - machine: - image: ubuntu-2004:202104-01 - resource_class: medium - parallelism: 4 - environment: - E2E_TEST_FILTER: "GO" - steps: - - prepare_go - - generic_integration: - result_subdir: amd64_integration - short_test_flag: "-short" - - amd64_integration_nightly: - machine: - image: ubuntu-2004:202104-01 - resource_class: medium - parallelism: 4 - environment: - E2E_TEST_FILTER: "GO" - steps: - - prepare_go - - generic_integration: - result_subdir: amd64_integration_nightly - no_output_timeout: 45m - - slack/notify: - event: fail - template: basic_fail_1 - - amd64_e2e_subs: - machine: - image: ubuntu-2004:202104-01 - resource_class: large - environment: - E2E_TEST_FILTER: "SCRIPTS" - steps: - - prepare_go - - generic_integration: - result_subdir: amd64_e2e_subs - short_test_flag: "-short" - - amd64_e2e_subs_nightly: - machine: - image: ubuntu-2004:202104-01 - resource_class: large - environment: - E2E_TEST_FILTER: "SCRIPTS" - steps: - - prepare_go - - generic_integration: - result_subdir: amd64_e2e_subs_nightly - no_output_timeout: 45m - - slack/notify: - event: fail - template: basic_fail_1 - - amd64_e2e_expect: - machine: - image: ubuntu-2004:202104-01 - resource_class: medium - parallelism: 2 - environment: - E2E_TEST_FILTER: "EXPECT" - steps: - - prepare_go - - generic_integration: - result_subdir: amd64_e2e_expect - short_test_flag: "-short" - - amd64_e2e_expect_nightly: - machine: - image: ubuntu-2004:202104-01 - resource_class: medium + integration: + parameters: + platform: + type: string + executor: << parameters.platform >>_large + working_directory: << pipeline.parameters.build_dir >>/project parallelism: 2 environment: - E2E_TEST_FILTER: "EXPECT" - steps: - - prepare_go - - generic_integration: - result_subdir: amd64_e2e_expect_nightly - no_output_timeout: 45m - - slack/notify: - event: fail - template: basic_fail_1 - - arm64_build: - machine: - image: ubuntu-2004:202101-01 - resource_class: arm.medium - steps: - - checkout - - prepare_go - - generic_build - - arm64_test: - machine: - image: ubuntu-2004:202101-01 - resource_class: arm.medium - parallelism: 4 - steps: - - checkout - - prepare_go - - generic_buildtest: - result_subdir: arm64_test - short_test_flag: "-short" - - upload_coverage - - arm64_test_nightly: - machine: - image: ubuntu-2004:202101-01 - resource_class: arm.medium - parallelism: 4 - steps: - - checkout - - prepare_go - - generic_buildtest: - result_subdir: arm64_test_nightly - no_output_timeout: 45m - - upload_coverage - - slack/notify: - event: fail - template: basic_fail_1 - - arm64_integration: - machine: - image: ubuntu-2004:202101-01 - resource_class: arm.medium - parallelism: 4 - environment: E2E_TEST_FILTER: "GO" steps: - - checkout + - prepare_build_dir - prepare_go - generic_integration: - result_subdir: arm64_integration + platform: << parameters.platform >> + result_subdir: << parameters.platform >>_integration short_test_flag: "-short" - arm64_integration_nightly: - machine: - image: ubuntu-2004:202101-01 - resource_class: arm.medium + integration_nightly: + parameters: + platform: + type: string + executor: << parameters.platform >>_large + working_directory: << pipeline.parameters.build_dir >>/project parallelism: 4 environment: E2E_TEST_FILTER: "GO" steps: - - checkout - - prepare_go - - generic_integration: - result_subdir: arm64_integration_nightly - no_output_timeout: 45m - - slack/notify: - event: fail - template: basic_fail_1 - - arm64_e2e_subs: - machine: - image: ubuntu-2004:202101-01 - resource_class: arm.large - environment: - E2E_TEST_FILTER: "SCRIPTS" - steps: - - checkout + - prepare_build_dir - prepare_go - generic_integration: - result_subdir: arm64_e2e_subs - short_test_flag: "-short" - - arm64_e2e_subs_nightly: - machine: - image: ubuntu-2004:202101-01 - resource_class: arm.large - environment: - E2E_TEST_FILTER: "SCRIPTS" - steps: - - checkout - - prepare_go - - generic_integration: - result_subdir: arm64_e2e_subs_nightly + platform: << parameters.platform >> + result_subdir: << parameters.platform >>_integration_nightly no_output_timeout: 45m - slack/notify: - event: fail - template: basic_fail_1 + <<: *slack-fail-event - arm64_e2e_expect: - machine: - image: ubuntu-2004:202101-01 - resource_class: arm.medium + e2e_expect: + parameters: + platform: + type: string + executor: << parameters.platform >>_medium + working_directory: << pipeline.parameters.build_dir >>/project parallelism: 2 environment: E2E_TEST_FILTER: "EXPECT" steps: - - checkout + - prepare_build_dir - prepare_go - generic_integration: - result_subdir: arm64_e2e_expect + platform: << parameters.platform >> + result_subdir: << parameters.platform >>_e2e_expect short_test_flag: "-short" - arm64_e2e_expect_nightly: - machine: - image: ubuntu-2004:202101-01 - resource_class: arm.medium + e2e_expect_nightly: + parameters: + platform: + type: string + executor: << parameters.platform >>_medium + working_directory: << pipeline.parameters.build_dir >>/project parallelism: 2 environment: E2E_TEST_FILTER: "EXPECT" steps: - - checkout + - prepare_build_dir - prepare_go - generic_integration: - result_subdir: arm64_e2e_expect_nightly - no_output_timeout: 45m - - slack/notify: - event: fail - template: basic_fail_1 - - mac_amd64_build: - macos: - xcode: 12.0.1 - resource_class: medium - environment: - HOMEBREW_NO_AUTO_UPDATE: "true" - steps: - #- run: git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow - - checkout - - prepare_go - - generic_build: - circleci_home: /Users/distiller - - mac_amd64_test: - macos: - xcode: 12.0.1 - resource_class: medium - environment: - HOMEBREW_NO_AUTO_UPDATE: "true" - parallelism: 4 - steps: - #- run: git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow - - prepare_go - - generic_buildtest: - result_subdir: mac_amd64_test - circleci_home: /Users/distiller - short_test_flag: "-short" - - upload_coverage - - mac_amd64_test_nightly: - macos: - xcode: 12.0.1 - resource_class: medium - environment: - HOMEBREW_NO_AUTO_UPDATE: "true" - parallelism: 4 - steps: - #- run: git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow - - prepare_go - - generic_buildtest: - result_subdir: mac_amd64_test_nightly - circleci_home: /Users/distiller + platform: << parameters.platform >> + result_subdir: << parameters.platform>>_e2e_expect_nightly no_output_timeout: 45m - - upload_coverage - slack/notify: - event: fail - template: basic_fail_1 + <<: *slack-fail-event - mac_amd64_integration: - macos: - xcode: 12.0.1 - resource_class: medium - parallelism: 4 - environment: - E2E_TEST_FILTER: "GO" - HOMEBREW_NO_AUTO_UPDATE: "true" - steps: - #- run: git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow - - prepare_go - - generic_integration: - result_subdir: mac_amd64_integration - circleci_home: /Users/distiller - short_test_flag: "-short" - - mac_amd64_integration_nightly: - macos: - xcode: 12.0.1 - resource_class: medium - parallelism: 4 - environment: - E2E_TEST_FILTER: "GO" - HOMEBREW_NO_AUTO_UPDATE: "true" - steps: - #- run: git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow - - prepare_go - - generic_integration: - result_subdir: mac_amd64_integration_nightly - circleci_home: /Users/distiller - no_output_timeout: 45m - - slack/notify: - event: fail - template: basic_fail_1 - - mac_amd64_e2e_subs: - macos: - xcode: 12.0.1 - resource_class: large + e2e_subs: + parameters: + platform: + type: string + executor: << parameters.platform >>_large + working_directory: << pipeline.parameters.build_dir >>/project environment: E2E_TEST_FILTER: "SCRIPTS" - HOMEBREW_NO_AUTO_UPDATE: "true" steps: - #- run: git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow + - prepare_build_dir - prepare_go - generic_integration: - result_subdir: mac_amd64_e2e_subs - circleci_home: /Users/distiller + platform: << parameters.platform >> + result_subdir: << parameters.platform >>_e2e_subs short_test_flag: "-short" - mac_amd64_e2e_subs_nightly: - macos: - xcode: 12.0.1 - resource_class: large + e2e_subs_nightly: + parameters: + platform: + type: string + executor: << parameters.platform >>_large + working_directory: << pipeline.parameters.build_dir >>/project environment: E2E_TEST_FILTER: "SCRIPTS" - HOMEBREW_NO_AUTO_UPDATE: "true" steps: - #- run: git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow + - prepare_build_dir - prepare_go - generic_integration: - result_subdir: mac_amd64_e2e_subs_nightly - circleci_home: /Users/distiller + platform: << parameters.platform >> + result_subdir: << parameters.platform >>_e2e_subs_nightly no_output_timeout: 45m - slack/notify: - event: fail - template: basic_fail_1 - - mac_amd64_e2e_expect: - macos: - xcode: 12.0.1 - resource_class: medium - parallelism: 2 - environment: - E2E_TEST_FILTER: "EXPECT" - HOMEBREW_NO_AUTO_UPDATE: "true" - steps: - #- run: git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow - - prepare_go - - generic_integration: - result_subdir: mac_amd64_e2e_expect - circleci_home: /Users/distiller - short_test_flag: "-short" - - mac_amd64_e2e_expect_nightly: - macos: - xcode: 12.0.1 - resource_class: medium - parallelism: 2 - environment: - E2E_TEST_FILTER: "EXPECT" - HOMEBREW_NO_AUTO_UPDATE: "true" - steps: - #- run: git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow - - prepare_go - - generic_integration: - result_subdir: mac_amd64_e2e_expect_nightly - circleci_home: /Users/distiller - no_output_timeout: 45m - - slack/notify: - event: fail - template: basic_fail_1 + <<: *slack-fail-event windows_x64_build: executor: @@ -893,16 +677,32 @@ jobs: export MAKE=mingw32-make $msys2 scripts/travis/build_test.sh shell: bash.exe + tests_verification_job: docker: - image: python:3.9.6-alpine resource_class: small + working_directory: << pipeline.parameters.build_dir >>/project parameters: - job_type: # job_type: ["amd64", "arm64", "mac_amd64"] + platform: # platform: ["amd64", "arm64", "mac_amd64"] type: string - job_version: # job_version: ["test", "test_nightly", "integration", "integration_nightly", "e2e_expect", "e2e_expect_nightly"] + job_type: # job_type: ["test", "test_nightly", "integration", "integration_nightly", "e2e_expect", "e2e_expect_nightly"] type: string steps: - checkout - tests_verification_command: - result_subdir: << parameters.job_type >>_<< parameters.job_version >> + result_subdir: << parameters.platform >>_<< parameters.job_type >> + + upload_binaries: + working_directory: << pipeline.parameters.build_dir >>/project + parameters: + platform: + type: string + executor: << parameters.platform >>_medium + steps: + - prepare_build_dir + - prepare_go + - upload_binaries_command: + platform: << parameters.platform >> + - slack/notify: + <<: *slack-fail-event |