diff --git a/.gitlab/ci/pipelines/before_merging.yml b/.gitlab/ci/pipelines/before_merging.yml index 6cd25714de66c36e515e4bd5b17d28f0fad26bbe..57ef93cf21d10cfd4aed7334489eaf3acba90910 100644 --- a/.gitlab/ci/pipelines/before_merging.yml +++ b/.gitlab/ci/pipelines/before_merging.yml @@ -735,7 +735,7 @@ oc.build_x86_64-released: image: ${ci_image_name}/build:${ci_image_tag} stage: build tags: - - gcp_high_cpu + - gcp_very_high_cpu_ramfs rules: - changes: - .gitlab-ci.yml @@ -1397,100 +1397,6 @@ build_grafazos_dashboards: - grafazos/output/**/*.json when: on_success -teztale.build:static-x86_64: - image: ${ci_image_name}/build:${ci_image_tag} - stage: build - tags: - - gcp - rules: - - changes: - - teztale/**/* - when: on_success - - when: manual - allow_failure: true - dependencies: - - oc.docker:ci:amd64 - timeout: 60 minutes - cache: - - key: cargo-$CI_JOB_NAME_SLUG - paths: - - $CI_PROJECT_DIR/.cargo/registry/cache - policy: pull-push - - key: sccache-$CI_JOB_NAME_SLUG - paths: - - $CI_PROJECT_DIR/_sccache - policy: pull-push - before_script: - - . ./scripts/ci/datadog_send_job_info.sh - - ./scripts/ci/take_ownership.sh - - . ./scripts/version.sh - - eval $(opam env) - - . ./scripts/ci/sccache-start.sh - script: - - make teztale - after_script: - - mkdir -p ./teztale-binaries/x86_64 - - mv octez-teztale-* ./teztale-binaries/x86_64/ - - ./scripts/ci/sccache-stop.sh - variables: - PROFILE: static - CARGO_NET_OFFLINE: "false" - SCCACHE_DIR: $CI_PROJECT_DIR/_sccache - SCCACHE_CACHE_SIZE: 5G - artifacts: - name: teztale-binaries - expire_in: 1 day - paths: - - teztale-binaries/x86_64/octez-teztale-* - when: on_success - -teztale.build:static-arm64: - image: ${ci_image_name}/build:${ci_image_tag} - stage: build - tags: - - gcp_arm64 - rules: - - changes: - - teztale/**/* - when: on_success - - when: manual - allow_failure: true - dependencies: - - oc.docker:ci:arm64 - timeout: 60 minutes - cache: - - key: cargo-$CI_JOB_NAME_SLUG - paths: - - $CI_PROJECT_DIR/.cargo/registry/cache - policy: pull-push - - key: sccache-$CI_JOB_NAME_SLUG - paths: - - $CI_PROJECT_DIR/_sccache - policy: pull-push - before_script: - - . ./scripts/ci/datadog_send_job_info.sh - - ./scripts/ci/take_ownership.sh - - . ./scripts/version.sh - - eval $(opam env) - - . ./scripts/ci/sccache-start.sh - script: - - make teztale - after_script: - - mkdir -p ./teztale-binaries/arm64 - - mv octez-teztale-* ./teztale-binaries/arm64/ - - ./scripts/ci/sccache-stop.sh - variables: - PROFILE: static - CARGO_NET_OFFLINE: "false" - SCCACHE_DIR: $CI_PROJECT_DIR/_sccache - SCCACHE_CACHE_SIZE: 5G - artifacts: - name: teztale-binaries - expire_in: 1 day - paths: - - teztale-binaries/arm64/octez-teztale-* - when: on_success - etherlink.build:static-x86_64: image: ${ci_image_name}/build:${ci_image_tag} stage: build @@ -3812,186 +3718,6 @@ tezt: retry: 2 parallel: 100 -tezt-memory-3k: - image: ${ci_image_name}/e2etest:${ci_image_tag} - stage: test - tags: - - gcp_tezt_memory_3k - rules: - - changes: - - .gitlab-ci.yml - - .gitlab/**/* - - CHANGES.rst - - LICENSES/**/* - - Makefile - - brassaia-eio/**/* - - brassaia/**/* - - cohttp/**/* - - data-encoding/**/* - - dune - - dune-project - - dune-workspace - - etherlink/**/* - - irmin/**/* - - michelson_test_scripts/**/* - - opam/**/* - - opentelemetry/**/* - - prometheus/**/* - - resto/**/* - - rust-toolchain - - script-inputs/**/* - - scripts/**/* - - sdk/**/* - - src/**/* - - tezt/**/* - - tzt_reference_test_suite/**/* - when: on_success - needs: - - oc.docker:ci:amd64 - - select_tezts - - oc.build_x86_64-released - - oc.build_x86_64-exp-dev-extra - - oc.build_kernels - - oc.build_dsn_node - - oc.tezt:fetch-records - dependencies: - - oc.docker:ci:amd64 - - select_tezts - - oc.build_x86_64-released - - oc.build_x86_64-exp-dev-extra - - oc.build_kernels - - oc.build_dsn_node - - oc.tezt:fetch-records - timeout: 60 minutes - before_script: - - . ./scripts/ci/datadog_send_job_info.sh - - . ./scripts/version.sh - script: - - echo "TESTS=\"${TESTS}\" JUNIT=\"${JUNIT}\" CI_NODE_INDEX=\"${CI_NODE_INDEX}\" - CI_NODE_TOTAL=\"${CI_NODE_TOTAL}\" TEZT_PARALLEL=\"${TEZT_PARALLEL}\" TEZT_VARIANT=\"${TEZT_VARIANT}\"" - - ./scripts/ci/tezt.sh --with-select-tezts "${TESTS}" --from-record tezt/records - --job ${CI_NODE_INDEX:-1}/${CI_NODE_TOTAL:-1} --list-tsv > selected_tezts.tsv - - ./scripts/ci/exit_code.sh timeout -k 60 1860 ./scripts/ci/tezt.sh --send-junit - --with-select-tezts "${TESTS}" --color --log-buffer-size 5000 --log-file tezt.log - --global-timeout 1800 --on-unknown-regression-files fail --junit ${JUNIT} --from-record - tezt/records --job ${CI_NODE_INDEX:-1}/${CI_NODE_TOTAL:-1} --record tezt-results-${CI_NODE_INDEX:-1}${TEZT_VARIANT}.json - --job-count ${TEZT_PARALLEL} --retry ${TEZT_RETRY} - - ./scripts/ci/merge_coverage.sh - variables: - JUNIT: tezt-junit.xml - TEZT_VARIANT: -memory_3k - TESTS: memory_3k && /ci_disabled && /memory_4k && /time_sensitive && /slow && - /cloud - TEZT_RETRY: "1" - TEZT_PARALLEL: "1" - TEZT_NO_NPX: "true" - BISECT_FILE: $CI_PROJECT_DIR/_coverage_output/ - artifacts: - name: coverage-files-$CI_JOB_ID - expire_in: 7 days - paths: - - selected_tezts.tsv - - tezt.log - - tezt-*.log - - tezt-results-${CI_NODE_INDEX:-1}${TEZT_VARIANT}.json - - $JUNIT - - $BISECT_FILE/$CI_JOB_NAME_SLUG.* - reports: - junit: $JUNIT - when: always - retry: 2 - parallel: 12 - -tezt-memory-4k: - image: ${ci_image_name}/e2etest:${ci_image_tag} - stage: test - tags: - - gcp_tezt_memory_4k - rules: - - changes: - - .gitlab-ci.yml - - .gitlab/**/* - - CHANGES.rst - - LICENSES/**/* - - Makefile - - brassaia-eio/**/* - - brassaia/**/* - - cohttp/**/* - - data-encoding/**/* - - dune - - dune-project - - dune-workspace - - etherlink/**/* - - irmin/**/* - - michelson_test_scripts/**/* - - opam/**/* - - opentelemetry/**/* - - prometheus/**/* - - resto/**/* - - rust-toolchain - - script-inputs/**/* - - scripts/**/* - - sdk/**/* - - src/**/* - - tezt/**/* - - tzt_reference_test_suite/**/* - when: on_success - needs: - - oc.docker:ci:amd64 - - select_tezts - - oc.build_x86_64-released - - oc.build_x86_64-exp-dev-extra - - oc.build_kernels - - oc.build_dsn_node - - oc.tezt:fetch-records - dependencies: - - oc.docker:ci:amd64 - - select_tezts - - oc.build_x86_64-released - - oc.build_x86_64-exp-dev-extra - - oc.build_kernels - - oc.build_dsn_node - - oc.tezt:fetch-records - timeout: 60 minutes - before_script: - - . ./scripts/ci/datadog_send_job_info.sh - - . ./scripts/version.sh - script: - - echo "TESTS=\"${TESTS}\" JUNIT=\"${JUNIT}\" CI_NODE_INDEX=\"${CI_NODE_INDEX}\" - CI_NODE_TOTAL=\"${CI_NODE_TOTAL}\" TEZT_PARALLEL=\"${TEZT_PARALLEL}\" TEZT_VARIANT=\"${TEZT_VARIANT}\"" - - ./scripts/ci/tezt.sh --with-select-tezts "${TESTS}" --from-record tezt/records - --job ${CI_NODE_INDEX:-1}/${CI_NODE_TOTAL:-1} --list-tsv > selected_tezts.tsv - - ./scripts/ci/exit_code.sh timeout -k 60 1860 ./scripts/ci/tezt.sh --send-junit - --with-select-tezts "${TESTS}" --color --log-buffer-size 5000 --log-file tezt.log - --global-timeout 1800 --on-unknown-regression-files fail --junit ${JUNIT} --from-record - tezt/records --job ${CI_NODE_INDEX:-1}/${CI_NODE_TOTAL:-1} --record tezt-results-${CI_NODE_INDEX:-1}${TEZT_VARIANT}.json - --job-count ${TEZT_PARALLEL} --retry ${TEZT_RETRY} - - ./scripts/ci/merge_coverage.sh - variables: - JUNIT: tezt-junit.xml - TEZT_VARIANT: -memory_4k - TESTS: memory_4k && /ci_disabled && /memory_3k && /time_sensitive && /slow && - /cloud - TEZT_RETRY: "1" - TEZT_PARALLEL: "1" - TEZT_NO_NPX: "true" - BISECT_FILE: $CI_PROJECT_DIR/_coverage_output/ - artifacts: - name: coverage-files-$CI_JOB_ID - expire_in: 7 days - paths: - - selected_tezts.tsv - - tezt.log - - tezt-*.log - - tezt-results-${CI_NODE_INDEX:-1}${TEZT_VARIANT}.json - - $JUNIT - - $BISECT_FILE/$CI_JOB_NAME_SLUG.* - reports: - junit: $JUNIT - when: always - retry: 2 - parallel: 4 - tezt-time-sensitive: image: ${ci_image_name}/e2etest:${ci_image_tag} stage: test @@ -4383,8 +4109,6 @@ oc.unified_coverage: - oc.unit:other-x86_64 - oc.unit:proto-x86_64 - tezt - - tezt-memory-3k - - tezt-memory-4k - tezt-time-sensitive - tezt-flaky allow_failure: diff --git a/.gitlab/ci/pipelines/merge_train.yml b/.gitlab/ci/pipelines/merge_train.yml index 6dceeaa3b0c2dd12c6951bf5242bcbf64887a271..ec32cbc01f756ec1c6abeb1a2244e45a2d16dc42 100644 --- a/.gitlab/ci/pipelines/merge_train.yml +++ b/.gitlab/ci/pipelines/merge_train.yml @@ -734,7 +734,7 @@ oc.build_x86_64-released: image: ${ci_image_name}/build:${ci_image_tag} stage: build tags: - - gcp_high_cpu + - gcp_very_high_cpu_ramfs rules: - changes: - .gitlab-ci.yml @@ -1396,100 +1396,6 @@ build_grafazos_dashboards: - grafazos/output/**/*.json when: on_success -teztale.build:static-x86_64: - image: ${ci_image_name}/build:${ci_image_tag} - stage: build - tags: - - gcp - rules: - - changes: - - teztale/**/* - when: on_success - - when: manual - allow_failure: true - dependencies: - - oc.docker:ci:amd64 - timeout: 60 minutes - cache: - - key: cargo-$CI_JOB_NAME_SLUG - paths: - - $CI_PROJECT_DIR/.cargo/registry/cache - policy: pull-push - - key: sccache-$CI_JOB_NAME_SLUG - paths: - - $CI_PROJECT_DIR/_sccache - policy: pull-push - before_script: - - . ./scripts/ci/datadog_send_job_info.sh - - ./scripts/ci/take_ownership.sh - - . ./scripts/version.sh - - eval $(opam env) - - . ./scripts/ci/sccache-start.sh - script: - - make teztale - after_script: - - mkdir -p ./teztale-binaries/x86_64 - - mv octez-teztale-* ./teztale-binaries/x86_64/ - - ./scripts/ci/sccache-stop.sh - variables: - PROFILE: static - CARGO_NET_OFFLINE: "false" - SCCACHE_DIR: $CI_PROJECT_DIR/_sccache - SCCACHE_CACHE_SIZE: 5G - artifacts: - name: teztale-binaries - expire_in: 1 day - paths: - - teztale-binaries/x86_64/octez-teztale-* - when: on_success - -teztale.build:static-arm64: - image: ${ci_image_name}/build:${ci_image_tag} - stage: build - tags: - - gcp_arm64 - rules: - - changes: - - teztale/**/* - when: on_success - - when: manual - allow_failure: true - dependencies: - - oc.docker:ci:arm64 - timeout: 60 minutes - cache: - - key: cargo-$CI_JOB_NAME_SLUG - paths: - - $CI_PROJECT_DIR/.cargo/registry/cache - policy: pull-push - - key: sccache-$CI_JOB_NAME_SLUG - paths: - - $CI_PROJECT_DIR/_sccache - policy: pull-push - before_script: - - . ./scripts/ci/datadog_send_job_info.sh - - ./scripts/ci/take_ownership.sh - - . ./scripts/version.sh - - eval $(opam env) - - . ./scripts/ci/sccache-start.sh - script: - - make teztale - after_script: - - mkdir -p ./teztale-binaries/arm64 - - mv octez-teztale-* ./teztale-binaries/arm64/ - - ./scripts/ci/sccache-stop.sh - variables: - PROFILE: static - CARGO_NET_OFFLINE: "false" - SCCACHE_DIR: $CI_PROJECT_DIR/_sccache - SCCACHE_CACHE_SIZE: 5G - artifacts: - name: teztale-binaries - expire_in: 1 day - paths: - - teztale-binaries/arm64/octez-teztale-* - when: on_success - etherlink.build:static-x86_64: image: ${ci_image_name}/build:${ci_image_tag} stage: build @@ -3811,186 +3717,6 @@ tezt: retry: 2 parallel: 100 -tezt-memory-3k: - image: ${ci_image_name}/e2etest:${ci_image_tag} - stage: test - tags: - - gcp_tezt_memory_3k - rules: - - changes: - - .gitlab-ci.yml - - .gitlab/**/* - - CHANGES.rst - - LICENSES/**/* - - Makefile - - brassaia-eio/**/* - - brassaia/**/* - - cohttp/**/* - - data-encoding/**/* - - dune - - dune-project - - dune-workspace - - etherlink/**/* - - irmin/**/* - - michelson_test_scripts/**/* - - opam/**/* - - opentelemetry/**/* - - prometheus/**/* - - resto/**/* - - rust-toolchain - - script-inputs/**/* - - scripts/**/* - - sdk/**/* - - src/**/* - - tezt/**/* - - tzt_reference_test_suite/**/* - when: on_success - needs: - - oc.docker:ci:amd64 - - select_tezts - - oc.build_x86_64-released - - oc.build_x86_64-exp-dev-extra - - oc.build_kernels - - oc.build_dsn_node - - oc.tezt:fetch-records - dependencies: - - oc.docker:ci:amd64 - - select_tezts - - oc.build_x86_64-released - - oc.build_x86_64-exp-dev-extra - - oc.build_kernels - - oc.build_dsn_node - - oc.tezt:fetch-records - timeout: 60 minutes - before_script: - - . ./scripts/ci/datadog_send_job_info.sh - - . ./scripts/version.sh - script: - - echo "TESTS=\"${TESTS}\" JUNIT=\"${JUNIT}\" CI_NODE_INDEX=\"${CI_NODE_INDEX}\" - CI_NODE_TOTAL=\"${CI_NODE_TOTAL}\" TEZT_PARALLEL=\"${TEZT_PARALLEL}\" TEZT_VARIANT=\"${TEZT_VARIANT}\"" - - ./scripts/ci/tezt.sh --with-select-tezts "${TESTS}" --from-record tezt/records - --job ${CI_NODE_INDEX:-1}/${CI_NODE_TOTAL:-1} --list-tsv > selected_tezts.tsv - - ./scripts/ci/exit_code.sh timeout -k 60 1860 ./scripts/ci/tezt.sh --send-junit - --with-select-tezts "${TESTS}" --color --log-buffer-size 5000 --log-file tezt.log - --global-timeout 1800 --on-unknown-regression-files fail --junit ${JUNIT} --from-record - tezt/records --job ${CI_NODE_INDEX:-1}/${CI_NODE_TOTAL:-1} --record tezt-results-${CI_NODE_INDEX:-1}${TEZT_VARIANT}.json - --job-count ${TEZT_PARALLEL} --retry ${TEZT_RETRY} - - ./scripts/ci/merge_coverage.sh - variables: - JUNIT: tezt-junit.xml - TEZT_VARIANT: -memory_3k - TESTS: memory_3k && /ci_disabled && /memory_4k && /time_sensitive && /slow && - /cloud - TEZT_RETRY: "1" - TEZT_PARALLEL: "1" - TEZT_NO_NPX: "true" - BISECT_FILE: $CI_PROJECT_DIR/_coverage_output/ - artifacts: - name: coverage-files-$CI_JOB_ID - expire_in: 7 days - paths: - - selected_tezts.tsv - - tezt.log - - tezt-*.log - - tezt-results-${CI_NODE_INDEX:-1}${TEZT_VARIANT}.json - - $JUNIT - - $BISECT_FILE/$CI_JOB_NAME_SLUG.* - reports: - junit: $JUNIT - when: always - retry: 2 - parallel: 12 - -tezt-memory-4k: - image: ${ci_image_name}/e2etest:${ci_image_tag} - stage: test - tags: - - gcp_tezt_memory_4k - rules: - - changes: - - .gitlab-ci.yml - - .gitlab/**/* - - CHANGES.rst - - LICENSES/**/* - - Makefile - - brassaia-eio/**/* - - brassaia/**/* - - cohttp/**/* - - data-encoding/**/* - - dune - - dune-project - - dune-workspace - - etherlink/**/* - - irmin/**/* - - michelson_test_scripts/**/* - - opam/**/* - - opentelemetry/**/* - - prometheus/**/* - - resto/**/* - - rust-toolchain - - script-inputs/**/* - - scripts/**/* - - sdk/**/* - - src/**/* - - tezt/**/* - - tzt_reference_test_suite/**/* - when: on_success - needs: - - oc.docker:ci:amd64 - - select_tezts - - oc.build_x86_64-released - - oc.build_x86_64-exp-dev-extra - - oc.build_kernels - - oc.build_dsn_node - - oc.tezt:fetch-records - dependencies: - - oc.docker:ci:amd64 - - select_tezts - - oc.build_x86_64-released - - oc.build_x86_64-exp-dev-extra - - oc.build_kernels - - oc.build_dsn_node - - oc.tezt:fetch-records - timeout: 60 minutes - before_script: - - . ./scripts/ci/datadog_send_job_info.sh - - . ./scripts/version.sh - script: - - echo "TESTS=\"${TESTS}\" JUNIT=\"${JUNIT}\" CI_NODE_INDEX=\"${CI_NODE_INDEX}\" - CI_NODE_TOTAL=\"${CI_NODE_TOTAL}\" TEZT_PARALLEL=\"${TEZT_PARALLEL}\" TEZT_VARIANT=\"${TEZT_VARIANT}\"" - - ./scripts/ci/tezt.sh --with-select-tezts "${TESTS}" --from-record tezt/records - --job ${CI_NODE_INDEX:-1}/${CI_NODE_TOTAL:-1} --list-tsv > selected_tezts.tsv - - ./scripts/ci/exit_code.sh timeout -k 60 1860 ./scripts/ci/tezt.sh --send-junit - --with-select-tezts "${TESTS}" --color --log-buffer-size 5000 --log-file tezt.log - --global-timeout 1800 --on-unknown-regression-files fail --junit ${JUNIT} --from-record - tezt/records --job ${CI_NODE_INDEX:-1}/${CI_NODE_TOTAL:-1} --record tezt-results-${CI_NODE_INDEX:-1}${TEZT_VARIANT}.json - --job-count ${TEZT_PARALLEL} --retry ${TEZT_RETRY} - - ./scripts/ci/merge_coverage.sh - variables: - JUNIT: tezt-junit.xml - TEZT_VARIANT: -memory_4k - TESTS: memory_4k && /ci_disabled && /memory_3k && /time_sensitive && /slow && - /cloud - TEZT_RETRY: "1" - TEZT_PARALLEL: "1" - TEZT_NO_NPX: "true" - BISECT_FILE: $CI_PROJECT_DIR/_coverage_output/ - artifacts: - name: coverage-files-$CI_JOB_ID - expire_in: 7 days - paths: - - selected_tezts.tsv - - tezt.log - - tezt-*.log - - tezt-results-${CI_NODE_INDEX:-1}${TEZT_VARIANT}.json - - $JUNIT - - $BISECT_FILE/$CI_JOB_NAME_SLUG.* - reports: - junit: $JUNIT - when: always - retry: 2 - parallel: 4 - tezt-time-sensitive: image: ${ci_image_name}/e2etest:${ci_image_tag} stage: test @@ -4382,8 +4108,6 @@ oc.unified_coverage: - oc.unit:other-x86_64 - oc.unit:proto-x86_64 - tezt - - tezt-memory-3k - - tezt-memory-4k - tezt-time-sensitive - tezt-flaky allow_failure: diff --git a/.gitlab/ci/pipelines/octez_monitoring.yml b/.gitlab/ci/pipelines/octez_monitoring.yml index 66e687b8d4cac729c0e360660d7fc660a2d41449..b1801b915ded2e8302a4265e1c97d78f6f45d021 100644 --- a/.gitlab/ci/pipelines/octez_monitoring.yml +++ b/.gitlab/ci/pipelines/octez_monitoring.yml @@ -53,31 +53,6 @@ oc.docker:jsonnet:amd64: reports: dotenv: jsonnet_image_tag.env -oc.docker:ci:arm64: - image: ${GCP_REGISTRY}/tezos/docker-images/ci-docker:v1.12.0 - stage: images - tags: - - gcp_arm64 - dependencies: [] - timeout: 90 minutes - before_script: - - . ./scripts/ci/datadog_send_job_info.sh - script: - - ./images/ci_create_ci_images.sh - services: - - docker:${DOCKER_VERSION}-dind - variables: - DOCKER_VERSION: 24.0.7 - CI_DOCKER_HUB: "false" - ARCH: arm64 - artifacts: - reports: - dotenv: ci_image_tag.env - retry: - max: 1 - when: - - runner_system_failure - datadog_pipeline_trace: image: datadog/ci:v2.44.0 stage: start @@ -160,47 +135,6 @@ build-layer1-profiling: - stuck_or_timeout_failure - runner_system_failure -teztale.build:static-arm64: - image: ${ci_image_name}/build:${ci_image_tag} - stage: build - tags: - - gcp_arm64 - dependencies: - - oc.docker:ci:arm64 - timeout: 60 minutes - cache: - - key: cargo-$CI_JOB_NAME_SLUG - paths: - - $CI_PROJECT_DIR/.cargo/registry/cache - policy: pull-push - - key: sccache-$CI_JOB_NAME_SLUG - paths: - - $CI_PROJECT_DIR/_sccache - policy: pull-push - before_script: - - . ./scripts/ci/datadog_send_job_info.sh - - ./scripts/ci/take_ownership.sh - - . ./scripts/version.sh - - eval $(opam env) - - . ./scripts/ci/sccache-start.sh - script: - - make teztale - after_script: - - mkdir -p ./teztale-binaries/arm64 - - mv octez-teztale-* ./teztale-binaries/arm64/ - - ./scripts/ci/sccache-stop.sh - variables: - PROFILE: static - CARGO_NET_OFFLINE: "false" - SCCACHE_DIR: $CI_PROJECT_DIR/_sccache - SCCACHE_CACHE_SIZE: 5G - artifacts: - name: teztale-binaries - expire_in: never - paths: - - teztale-binaries/arm64/octez-teztale-* - when: on_success - teztale.build:static-x86_64: image: ${ci_image_name}/build:${ci_image_tag} stage: build diff --git a/.gitlab/ci/pipelines/schedule_extended_test.yml b/.gitlab/ci/pipelines/schedule_extended_test.yml index 481c8e2c1e246f2e47fde695303ff6335c505efb..115146c3a4fdece57522aff37e7db3ca247fed3b 100644 --- a/.gitlab/ci/pipelines/schedule_extended_test.yml +++ b/.gitlab/ci/pipelines/schedule_extended_test.yml @@ -528,7 +528,7 @@ oc.build_x86_64-released: image: ${ci_image_name}/build:${ci_image_tag} stage: build tags: - - gcp_high_cpu + - gcp_very_high_cpu_ramfs rules: - when: always dependencies: @@ -927,94 +927,6 @@ build_grafazos_dashboards: - grafazos/output/**/*.json when: on_success -teztale.build:static-x86_64: - image: ${ci_image_name}/build:${ci_image_tag} - stage: build - tags: - - gcp - rules: - - when: always - dependencies: - - oc.docker:ci:amd64 - timeout: 60 minutes - cache: - - key: cargo-$CI_JOB_NAME_SLUG - paths: - - $CI_PROJECT_DIR/.cargo/registry/cache - policy: pull-push - - key: sccache-$CI_JOB_NAME_SLUG - paths: - - $CI_PROJECT_DIR/_sccache - policy: pull-push - interruptible: false - before_script: - - . ./scripts/ci/datadog_send_job_info.sh - - ./scripts/ci/take_ownership.sh - - . ./scripts/version.sh - - eval $(opam env) - - . ./scripts/ci/sccache-start.sh - script: - - make teztale - after_script: - - mkdir -p ./teztale-binaries/x86_64 - - mv octez-teztale-* ./teztale-binaries/x86_64/ - - ./scripts/ci/sccache-stop.sh - variables: - PROFILE: static - CARGO_NET_OFFLINE: "false" - SCCACHE_DIR: $CI_PROJECT_DIR/_sccache - SCCACHE_CACHE_SIZE: 5G - artifacts: - name: teztale-binaries - expire_in: 1 day - paths: - - teztale-binaries/x86_64/octez-teztale-* - when: on_success - -teztale.build:static-arm64: - image: ${ci_image_name}/build:${ci_image_tag} - stage: build - tags: - - gcp_arm64 - rules: - - when: always - dependencies: - - oc.docker:ci:arm64 - timeout: 60 minutes - cache: - - key: cargo-$CI_JOB_NAME_SLUG - paths: - - $CI_PROJECT_DIR/.cargo/registry/cache - policy: pull-push - - key: sccache-$CI_JOB_NAME_SLUG - paths: - - $CI_PROJECT_DIR/_sccache - policy: pull-push - interruptible: false - before_script: - - . ./scripts/ci/datadog_send_job_info.sh - - ./scripts/ci/take_ownership.sh - - . ./scripts/version.sh - - eval $(opam env) - - . ./scripts/ci/sccache-start.sh - script: - - make teztale - after_script: - - mkdir -p ./teztale-binaries/arm64 - - mv octez-teztale-* ./teztale-binaries/arm64/ - - ./scripts/ci/sccache-stop.sh - variables: - PROFILE: static - CARGO_NET_OFFLINE: "false" - SCCACHE_DIR: $CI_PROJECT_DIR/_sccache - SCCACHE_CACHE_SIZE: 5G - artifacts: - name: teztale-binaries - expire_in: 1 day - paths: - - teztale-binaries/arm64/octez-teztale-* - when: on_success - etherlink.build:static-x86_64: image: ${ci_image_name}/build:${ci_image_tag} stage: build @@ -3198,130 +3110,6 @@ tezt: retry: 2 parallel: 100 -tezt-memory-3k: - image: ${ci_image_name}/e2etest:${ci_image_tag} - stage: test - tags: - - gcp_tezt_memory_3k - rules: - - when: on_success - needs: - - oc.docker:ci:amd64 - - oc.build_x86_64-released - - oc.build_x86_64-exp-dev-extra - - oc.build_kernels - - oc.build_dsn_node - - oc.tezt:fetch-records - dependencies: - - oc.docker:ci:amd64 - - oc.build_x86_64-released - - oc.build_x86_64-exp-dev-extra - - oc.build_kernels - - oc.build_dsn_node - - oc.tezt:fetch-records - timeout: 60 minutes - interruptible: false - before_script: - - . ./scripts/ci/datadog_send_job_info.sh - - . ./scripts/version.sh - script: - - echo "TESTS=\"${TESTS}\" JUNIT=\"${JUNIT}\" CI_NODE_INDEX=\"${CI_NODE_INDEX}\" - CI_NODE_TOTAL=\"${CI_NODE_TOTAL}\" TEZT_PARALLEL=\"${TEZT_PARALLEL}\" TEZT_VARIANT=\"${TEZT_VARIANT}\"" - - ./scripts/ci/tezt.sh --without-select-tezts "${TESTS}" --from-record tezt/records - --job ${CI_NODE_INDEX:-1}/${CI_NODE_TOTAL:-1} --list-tsv > selected_tezts.tsv - - ./scripts/ci/exit_code.sh timeout -k 60 1860 ./scripts/ci/tezt.sh --send-junit - --without-select-tezts "${TESTS}" --color --log-buffer-size 5000 --log-file tezt.log - --global-timeout 1800 --on-unknown-regression-files fail --junit ${JUNIT} --from-record - tezt/records --job ${CI_NODE_INDEX:-1}/${CI_NODE_TOTAL:-1} --record tezt-results-${CI_NODE_INDEX:-1}${TEZT_VARIANT}.json - --job-count ${TEZT_PARALLEL} --retry ${TEZT_RETRY} - - ./scripts/ci/merge_coverage.sh - variables: - JUNIT: tezt-junit.xml - TEZT_VARIANT: -memory_3k - TESTS: memory_3k && /ci_disabled && /memory_4k && /time_sensitive && /slow && - /cloud - TEZT_RETRY: "1" - TEZT_PARALLEL: "1" - TEZT_NO_NPX: "true" - BISECT_FILE: $CI_PROJECT_DIR/_coverage_output/ - artifacts: - name: coverage-files-$CI_JOB_ID - expire_in: 7 days - paths: - - selected_tezts.tsv - - tezt.log - - tezt-*.log - - tezt-results-${CI_NODE_INDEX:-1}${TEZT_VARIANT}.json - - $JUNIT - - $BISECT_FILE/$CI_JOB_NAME_SLUG.* - reports: - junit: $JUNIT - when: always - retry: 2 - parallel: 12 - -tezt-memory-4k: - image: ${ci_image_name}/e2etest:${ci_image_tag} - stage: test - tags: - - gcp_tezt_memory_4k - rules: - - when: on_success - needs: - - oc.docker:ci:amd64 - - oc.build_x86_64-released - - oc.build_x86_64-exp-dev-extra - - oc.build_kernels - - oc.build_dsn_node - - oc.tezt:fetch-records - dependencies: - - oc.docker:ci:amd64 - - oc.build_x86_64-released - - oc.build_x86_64-exp-dev-extra - - oc.build_kernels - - oc.build_dsn_node - - oc.tezt:fetch-records - timeout: 60 minutes - interruptible: false - before_script: - - . ./scripts/ci/datadog_send_job_info.sh - - . ./scripts/version.sh - script: - - echo "TESTS=\"${TESTS}\" JUNIT=\"${JUNIT}\" CI_NODE_INDEX=\"${CI_NODE_INDEX}\" - CI_NODE_TOTAL=\"${CI_NODE_TOTAL}\" TEZT_PARALLEL=\"${TEZT_PARALLEL}\" TEZT_VARIANT=\"${TEZT_VARIANT}\"" - - ./scripts/ci/tezt.sh --without-select-tezts "${TESTS}" --from-record tezt/records - --job ${CI_NODE_INDEX:-1}/${CI_NODE_TOTAL:-1} --list-tsv > selected_tezts.tsv - - ./scripts/ci/exit_code.sh timeout -k 60 1860 ./scripts/ci/tezt.sh --send-junit - --without-select-tezts "${TESTS}" --color --log-buffer-size 5000 --log-file tezt.log - --global-timeout 1800 --on-unknown-regression-files fail --junit ${JUNIT} --from-record - tezt/records --job ${CI_NODE_INDEX:-1}/${CI_NODE_TOTAL:-1} --record tezt-results-${CI_NODE_INDEX:-1}${TEZT_VARIANT}.json - --job-count ${TEZT_PARALLEL} --retry ${TEZT_RETRY} - - ./scripts/ci/merge_coverage.sh - variables: - JUNIT: tezt-junit.xml - TEZT_VARIANT: -memory_4k - TESTS: memory_4k && /ci_disabled && /memory_3k && /time_sensitive && /slow && - /cloud - TEZT_RETRY: "1" - TEZT_PARALLEL: "1" - TEZT_NO_NPX: "true" - BISECT_FILE: $CI_PROJECT_DIR/_coverage_output/ - artifacts: - name: coverage-files-$CI_JOB_ID - expire_in: 7 days - paths: - - selected_tezts.tsv - - tezt.log - - tezt-*.log - - tezt-results-${CI_NODE_INDEX:-1}${TEZT_VARIANT}.json - - $JUNIT - - $BISECT_FILE/$CI_JOB_NAME_SLUG.* - reports: - junit: $JUNIT - when: always - retry: 2 - parallel: 4 - tezt-time-sensitive: image: ${ci_image_name}/e2etest:${ci_image_tag} stage: test diff --git a/ci/bin/code_verification.ml b/ci/bin/code_verification.ml index 7e990fa97e0ada4a5f491745e0e788f844d58b69..379fd160be9ec179e2fdcd1bd784d5e1cbdaf942 100644 --- a/ci/bin/code_verification.ml +++ b/ci/bin/code_verification.ml @@ -597,7 +597,8 @@ let jobs pipeline_type = job_build_dynamic_binaries ~__POS__ ~arch:Amd64 - ~cpu:High + ~cpu:Very_high + ~storage:Ramfs ~retry: {max = 2; when_ = [Stuck_or_timeout_failure; Runner_system_failure]} ~dependencies:dependencies_needs_start @@ -685,6 +686,7 @@ let jobs pipeline_type = job_build_static_binaries ~__POS__ ~arch:Arm64 + ~storage:Ramfs ~dependencies:dependencies_needs_start (* See rationale above *) ~rules:(make_rules ~manual:(On_changes changeset_octez) ()) () @@ -723,6 +725,7 @@ let jobs pipeline_type = job ~__POS__ ~arch:Arm64 + ~storage:Ramfs ~name:("etherlink.build:static-" ^ arch_to_string Arm64) ~image:Images.CI.build ~stage:Stages.build @@ -845,12 +848,6 @@ let jobs pipeline_type = ~rules:[job_rule ~when_:Always ()] () in - let job_build_teztale ~arch = - Teztale.Common.job_build - ~arch - ~rules:(make_rules ~manual:Yes ~changes:Teztale.Common.changeset ()) - () - in [ job_build_arm64_release; job_build_arm64_exp_dev_extra; @@ -865,8 +862,6 @@ let jobs pipeline_type = job_tezt_fetch_records; build_octez_source; job_build_grafazos; - job_build_teztale ~arch:Amd64; - job_build_teztale ~arch:Arm64; job_evm_static_x86_64_experimental; job_evm_static_arm64_experimental; job_build_layer1_profiling (); @@ -1069,7 +1064,7 @@ let jobs pipeline_type = make_rules ~changes:changeset_octez ~dependent:true () in let job_unit_test ~__POS__ ?(image = Images.CI.build) ?timeout - ?parallel_vector ?(rules = rules) ~arch ?(cpu = Normal) ~name + ?parallel_vector ?(rules = rules) ~arch ?(cpu = Normal) ?storage ~name ~make_targets () : tezos_job = let arch_string = arch_to_string arch in let script = ["make $MAKE_TARGETS"] in @@ -1104,6 +1099,7 @@ let jobs pipeline_type = ~image ~arch ~cpu + ?storage ~dependencies ~rules ~variables @@ -1171,6 +1167,7 @@ let jobs pipeline_type = job_unit_test ~__POS__ ~name:"oc.unit:non-proto-arm64" + ~storage:Ramfs ~parallel_vector:2 ~arch:Arm64 (* The [lib_benchmark] unit tests require Python *) ~image:Images.CI.test @@ -1213,11 +1210,12 @@ let jobs pipeline_type = in (* "de" stands for data-encoding, since data-encoding is considered to be a separate product. *) - let de_unit arch = + let de_unit arch ?storage () = job ~__POS__ ~name:("de.unit:" ^ arch_to_string arch) ~arch + ?storage ~image:Images.CI.test ~stage:Stages.test ~rules: @@ -1231,11 +1229,12 @@ let jobs pipeline_type = ~before_script:(before_script ~eval_opam:true []) ["dune runtest data-encoding"] in - let resto_unit arch = + let resto_unit arch ?storage () = job ~__POS__ ~name:("resto.unit:" ^ arch_to_string arch) ~arch + ?storage ~image:Images.CI.test ~stage:Stages.test ~rules: @@ -1255,10 +1254,10 @@ let jobs pipeline_type = oc_unit_non_proto_arm64; oc_unit_webassembly_x86_64; oc_unit_protocol_compiles; - de_unit Amd64; - de_unit Arm64; - resto_unit Amd64; - resto_unit Arm64; + de_unit Amd64 (); + de_unit Arm64 ~storage:Ramfs (); + resto_unit Amd64 (); + resto_unit Arm64 ~storage:Ramfs (); ] in let job_oc_integration_compiler_rejections : tezos_job = @@ -1539,34 +1538,6 @@ let jobs pipeline_type = () |> enable_coverage_output_artifact ~expire_in:coverage_expiry in - let tezt_memory_3k : tezos_job = - Tezt.job - ~__POS__ - ~name:"tezt-memory-3k" - ~tag:Gcp_tezt_memory_3k - ~tezt_tests:(Tezt.tests_tag_selector ~memory_3k:true []) - ~tezt_variant:"-memory_3k" - ~parallel:(Vector 12) - ~dependencies - ?job_select_tezts - ~rules - () - |> enable_coverage_output_artifact ~expire_in:coverage_expiry - in - let tezt_memory_4k : tezos_job = - Tezt.job - ~__POS__ - ~name:"tezt-memory-4k" - ~tag:Gcp_tezt_memory_4k - ~tezt_tests:(Tezt.tests_tag_selector ~memory_4k:true []) - ~tezt_variant:"-memory_4k" - ~parallel:(Vector 4) - ~dependencies - ?job_select_tezts - ~rules - () - |> enable_coverage_output_artifact ~expire_in:coverage_expiry - in let tezt_time_sensitive : tezos_job = (* the following tests are executed with [~tezt_parallel:1] to ensure that other tests do not affect their executions. However, these @@ -1658,15 +1629,7 @@ let jobs pipeline_type = ~before_script:(before_script ["mv octez-binaries/x86_64/octez-* ."]) () in - [ - tezt; - tezt_memory_3k; - tezt_memory_4k; - tezt_time_sensitive; - tezt_slow; - tezt_flaky; - tezt_static_binaries; - ] + [tezt; tezt_time_sensitive; tezt_slow; tezt_flaky; tezt_static_binaries] in let jobs_sdk_rust : tezos_job list = let job_test_sdk_rust = @@ -2124,6 +2087,7 @@ let jobs pipeline_type = job_docker_build ~__POS__ ~arch:Arm64 + ~storage:Ramfs ~dependencies:(Dependent []) ~rules:(make_rules ~changes:changeset_docker_files ~manual:Yes ()) Test_manual diff --git a/ci/bin/common.ml b/ci/bin/common.ml index 95d13c4ff8ed03d6afa5004fb0f069fbd0499604..691152c600d5767f1d270580112914de4adc9cbd 100644 --- a/ci/bin/common.ml +++ b/ci/bin/common.ml @@ -583,7 +583,7 @@ let changeset_mir_tzt = (no need to test that we pass the -static flag twice) - released variants exist, that are used in release tag pipelines (they do not build experimental executables) *) -let job_build_static_binaries ~__POS__ ~arch ?(cpu = Normal) +let job_build_static_binaries ~__POS__ ~arch ?(cpu = Normal) ?storage ?(executable_files = "script-inputs/octez-released-executables") ?(experimental_executables = "script-inputs/octez-experimental-executables") ?version_executable ?(release = false) ?rules ?dependencies ?retry () : @@ -611,6 +611,7 @@ let job_build_static_binaries ~__POS__ ~arch ?(cpu = Normal) ~stage:Stages.build ~arch ~cpu + ?storage ~name ?retry ~image:Images.CI.build @@ -653,8 +654,8 @@ type docker_build_type = | Test_manual (** Creates a Docker build job of the given [arch] and [docker_build_type]. *) -let job_docker_build ?rules ?dependencies ~__POS__ ~arch docker_build_type : - tezos_job = +let job_docker_build ?rules ?dependencies ~__POS__ ~arch ?storage + docker_build_type : tezos_job = let arch_string = arch_to_string_alt arch in let ci_docker_hub = match docker_build_type with @@ -709,6 +710,7 @@ let job_docker_build ?rules ?dependencies ~__POS__ ~arch docker_build_type : ~__POS__ ~stage ~arch + ?storage ~name ~variables ["./scripts/ci/docker_release.sh"] @@ -741,7 +743,7 @@ type bin_package_group = A | B let bin_package_image = Image.mk_external ~image_path:"$DISTRIBUTION" -let job_build_dynamic_binaries ?rules ~__POS__ ~arch ?retry ?cpu +let job_build_dynamic_binaries ?rules ~__POS__ ~arch ?retry ?cpu ?storage ?(release = false) ?dependencies () = let arch_string = arch_to_string arch in let name = @@ -804,6 +806,7 @@ let job_build_dynamic_binaries ?rules ~__POS__ ~arch ?retry ?cpu ~arch ?retry ?cpu + ?storage ~name ~image:Images.CI.build ~before_script: @@ -823,10 +826,22 @@ let job_build_dynamic_binaries ?rules ~__POS__ ~arch ?retry ?cpu (** {2 Shared jobs} *) let job_build_arm64_release ?rules () : tezos_job = - job_build_dynamic_binaries ?rules ~__POS__ ~arch:Arm64 ~release:true () + job_build_dynamic_binaries + ?rules + ~__POS__ + ~arch:Arm64 + ~storage:Ramfs + ~release:true + () let job_build_arm64_exp_dev_extra ?rules () : tezos_job = - job_build_dynamic_binaries ?rules ~__POS__ ~arch:Arm64 ~release:false () + job_build_dynamic_binaries + ?rules + ~__POS__ + ~arch:Arm64 + ~storage:Ramfs + ~release:false + () let job_build_kernels ?rules () : tezos_job = job diff --git a/ci/bin/master_branch.ml b/ci/bin/master_branch.ml index 41d7ea9765b2402dfb0735a38f7866e992180234..619d95aef9a19a756f65b6a774339673d9878cf7 100644 --- a/ci/bin/master_branch.ml +++ b/ci/bin/master_branch.ml @@ -20,6 +20,78 @@ open Gitlab_ci open Gitlab_ci.Util open Tezos_ci +let rules_always = [job_rule ~when_:Always ()] + +(* static binaries *) +let job_static_arm64 = + job_build_static_binaries + ~__POS__ + ~arch:Arm64 + ~storage:Ramfs + ~rules:rules_always + () + +let job_static_x86_64 = + job_build_static_binaries + ~__POS__ + ~arch:Amd64 + ~cpu:Very_high + ~retry:{max = 2; when_ = [Stuck_or_timeout_failure; Runner_system_failure]} + ~rules:rules_always + () + +let jobs_documentation : tezos_job list = + let rules = [job_rule ~changes:(Changeset.encode changeset_octez_docs) ()] in + let dependencies = Dependent [] in + let job_odoc = Documentation.job_odoc ~rules ~dependencies () in + let job_manuals = + Documentation.job_manuals + ~rules + ~dependencies:(Dependent [Artifacts job_static_x86_64]) + ~use_static_executables:true + () + in + let job_docgen = Documentation.job_docgen ~rules ~dependencies () in + let job_build_all = + Documentation.job_build_all ~job_odoc ~job_manuals ~job_docgen ~rules () + in + let job_publish_documentation : tezos_job = + Documentation.job_publish_documentation ~job_build_all ~rules () + in + [job_odoc; job_manuals; job_docgen; job_build_all; job_publish_documentation] + +(* Defines the jobs of the [schedule_docker_build_pipeline] pipeline. + + This pipeline runs scheduled on the [master] branch. The goal + of this pipeline is to publish fresh Docker images for 'master' using the latest Alpine packages. *) + +let octez_distribution_docker_jobs = + let job_docker_amd64_experimental : tezos_job = + job_docker_build ~__POS__ ~rules:rules_always ~arch:Amd64 Experimental + in + let job_docker_arm64_experimental : tezos_job = + job_docker_build + ~__POS__ + ~rules:rules_always + ~arch:Arm64 + ~storage:Ramfs + Experimental + in + let job_docker_merge_manifests = + job_docker_merge_manifests + ~__POS__ + ~ci_docker_hub:true + ~job_docker_amd64:job_docker_amd64_experimental + ~job_docker_arm64:job_docker_arm64_experimental + in + [ + (* Stage: build *) + job_docker_amd64_experimental; + job_docker_arm64_experimental; + (* Stage: prepare_release *) + job_docker_merge_manifests; + ] + let jobs = (* Like in the {!Schedule_extended_test} variant of {!Code_verification} pipelines, we'd like to run as many jobs as @@ -40,7 +112,12 @@ let jobs = job_docker_build ~__POS__ ~rules:rules_always ~arch:Amd64 Experimental in let job_docker_arm64_experimental : tezos_job = - job_docker_build ~__POS__ ~rules:rules_always ~arch:Arm64 Experimental + job_docker_build + ~__POS__ + ~rules:rules_always + ~arch:Arm64 + ~storage:Ramfs + Experimental in let job_docker_merge_manifests = job_docker_merge_manifests @@ -50,7 +127,12 @@ let jobs = ~job_docker_arm64:job_docker_arm64_experimental in let job_static_arm64 = - job_build_static_binaries ~__POS__ ~arch:Arm64 ~rules:rules_always () + job_build_static_binaries + ~__POS__ + ~arch:Arm64 + ~storage:Ramfs + ~rules:rules_always + () in let job_static_x86_64 = job_build_static_binaries diff --git a/ci/bin/release_tag.ml b/ci/bin/release_tag.ml index f8ae910908d9a864d149df206bef9d1b5905cdaa..da63db37aebe87b1b6bb08ad07f944293b5c2636 100644 --- a/ci/bin/release_tag.ml +++ b/ci/bin/release_tag.ml @@ -53,7 +53,6 @@ let monitoring_child_pipeline = job_datadog_pipeline_trace; Grafazos_ci.Common.job_build_grafazos (); job_build_layer1_profiling ~expire_in:Never (); - Teztale.Common.job_build ~expire_in:Never ~arch:Arm64 (); Teztale.Common.job_build ~expire_in:Never ~arch:Amd64 (); ] @@ -113,6 +112,7 @@ let octez_jobs ?(test = false) release_tag_pipeline_type = ~dependencies:(Dependent []) ~__POS__ ~arch:Arm64 + ~storage:Ramfs (if test then Test else Release) in let job_docker_merge = @@ -129,6 +129,7 @@ let octez_jobs ?(test = false) release_tag_pipeline_type = ~dependencies:(Dependent []) ~__POS__ ~arch:Arm64 + ~storage:Ramfs ~release:true () in @@ -304,6 +305,7 @@ let octez_evm_node_jobs ?(test = false) () = job_docker_build ~__POS__ ~arch:Arm64 + ~storage:Ramfs (if test then Test else Octez_evm_node_release) in let job_docker_merge = @@ -329,6 +331,7 @@ let octez_evm_node_jobs ?(test = false) () = job_build_static_binaries ~__POS__ ~arch:Arm64 + ~storage:Ramfs ~executable_files:"script-inputs/octez-evm-node-executable" ~release:true ~version_executable:"octez-evm-node" diff --git a/ci/lib_tezos_ci/tezos_ci.ml b/ci/lib_tezos_ci/tezos_ci.ml index bde13545cc59db837154ac8c302428f298e411bd..6ed318d82edbca7be97ae60d4dc96457900a0af7 100644 --- a/ci/lib_tezos_ci/tezos_ci.ml +++ b/ci/lib_tezos_ci/tezos_ci.ml @@ -732,14 +732,12 @@ type tag = | Gcp_dev_arm64 | Gcp_tezt | Gcp_tezt_dev - | Gcp_tezt_memory_3k - | Gcp_tezt_memory_3k_dev - | Gcp_tezt_memory_4k - | Gcp_tezt_memory_4k_dev | Gcp_high_cpu | Gcp_high_cpu_dev | Gcp_very_high_cpu | Gcp_very_high_cpu_dev + | Gcp_very_high_cpu_ramfs + | Gcp_very_high_cpu_ramfs_dev | Aws_specific | Dynamic @@ -750,24 +748,21 @@ let string_of_tag = function | Gcp_dev_arm64 -> "gcp_dev_arm64" | Gcp_tezt -> "gcp_tezt" | Gcp_tezt_dev -> "gcp_tezt_dev" - | Gcp_tezt_memory_3k -> "gcp_tezt_memory_3k" - | Gcp_tezt_memory_3k_dev -> "gcp_tezt_memory_3k_dev" - | Gcp_tezt_memory_4k -> "gcp_tezt_memory_4k" - | Gcp_tezt_memory_4k_dev -> "gcp_tezt_memory_4k_dev" | Gcp_high_cpu -> "gcp_high_cpu" | Gcp_high_cpu_dev -> "gcp_high_cpu_dev" | Gcp_very_high_cpu -> "gcp_very_high_cpu" | Gcp_very_high_cpu_dev -> "gcp_very_high_cpu_dev" + | Gcp_very_high_cpu_ramfs -> "gcp_very_high_cpu_ramfs" + | Gcp_very_high_cpu_ramfs_dev -> "gcp_very_high_cpu_ramfs_dev" | Aws_specific -> "aws_specific" | Dynamic -> Gitlab_ci.Var.encode dynamic_tag_var (** The architecture of the runner associated to a tag . *) let arch_of_tag = function | Gcp_arm64 | Gcp_dev_arm64 -> Some Arm64 - | Gcp | Gcp_dev | Gcp_tezt | Gcp_tezt_dev | Gcp_tezt_memory_3k - | Gcp_tezt_memory_3k_dev | Gcp_tezt_memory_4k | Gcp_tezt_memory_4k_dev - | Gcp_high_cpu | Gcp_high_cpu_dev | Gcp_very_high_cpu | Gcp_very_high_cpu_dev - | Aws_specific -> + | Gcp | Gcp_dev | Gcp_tezt | Gcp_tezt_dev | Gcp_high_cpu | Gcp_high_cpu_dev + | Gcp_very_high_cpu | Gcp_very_high_cpu_dev | Gcp_very_high_cpu_ramfs + | Gcp_very_high_cpu_ramfs_dev | Aws_specific -> Some Amd64 | Dynamic -> None @@ -829,6 +824,11 @@ type cpu = | High (** Target GCP high runner pool. *) | Very_high (** Target GCP very high runner pool. *) +(** The list of storage profiling tags for runners. *) +type storage = + | Network (** Target default storage runner pool. *) + | Ramfs (** Target ramfs storage runner pool. *) + let enc_git_strategy = function | Fetch -> "fetch" | Clone -> "clone" @@ -837,36 +837,58 @@ let enc_git_strategy = function let job ?arch ?after_script ?allow_failure ?artifacts ?(before_script = []) ?cache ?id_tokens ?interruptible ?(dependencies = Staged []) ?(image_dependencies = []) ?services ?variables ?rules - ?(timeout = Gitlab_ci.Types.Minutes 60) ?tag ?(cpu = Normal) ?git_strategy - ?coverage ?retry ?parallel ?description ?(dev_infra = false) ~__POS__ ?image - ?template ~stage ~name script : tezos_job = + ?(timeout = Gitlab_ci.Types.Minutes 60) ?tag ?(cpu = Normal) + ?(storage = Network) ?git_strategy ?coverage ?retry ?parallel ?description + ?(dev_infra = false) ~__POS__ ?image ?template ~stage ~name script : + tezos_job = (* The tezos/tezos CI uses singleton tags for its runners. *) let tag = - match (arch, tag, cpu) with - | Some Arm64, _, (High | Very_high) -> + match (arch, tag, cpu, storage) with + | Some Arm64, _, (High | Very_high), _ -> failwith "[job] cannot specify both [arch=Arm64] and [cpu=High] or \ [cpu=Very_high] in job '%s'." name - | Some _, Some _, High - | None, Some _, High - | Some _, None, High - | None, None, High -> + | Some Arm64, _, _, Network -> + failwith + "[job] cannot specify both [arch=Arm64] and [storage=Network] in job \ + '%s'." + name + | None, None, Normal, Ramfs -> + failwith + "[job] cannot specify both [cpu=Normal] and [storage=Ramfs] in job \ + '%s'." + name + | None, _, High, Ramfs | Some _, _, High, Ramfs -> + failwith + "[job] cannot specify both [cpu=High] and [storage=Ramfs] in job \ + '%s'." + name + | Some _, Some _, High, Network + | None, Some _, High, Network + | Some _, None, High, Network + | None, None, High, Network -> if dev_infra then Gcp_high_cpu_dev else Gcp_high_cpu - | Some _, Some _, Very_high - | None, Some _, Very_high - | Some _, None, Very_high - | None, None, Very_high -> + | Some _, Some _, Very_high, Network + | None, Some _, Very_high, Network + | Some _, None, Very_high, Network + | None, None, Very_high, Network -> if dev_infra then Gcp_very_high_cpu_dev else Gcp_very_high_cpu - | Some arch, None, Normal -> ( + | Some _, Some _, Very_high, Ramfs + | None, Some _, Very_high, Ramfs + | Some _, None, Very_high, Ramfs + | None, None, Very_high, Ramfs -> + if dev_infra then Gcp_very_high_cpu_ramfs_dev + else Gcp_very_high_cpu_ramfs + | Some arch, None, Normal, _ -> ( match arch with | Amd64 -> if dev_infra then Gcp_dev else Gcp | Arm64 -> Gcp_arm64) - | None, Some tag, Normal -> tag - | None, None, Normal -> + | None, Some tag, _, _ -> tag + | None, None, Normal, Network -> (* By default, we assume Amd64 runners as given by the [gcp] tag. *) Gcp - | Some _, Some _, Normal -> + | Some _, Some _, Normal, _ -> failwith "[job] cannot specify both [arch] and [tags] at the same time in job \ '%s'." @@ -1409,8 +1431,8 @@ let opt_var name f = function Some value -> [(name, f value)] | None -> [] [CI_DOCKER_AUTH] contains the appropriate credentials. *) let job_docker_authenticated ?(skip_docker_initialization = false) ?ci_docker_hub ?artifacts ?(variables = []) ?rules ?dependencies - ?image_dependencies ?arch ?tag ?allow_failure ?parallel ?timeout ?retry - ?description ?dev_infra ~__POS__ ~stage ~name script : tezos_job = + ?image_dependencies ?arch ?storage ?tag ?allow_failure ?parallel ?timeout + ?retry ?description ?dev_infra ~__POS__ ~stage ~name script : tezos_job = let docker_version = "24.0.7" in job ?rules @@ -1418,6 +1440,7 @@ let job_docker_authenticated ?(skip_docker_initialization = false) ?image_dependencies ?artifacts ?arch + ?storage ?tag ?allow_failure ?parallel @@ -1525,10 +1548,11 @@ module Images = struct let rust_toolchain = (* The job that builds the rust_toolchain image. This job is automatically included in any pipeline that uses this image. *) - let image_builder arch = + let image_builder arch ?storage () = job_docker_authenticated ~__POS__ ~arch + ?storage ~skip_docker_initialization:true ~stage ~name:("oc.docker:rust-toolchain:" ^ arch_to_string_alt arch) @@ -1545,8 +1569,8 @@ module Images = struct "${rust_toolchain_image_name}:${rust_toolchain_image_tag}" in Image.mk_internal - ~image_builder_amd64:(image_builder Amd64) - ~image_builder_arm64:(image_builder Arm64) + ~image_builder_amd64:(image_builder Amd64 ()) + ~image_builder_arm64:(image_builder Arm64 ~storage:Ramfs ()) ~image_path () @@ -1554,10 +1578,11 @@ module Images = struct let rust_sdk_bindings = (* The job that builds the rust-sdk-bindings image. This job is automatically included in any pipeline that uses this image. *) - let image_builder arch = + let image_builder arch ?storage () = job_docker_authenticated ~__POS__ ~arch + ?storage ~stage ~name:("oc.docker:rust-sdk-bindings:" ^ arch_to_string_alt arch) ~description: @@ -1574,8 +1599,8 @@ module Images = struct "${rust_sdk_bindings_image_name}:${rust_sdk_bindings_image_tag}" in Image.mk_internal - ~image_builder_amd64:(image_builder Amd64) - ~image_builder_arm64:(image_builder Arm64) + ~image_builder_amd64:(image_builder Amd64 ()) + ~image_builder_arm64:(image_builder Arm64 ~storage:Ramfs ()) ~image_path () @@ -1598,7 +1623,7 @@ module Images = struct module CI = struct (* The job that builds the CI images. This job is automatically included in any pipeline that uses any of these images. *) - let job_docker_ci arch = + let job_docker_ci arch ?storage () = let variables = Some [("ARCH", arch_to_string_alt arch)] in let retry = match arch with @@ -1612,6 +1637,7 @@ module Images = struct ?retry ~__POS__ ~arch + ?storage ~skip_docker_initialization:true ~stage ~timeout:(Minutes 90) @@ -1624,8 +1650,8 @@ module Images = struct let mk_ci_image ~image_path = Image.mk_internal - ~image_builder_amd64:(job_docker_ci Amd64) - ~image_builder_arm64:(job_docker_ci Arm64) + ~image_builder_amd64:(job_docker_ci Amd64 ()) + ~image_builder_arm64:(job_docker_ci Arm64 ~storage:Ramfs ()) ~image_path () diff --git a/ci/lib_tezos_ci/tezos_ci.mli b/ci/lib_tezos_ci/tezos_ci.mli index 1143bef934e58ec0406ecff6265d4d7dc2088c40..10e39c19ac8c5b7d584dd92135f3c70a1385b9ff 100644 --- a/ci/lib_tezos_ci/tezos_ci.mli +++ b/ci/lib_tezos_ci/tezos_ci.mli @@ -296,14 +296,6 @@ type tag = (** GCP prod AMD64 runner, suitable for tezt jobs (more RAM and CPU) *) | Gcp_tezt_dev (** GCP dev AMD64 runner, suitable for tezt jobs (more RAM and CPU) *) - | Gcp_tezt_memory_3k - (** GCP prod AMD64 runner, suitable for tezt memory 3k jobs (more RAM and CPU) *) - | Gcp_tezt_memory_3k_dev - (** GCP dev AMD64 runner, suitable for tezt memory 3k jobs (more RAM and CPU) *) - | Gcp_tezt_memory_4k - (** GCP prod AMD64 runner, suitable for tezt memory 4k jobs (more RAM and CPU) *) - | Gcp_tezt_memory_4k_dev - (** GCP dev AMD64 runner, suitable for tezt memory 4k jobs (more RAM and CPU) *) | Gcp_high_cpu (** GCP prod AMD64 runner, suitable for jobs needing high CPU. *) | Gcp_high_cpu_dev @@ -312,6 +304,10 @@ type tag = (** GCP prod AMD64 runner, suitable for jobs needing very high CPU. *) | Gcp_very_high_cpu_dev (** GCP dev AMD64 runner, suitable for jobs needing very high CPU. *) + | Gcp_very_high_cpu_ramfs + (** GCP prod AMD64 runner, suitable for jobs needing very high CPU and RAMFS. *) + | Gcp_very_high_cpu_ramfs_dev + (** GCP dev AMD64 runner, suitable for jobs needing very high CPU and RAMFS. *) | Aws_specific (** AWS runners, in cases where a CI is legacy or not suitable for GCP. *) | Dynamic @@ -389,6 +385,10 @@ type cpu = | High (** Target GCP high runner pool. *) | Very_high (** Target GCP very high runner pool. *) +type storage = + | Network (** Target default storage runner pool. *) + | Ramfs (** Target ramfs storage runner pool. *) + (** Define a job. This smart constructor for {!Gitlab_ci.Types.job} additionally: @@ -445,6 +445,7 @@ val job : ?timeout:Gitlab_ci.Types.time_interval -> ?tag:tag -> ?cpu:cpu -> + ?storage:storage -> ?git_strategy:git_strategy -> ?coverage:string -> ?retry:Gitlab_ci.Types.retry -> @@ -544,6 +545,7 @@ val job_docker_authenticated : ?dependencies:dependencies -> ?image_dependencies:Image.t list -> ?arch:arch -> + ?storage:storage -> ?tag:tag -> ?allow_failure:Gitlab_ci.Types.allow_failure_job -> ?parallel:Gitlab_ci.Types.parallel -> @@ -672,7 +674,7 @@ module Images : sig val jsonnet : Image.t module CI : sig - val job_docker_ci : arch -> tezos_job + val job_docker_ci : arch -> ?storage:storage -> unit -> tezos_job val mk_ci_image : image_path:string -> Image.t diff --git a/etherlink/CHANGES_KERNEL.md b/etherlink/CHANGES_KERNEL.md index 8d54d0417b01e1bbc645ae981afe308fbce782c8..3e410e47ca1c5ba86083386b4b4ca40e0e107c6d 100644 --- a/etherlink/CHANGES_KERNEL.md +++ b/etherlink/CHANGES_KERNEL.md @@ -2,6 +2,36 @@ ## Version NEXT +Its storage version is 36. + +### Features + +- The validation mechanism that automatically rejects transactions + with over-estimated gas limits exceeding the maximum threshold will + be disabled. During execution, any gas limit above the maximum will + be automatically capped at the maximum permitted value. (!18179) +- Bump the capacity of Etherlink to 8MGas/s (meaning a target per second to + 4MGas/s). (!18452) +- Update the Layer 1 governance contracts to take into account alternative voting keys for bakers. (!18505) + - [`KT1VZVNCNnhUp7s15d9RsdycP7C1iwYhAQ8r`](https://better-call.dev/mainnet/KT1VZVNCNnhUp7s15d9RsdycP7C1iwYhAQ8r) for the slow upgrade governance + - [`KT1DxndcFitAbxLdJCN3C1pPivqbC3RJxD1R`](https://better-call.dev/mainnet/KT1DxndcFitAbxLdJCN3C1pPivqbC3RJxD1R) for the fast upgrade governance + - [`KT1WckZ2uiLfHCfQyNp1mtqeRcC1X6Jg2Qzf`](https://better-call.dev/mainnet/KT1WckZ2uiLfHCfQyNp1mtqeRcC1X6Jg2Qzf) for the sequencer governance + +### Bug fixes + +### Internal + +## Dionysus (1f47de0) + +This kernel has been activated on Etherlink Testnet on block +[19,307,965][1f47-activation-testnet], and on Etherlink Mainnet on block +[15,262,162][1f47-activation-mainnet]. + +[1f47-activation-testnet]: https://testnet.explorer.etherlink.com/block/0x905031212562def1cecd79e6472bf3b6588b9ea75563d0c8fc34c9c8b61871f0 +[1f47-activation-mainnet]: https://explorer.etherlink.com/block/0x0f3872315951a148220bd3fe63ec9012c59ddcca49dfcdc40ec3ffbfec93ea63 + +Its storage version is 33. + ### Features - The EVM's configuration has been bumped to Cancun. (!16141) diff --git a/etherlink/bin_node/lib_dev/gas_price.ml b/etherlink/bin_node/lib_dev/gas_price.ml index f6bb5ca779ca8c58eb77907ee390f6623f1b5158..5847625a8c312df4398f8feeb9f361e3c0aef794 100644 --- a/etherlink/bin_node/lib_dev/gas_price.ml +++ b/etherlink/bin_node/lib_dev/gas_price.ml @@ -9,19 +9,23 @@ [kernel/src/gas_price]). It needs to take into account the storage version to be able to be backward compatible. *) -type constants = {speed_limit : Z.t; alpha : float} +type constants = {target : Z.t; alpha : float} let ticks_constants = - {speed_limit = Z.of_int (40_000_000 * 50); alpha = 0.000_000_000_007} + {target = Z.of_int (40_000_000 * 50); alpha = 0.000_000_000_007} -let gas_constants = - {speed_limit = Z.of_int (40_000 * 50); alpha = 0.000_000_007} +let gas_constants version = + let capacity, alpha = + if version < 36 (* Dionysus or before *) then (4_000_000, 0.000_000_007) + else (8_000_000, 0.000_000_004) + in + {target = Z.of_int (capacity / 2); alpha} -let tolerance {speed_limit; _} = Z.(mul speed_limit (of_int 10)) +let tolerance {target; _} = Z.(mul target (of_int 10)) let constants_from_storage_version version = (* See migrations V32 in [migration.rs] *) - if version < 32 then ticks_constants else gas_constants + if version < 32 then ticks_constants else gas_constants version let price_from_backlog ~version ~minimum backlog = let constants = constants_from_storage_version version in diff --git a/etherlink/kernel_latest/kernel/src/apply.rs b/etherlink/kernel_latest/kernel/src/apply.rs index cf8285bdb2394120fffb493ad96f5ac46bab827c..1284c8164599f4174829309fe7b9c504893e42de 100644 --- a/etherlink/kernel_latest/kernel/src/apply.rs +++ b/etherlink/kernel_latest/kernel/src/apply.rs @@ -34,6 +34,7 @@ use tezos_smart_rollup::outbox::{OutboxMessage, OutboxQueue}; use tezos_smart_rollup_host::path::{Path, RefPath}; use crate::bridge::{execute_deposit, Deposit}; +use crate::chains::EvmLimits; use crate::error::Error; use crate::fees::{tx_execution_gas_limit, FeeUpdates}; use crate::transaction::{Transaction, TransactionContent}; @@ -196,7 +197,6 @@ pub enum Validity { InvalidCode, InvalidMaxBaseFee, InvalidNotEnoughGasForFees, - InvalidGasLimitTooHigh, } // TODO: https://gitlab.com/tezos/tezos/-/issues/6812 @@ -209,6 +209,7 @@ fn is_valid_ethereum_transaction_common( block_constant: &BlockConstants, effective_gas_price: U256, is_delayed: bool, + limits: &EvmLimits, ) -> Result { // Chain id is correct. if transaction.chain_id.is_some() @@ -276,8 +277,8 @@ fn is_valid_ethereum_transaction_common( log!(host, Benchmarking, "Transaction status: ERROR_GAS_FEE."); return Ok(Validity::InvalidNotEnoughGasForFees); }; - - Ok(Validity::Valid(caller, gas_limit)) + let capped_gas_limit = u64::min(gas_limit, limits.maximum_gas_limit); + Ok(Validity::Valid(caller, capped_gas_limit)) } pub struct TransactionResult { @@ -310,6 +311,7 @@ fn apply_ethereum_transaction_common( is_delayed: bool, tracer_input: Option, evm_configuration: &Config, + limits: &EvmLimits, ) -> Result, anyhow::Error> { let effective_gas_price = block_constants.base_fee_per_gas(); let (caller, gas_limit) = match is_valid_ethereum_transaction_common( @@ -319,6 +321,7 @@ fn apply_ethereum_transaction_common( block_constants, effective_gas_price, is_delayed, + limits, )? { Validity::Valid(caller, gas_limit) => (caller, gas_limit), _reason => { @@ -597,6 +600,7 @@ pub fn apply_transaction( sequencer_pool_address: Option, tracer_input: Option, evm_configuration: &Config, + limits: &EvmLimits, ) -> Result, anyhow::Error> { let tracer_input = get_tracer_configuration(H256(transaction.tx_hash), tracer_input); let apply_result = match &transaction.content { @@ -609,6 +613,7 @@ pub fn apply_transaction( false, tracer_input, evm_configuration, + limits, )?, TransactionContent::EthereumDelayed(tx) => apply_ethereum_transaction_common( host, @@ -619,6 +624,7 @@ pub fn apply_transaction( true, tracer_input, evm_configuration, + limits, )?, TransactionContent::Deposit(deposit) => { log!(host, Benchmarking, "Transaction type: DEPOSIT"); @@ -667,7 +673,7 @@ pub fn apply_transaction( #[cfg(test)] mod tests { - use crate::{apply::Validity, fees::gas_for_fees}; + use crate::{apply::Validity, chains::EvmLimits, fees::gas_for_fees}; use evm_execution::account_storage::{account_path, EthereumAccountStorage}; use primitive_types::{H160, U256}; use tezos_ethereum::{ @@ -784,6 +790,7 @@ mod tests { &block_constants, gas_price, false, + &EvmLimits::default(), ); assert_eq!( Validity::Valid(address, 21000), @@ -818,6 +825,7 @@ mod tests { &block_constants, gas_price, false, + &EvmLimits::default(), ); assert_eq!( Validity::InvalidPrePay, @@ -852,6 +860,7 @@ mod tests { &block_constants, gas_price, false, + &EvmLimits::default(), ); assert_eq!( Validity::InvalidSignature, @@ -888,6 +897,7 @@ mod tests { &block_constants, gas_price, false, + &EvmLimits::default(), ); assert_eq!( Validity::InvalidNonce, @@ -922,6 +932,7 @@ mod tests { &block_constants, gas_price, false, + &EvmLimits::default(), ); assert_eq!( Validity::InvalidChainId, @@ -956,6 +967,7 @@ mod tests { &block_constants, gas_price, false, + &EvmLimits::default(), ); assert_eq!( Validity::InvalidMaxBaseFee, @@ -991,6 +1003,7 @@ mod tests { &block_constants, gas_price, false, + &EvmLimits::default(), ); assert_eq!( Validity::InvalidNotEnoughGasForFees, @@ -1005,6 +1018,7 @@ mod tests { &block_constants, gas_price, true, + &EvmLimits::default(), ); assert!( matches!( diff --git a/etherlink/kernel_latest/kernel/src/block.rs b/etherlink/kernel_latest/kernel/src/block.rs index e13383e64dbb0628f93ab5f392f6b4ce835b4962..811fdccffb20643782973023007f328f15c4efe2 100644 --- a/etherlink/kernel_latest/kernel/src/block.rs +++ b/etherlink/kernel_latest/kernel/src/block.rs @@ -6,7 +6,7 @@ // SPDX-License-Identifier: MIT use crate::apply::{ - apply_transaction, ExecutionInfo, ExecutionResult, Validity, WITHDRAWAL_OUTBOX_QUEUE, + apply_transaction, ExecutionInfo, ExecutionResult, WITHDRAWAL_OUTBOX_QUEUE, }; use crate::blueprint::Blueprint; use crate::blueprint_storage::{ @@ -124,7 +124,8 @@ fn can_fit_in_reboot( tx_gas_limit: u64, ) -> bool { let max_gas_per_reboot = U256::from(max_gas_per_reboot(limits)); - used_gas_in_run + U256::from(tx_gas_limit) <= max_gas_per_reboot + let capped_gas_limit = u64::min(tx_gas_limit, limits.maximum_gas_limit); + used_gas_in_run + U256::from(capped_gas_limit) <= max_gas_per_reboot } #[allow(clippy::too_many_arguments)] @@ -169,20 +170,6 @@ fn compute( return Ok(BlockInProgressComputationResult::RebootNeeded); } - let execution_gas_limit = - transaction.execution_gas_limit(&block_constants.block_fees)?; - if execution_gas_limit > limits.maximum_gas_limit { - log!( - host, - Debug, - "Reason of invalidity: {:?}", - Validity::InvalidGasLimitTooHigh - ); - log!(host, Benchmarking, "Transaction type: INVALID"); - on_invalid_transaction(host, &transaction, block_in_progress, data_size); - continue; - }; - // If `apply_transaction` returns `None`, the transaction should be // ignored, i.e. invalid signature or nonce. match apply_transaction( @@ -196,6 +183,7 @@ fn compute( sequencer_pool_address, tracer_input, evm_configuration, + limits, )? { ExecutionResult::Valid(ExecutionInfo { receipt_info, diff --git a/etherlink/kernel_latest/kernel/src/gas_price.rs b/etherlink/kernel_latest/kernel/src/gas_price.rs index 90750a7376e99938fcbc165dc484df1da9b14e77..08a1e466237b1d4d7fdd2982603fa8b7a3d17d9e 100644 --- a/etherlink/kernel_latest/kernel/src/gas_price.rs +++ b/etherlink/kernel_latest/kernel/src/gas_price.rs @@ -11,15 +11,13 @@ use softfloat::F64; use tezos_evm_runtime::runtime::Runtime; use tezos_smart_rollup_encoding::timestamp::Timestamp; -// A reasonable ERC20 transaction cost is gas unit -const ERC20_GAS: u64 = 40_000; -// 50 TPS of ERC20 transfers should be sustained without increasing price. -const SPEED_LIMIT: u64 = 50 * ERC20_GAS; -const TOLERANCE: u64 = 10 * SPEED_LIMIT; +const CAPACITY: u64 = 8_000_000; +const TARGET: u64 = CAPACITY / 2; +const TOLERANCE: u64 = 10 * TARGET; // chosen so that gas price will decrease ~7/8 if there's no usage for ~10 seconds. -// ALPHA = -ln(7/8)/(SPEED_LIMIT * 10) -const ALPHA: F64 = softfloat::f64!(0.000_000_007); +// ALPHA = -ln(7/8)/(TARGET * 10) +const ALPHA: F64 = softfloat::f64!(0.000_000_004); /// Register a completed block into the tick backlog pub fn register_block( @@ -67,7 +65,7 @@ fn backlog_with_time_elapsed( ) -> u64 { let diff = current_timestamp .saturating_sub(last_timestamp) - .saturating_mul(SPEED_LIMIT); + .saturating_mul(TARGET); crate::storage::read_backlog(host) .unwrap_or_default() diff --git a/etherlink/kernel_latest/kernel/src/migration.rs b/etherlink/kernel_latest/kernel/src/migration.rs index ffea81c17be1394b5b6f8df474b58aad7f8c121e..3d4b4b2974cfec85a632c0034350e1457e79b6c3 100644 --- a/etherlink/kernel_latest/kernel/src/migration.rs +++ b/etherlink/kernel_latest/kernel/src/migration.rs @@ -346,6 +346,37 @@ fn migrate_to( )?; host.store_write_all(&SEQUENCER_GOVERNANCE, SEQUENCER_GOVERNANCE_KT)?; + Ok(MigrationStatus::Done) + } else { + Ok(MigrationStatus::None) + } + } + StorageVersion::V34 => { + // Dummy migration allowing to version-gate the gas limit + // validation in the EVM node + Ok(MigrationStatus::Done) + } + StorageVersion::V35 => { + // Dummy migration allowing the node to decide what gas target to use when trying to + // predict the gas price + Ok(MigrationStatus::Done) + } + StorageVersion::V36 => { + if is_etherlink_network(host, MAINNET_CHAIN_ID)? { + const REGULAR_GOVERNANCE_KT: &[u8] = + b"KT1VZVNCNnhUp7s15d9RsdycP7C1iwYhAQ8r"; + const SECURITY_GOVERNANCE_KT: &[u8] = + b"KT1DxndcFitAbxLdJCN3C1pPivqbC3RJxD1R"; + const SEQUENCER_GOVERNANCE_KT: &[u8] = + b"KT1WckZ2uiLfHCfQyNp1mtqeRcC1X6Jg2Qzf"; + + host.store_write_all(&KERNEL_GOVERNANCE, REGULAR_GOVERNANCE_KT)?; + host.store_write_all( + &KERNEL_SECURITY_GOVERNANCE, + SECURITY_GOVERNANCE_KT, + )?; + host.store_write_all(&SEQUENCER_GOVERNANCE, SEQUENCER_GOVERNANCE_KT)?; + Ok(MigrationStatus::Done) } else { Ok(MigrationStatus::None) diff --git a/etherlink/kernel_latest/kernel/src/storage.rs b/etherlink/kernel_latest/kernel/src/storage.rs index 6738e01e206f5836db10b1bfb1efa9d69363e9e0..44564be0fc8e3e0d419df55ec19d9cf89fecb89e 100644 --- a/etherlink/kernel_latest/kernel/src/storage.rs +++ b/etherlink/kernel_latest/kernel/src/storage.rs @@ -67,6 +67,9 @@ pub enum StorageVersion { V31, V32, V33, + V34, + V35, + V36, } impl From for u64 { @@ -81,7 +84,7 @@ impl StorageVersion { } } -pub const STORAGE_VERSION: StorageVersion = StorageVersion::V33; +pub const STORAGE_VERSION: StorageVersion = StorageVersion::V36; pub const PRIVATE_FLAG_PATH: RefPath = RefPath::assert_from(b"/evm/remove_whitelist"); diff --git a/etherlink/kernel_latest/kernel/tests/resources/failed_migration.wasm b/etherlink/kernel_latest/kernel/tests/resources/failed_migration.wasm index 187e02e899393ba7e83f157c6d75ee994864852c..77b5d0455f650f1d03f089ce331c0478ee56a750 100755 Binary files a/etherlink/kernel_latest/kernel/tests/resources/failed_migration.wasm and b/etherlink/kernel_latest/kernel/tests/resources/failed_migration.wasm differ diff --git a/script-inputs/ci-coverage-producing-jobs b/script-inputs/ci-coverage-producing-jobs index 4e0deebf76232fabf5af4b14af3e0c16b3401969..ed6d43085700fe812dd2eecf34973fdf6451a43d 100644 --- a/script-inputs/ci-coverage-producing-jobs +++ b/script-inputs/ci-coverage-producing-jobs @@ -1,7 +1,5 @@ tezt-flaky tezt-time-sensitive -tezt-memory-4k -tezt-memory-3k tezt oc.unit:proto-x86_64 oc.unit:other-x86_64 diff --git a/teztale/ci/common.ml b/teztale/ci/common.ml index 0f9b092d8ff0035098f61057331403ce5a60eec1..eb37b6a76a29407b8a92cea16bc10f33184da656 100644 --- a/teztale/ci/common.ml +++ b/teztale/ci/common.ml @@ -13,12 +13,13 @@ module String_set = Set.Make (String) let changeset = Changeset.(make ["teztale/**/*"]) (** Job that builds the Teztale executables *) -let job_build ?rules ?(expire_in = Gitlab_ci.Types.(Duration (Days 1))) ~arch () - = +let job_build ?rules ?(expire_in = Gitlab_ci.Types.(Duration (Days 1))) ~arch + ?(storage = Network) () = let arch_string = arch_to_string arch in job ~__POS__ ~arch + ~storage ~name:("teztale.build:static-" ^ arch_string) ~image:Images.CI.build ~stage:Stages.build diff --git a/teztale/ci/release.ml b/teztale/ci/release.ml index feb09f7bc69a5c13a9355621715ca280132ac650..c19b4b5586299b4ea9d2a108809359253ad26f97 100644 --- a/teztale/ci/release.ml +++ b/teztale/ci/release.ml @@ -25,5 +25,5 @@ let jobs ~test () = (if test then [] else [job_datadog_pipeline_trace]) @ [ Common.job_build ~expire_in:Never ~arch:Amd64 (); - Common.job_build ~expire_in:Never ~arch:Arm64 (); + Common.job_build ~expire_in:Never ~arch:Arm64 ~storage:Ramfs (); ]