diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 25bdcbf6f..448bc8b81 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -16,113 +16,24 @@ on: - main env: - CARGO_INCREMENTAL: '1' NETWORK: Mainnet - PROJECT_ID: zealous-zebra GAR_BASE: us-docker.pkg.dev/zealous-zebra/zebra - GCR_BASE: gcr.io/zealous-zebra REGION: us-central1 ZONE: us-central1-a MACHINE_TYPE: c2-standard-4 jobs: build: - name: Build images - # TODO: remove timeout until we have an average build time - # timeout-minutes: 180 - runs-on: ubuntu-latest - permissions: - contents: 'read' - id-token: 'write' - - steps: - - uses: actions/checkout@v3.0.2 - with: - persist-credentials: false - - - name: Inject slug/short variables - uses: rlespinasse/github-slug-action@v4 - with: - short-length: 7 - - # Automatic tag management and OCI Image Format Specification for labels - - name: Docker meta - id: meta - uses: docker/metadata-action@v3.7.0 - with: - # list of Docker images to use as base name for tags - images: | - ${{ env.GAR_BASE }}/${{ env.GITHUB_REF_SLUG_URL }} - ${{ env.GCR_BASE }}/${{ env.GITHUB_REPOSITORY_SLUG_URL }}/${{ env.GITHUB_REF_SLUG_URL }} - # generate Docker tags based on the following events/attributes - tags: | - type=schedule - type=ref,event=branch - type=ref,event=pr - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=semver,pattern={{major}} - type=sha - - # Setup gcloud CLI - - name: Authenticate to Google Cloud - id: auth - uses: google-github-actions/auth@v0.7.1 - with: - workload_identity_provider: 'projects/143793276228/locations/global/workloadIdentityPools/github-actions/providers/github-oidc' - service_account: 'github-service-account@zealous-zebra.iam.gserviceaccount.com' - token_format: 'access_token' - - - name: Set up QEMU - id: qemu - uses: docker/setup-qemu-action@v1 - with: - image: tonistiigi/binfmt:latest - platforms: all - - # Setup Docker Buildx to allow use of docker cache layers from GH - - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v1 - - - name: Login to Google Artifact Registry - uses: docker/login-action@v1.14.1 - with: - registry: us-docker.pkg.dev - username: oauth2accesstoken - password: ${{ steps.auth.outputs.access_token }} - - - name: Login to Google Container Registry - uses: docker/login-action@v1.14.1 - with: - registry: gcr.io - username: oauth2accesstoken - password: ${{ steps.auth.outputs.access_token }} - - # Build and push image to Google Artifact Registry - - name: Build & push - id: docker_build - uses: docker/build-push-action@v2.10.0 - with: - target: runtime - context: . - file: ./docker/Dockerfile - # TODO: building crates is taking too long with arm64 and it's timing out on GHA - # platforms: | - # linux/amd64 - # linux/arm64 - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - build-args: | - NETWORK=${{ github.event.inputs.network || env.NETWORK }} - SHORT_SHA=${{ env.GITHUB_SHA_SHORT }} - RUST_BACKTRACE=1 - ZEBRA_SKIP_IPV6_TESTS="1" - CHECKPOINT_SYNC=${{ github.event.inputs.checkpoint_sync || true }} - SENTRY_DSN=${{ secrets.SENTRY_ENDPOINT }} - push: true - cache-from: type=registry,ref=${{ env.GAR_BASE }}/${{ env.GITHUB_REF_SLUG_URL }}:buildcache - cache-to: type=registry,ref=${{ env.GAR_BASE }}/${{ env.GITHUB_REF_SLUG_URL }}:buildcache,mode=max + uses: ./.github/workflows/docker-image-build.yml + with: + dockerfile_path: ./docker/Dockerfile + dockerfile_target: runtime + image_name: zebrad + network: Mainnet + checkpoint_sync: true + rust_backtrace: '1' + zebra_skip_ipv6_tests: '1' + rust_log: info deploy-nodes: name: Deploy Mainnet nodes diff --git a/.github/workflows/docker-image-build.yml b/.github/workflows/docker-image-build.yml new file mode 100644 index 000000000..811dbc8c3 --- /dev/null +++ b/.github/workflows/docker-image-build.yml @@ -0,0 +1,125 @@ +name: Build docker image + +on: + workflow_call: + inputs: + network: + required: false + type: string + checkpoint_sync: + required: false + type: boolean + image_name: + required: true + type: string + dockerfile_path: + required: true + type: string + dockerfile_target: + required: true + type: string + short_sha: + required: false + type: string + rust_backtrace: + required: false + type: string + rust_lib_backtrace: + required: false + type: string + colorbt_show_hidden: + required: false + type: string + zebra_skip_ipv6_tests: + required: false + type: string + rust_log: + required: false + type: string + +jobs: + build: + name: Build images + timeout-minutes: 210 + runs-on: ubuntu-latest + permissions: + contents: 'read' + id-token: 'write' + steps: + - uses: actions/checkout@v3.0.2 + with: + persist-credentials: false + + - name: Inject slug/short variables + uses: rlespinasse/github-slug-action@v4 + with: + short-length: 7 + + # Automatic tag management and OCI Image Format Specification for labels + - name: Docker meta + id: meta + uses: docker/metadata-action@v3.7.0 + with: + # list of Docker images to use as base name for tags + images: | + us-docker.pkg.dev/zealous-zebra/zebra/${{ inputs.image_name }} + gcr.io/zealous-zebra/zcashfoundation-zebra/${{ inputs.image_name }} + # generate Docker tags based on the following events/attributes + tags: | + type=schedule + type=ref,event=branch + type=ref,event=pr + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}} + type=sha + + # Setup Docker Buildx to allow use of docker cache layers from GH + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + + - name: Authenticate to Google Cloud + id: auth + uses: google-github-actions/auth@v0.7.1 + with: + workload_identity_provider: 'projects/143793276228/locations/global/workloadIdentityPools/github-actions/providers/github-oidc' + service_account: 'github-service-account@zealous-zebra.iam.gserviceaccount.com' + token_format: 'access_token' + + - name: Login to Google Artifact Registry + uses: docker/login-action@v1.14.1 + with: + registry: us-docker.pkg.dev + username: oauth2accesstoken + password: ${{ steps.auth.outputs.access_token }} + + - name: Login to Google Container Registry + uses: docker/login-action@v1.14.1 + with: + registry: gcr.io + username: oauth2accesstoken + password: ${{ steps.auth.outputs.access_token }} + + # Build and push image to Google Artifact Registry + - name: Build & push + id: docker_build + uses: docker/build-push-action@v2.10.0 + with: + target: ${{ inputs.dockerfile_target }} + context: . + file: ${{ inputs.dockerfile_path }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + build-args: | + NETWORK=${{ inputs.network }} + SHORT_SHA=${{ env.GITHUB_SHA_SHORT }} + RUST_BACKTRACE=${{ inputs.rust_backtrace }} + RUST_LIB_BACKTRACE=${{ inputs.rust_lib_backtrace }} + COLORBT_SHOW_HIDDEN=${{ inputs.colorbt_show_hidden }} + ZEBRA_SKIP_IPV6_TESTS=${{ inputs.zebra_skip_ipv6_tests }} + CHECKPOINT_SYNC=${{ inputs.checkpoint_sync }} + RUST_LOG=${{ inputs.rust_log }} + push: true + cache-from: type=registry,ref=us-docker.pkg.dev/zealous-zebra/zebra/${{ inputs.image_name }}:${{ env.GITHUB_REF_SLUG_URL }}-buildcache + cache-to: type=registry,ref=us-docker.pkg.dev/zealous-zebra/zebra/${{ inputs.image_name }}:${{ env.GITHUB_REF_SLUG_URL }}-buildcache,mode=max diff --git a/.github/workflows/test-full-sync.yml b/.github/workflows/test-full-sync.yml index 223b5d406..0065becd5 100644 --- a/.github/workflows/test-full-sync.yml +++ b/.github/workflows/test-full-sync.yml @@ -43,21 +43,16 @@ on: # workflow definitions - 'docker/**' - '.github/workflows/test-full-sync.yml' + - '.github/workflows/docker-image-build.yml' env: - CARGO_INCREMENTAL: '1' - ZEBRA_SKIP_IPV6_TESTS: '1' - RUST_BACKTRACE: full - RUST_LIB_BACKTRACE: full - COLORBT_SHOW_HIDDEN: '1' NETWORK: Mainnet PROJECT_ID: zealous-zebra + IMAGE_NAME: zebrad-test GAR_BASE: us-docker.pkg.dev/zealous-zebra/zebra - GCR_BASE: gcr.io/zealous-zebra REGION: us-central1 ZONE: us-central1-a MACHINE_TYPE: c2d-standard-16 - IMAGE_NAME: zebrad-test jobs: build: @@ -65,91 +60,18 @@ jobs: # only run on Mergify head branches, and on manual dispatch: # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#running-your-workflow-based-on-the-head-or-base-branch-of-a-pull-request-1 if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }} - name: Build images - timeout-minutes: 210 - runs-on: ubuntu-latest - permissions: - contents: 'read' - id-token: 'write' - steps: - - uses: actions/checkout@v3.0.2 - with: - persist-credentials: false - - - name: Inject slug/short variables - uses: rlespinasse/github-slug-action@v4 - with: - short-length: 7 - - # Automatic tag management and OCI Image Format Specification for labels - - name: Docker meta - id: meta - uses: docker/metadata-action@v3.7.0 - with: - # list of Docker images to use as base name for tags - images: | - ${{ env.GAR_BASE }}/${{ env.IMAGE_NAME }} - ${{ env.GCR_BASE }}/${{ env.GITHUB_REPOSITORY_SLUG_URL }}/${{ env.IMAGE_NAME }} - # generate Docker tags based on the following events/attributes - tags: | - type=schedule - type=ref,event=branch - type=ref,event=pr - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=semver,pattern={{major}} - type=sha - - # Setup Docker Buildx to allow use of docker cache layers from GH - - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v1 - - - name: Authenticate to Google Cloud - id: auth - uses: google-github-actions/auth@v0.7.1 - with: - workload_identity_provider: 'projects/143793276228/locations/global/workloadIdentityPools/github-actions/providers/github-oidc' - service_account: 'github-service-account@zealous-zebra.iam.gserviceaccount.com' - token_format: 'access_token' - - - name: Login to Google Artifact Registry - uses: docker/login-action@v1.14.1 - with: - registry: us-docker.pkg.dev - username: oauth2accesstoken - password: ${{ steps.auth.outputs.access_token }} - - - name: Login to Google Container Registry - uses: docker/login-action@v1.14.1 - with: - registry: gcr.io - username: oauth2accesstoken - password: ${{ steps.auth.outputs.access_token }} - - # Build and push image to Google Artifact Registry - - name: Build & push - id: docker_build - uses: docker/build-push-action@v2.10.0 - with: - target: tester - context: . - file: ./docker/Dockerfile - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - build-args: | - NETWORK=${{ github.event.inputs.network || env.NETWORK }} - SHORT_SHA=${{ env.GITHUB_SHA_SHORT }} - RUST_BACKTRACE=${{ env.RUST_BACKTRACE }} - RUST_LIB_BACKTRACE=${{ env.RUST_LIB_BACKTRACE }} - COLORBT_SHOW_HIDDEN=${{ env.COLORBT_SHOW_HIDDEN }} - ZEBRA_SKIP_NETWORK_TESTS="1" - CHECKPOINT_SYNC=${{ github.event.inputs.checkpoint_sync || true }} - RUST_LOG=debug - SENTRY_DSN=${{ secrets.SENTRY_ENDPOINT }} - push: true - cache-from: type=registry,ref=${{ env.GAR_BASE }}/${{ env.IMAGE_NAME }}:${{ env.GITHUB_REF_SLUG_URL }}-buildcache - cache-to: type=registry,ref=${{ env.GAR_BASE }}/${{ env.IMAGE_NAME }}:${{ env.GITHUB_REF_SLUG_URL }}-buildcache,mode=max + uses: ./.github/workflows/docker-image-build.yml + with: + dockerfile_path: ./docker/Dockerfile + dockerfile_target: tester + image_name: zebrad-test + network: Mainnet + checkpoint_sync: true + rust_backtrace: full + rust_lib_backtrace: full + colorbt_show_hidden: '1' + zebra_skip_ipv6_tests: '1' + rust_log: info # Test that Zebra can run a full mainnet sync after a PR is approved test-full-sync: @@ -203,7 +125,7 @@ jobs: --container-restart-policy=never \ --container-stdin \ --container-tty \ - --container-env=ZEBRA_SKIP_IPV6_TESTS=1,TEST_FULL_SYNC=1,ZEBRA_FORCE_USE_COLOR=1,FULL_SYNC_MAINNET_TIMEOUT_MINUTES=600 \ + --container-env=TEST_FULL_SYNC=1,ZEBRA_FORCE_USE_COLOR=1,FULL_SYNC_MAINNET_TIMEOUT_MINUTES=600 \ --machine-type ${{ env.MACHINE_TYPE }} \ --scopes cloud-platform \ --metadata=google-monitoring-enabled=true,google-logging-enabled=true \ diff --git a/.github/workflows/test.patch.yml b/.github/workflows/test.patch.yml index 72a182706..4b532f99a 100644 --- a/.github/workflows/test.patch.yml +++ b/.github/workflows/test.patch.yml @@ -12,6 +12,7 @@ on: - '**/Cargo.lock' - 'docker/**' - '.github/workflows/test.yml' + - '.github/workflows/docker-image-build.yml' jobs: build: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9964803c0..de3d0c65b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -49,109 +49,31 @@ on: # workflow definitions - 'docker/**' - '.github/workflows/test.yml' + - '.github/workflows/docker-image-build.yml' env: - CARGO_INCREMENTAL: '1' - ZEBRA_SKIP_IPV6_TESTS: '1' - RUST_BACKTRACE: full - RUST_LIB_BACKTRACE: full - COLORBT_SHOW_HIDDEN: '1' NETWORK: Mainnet PROJECT_ID: zealous-zebra + IMAGE_NAME: zebrad-test GAR_BASE: us-docker.pkg.dev/zealous-zebra/zebra - GCR_BASE: gcr.io/zealous-zebra REGION: us-central1 ZONE: us-central1-a MACHINE_TYPE: c2d-standard-4 - IMAGE_NAME: zebrad-test jobs: build: - name: Build images - timeout-minutes: 210 - runs-on: ubuntu-latest - permissions: - contents: 'read' - id-token: 'write' - steps: - - uses: actions/checkout@v3.0.2 - with: - persist-credentials: false - - - name: Inject slug/short variables - uses: rlespinasse/github-slug-action@v4 - with: - short-length: 7 - - # Automatic tag management and OCI Image Format Specification for labels - - name: Docker meta - id: meta - uses: docker/metadata-action@v3.7.0 - with: - # list of Docker images to use as base name for tags - images: | - ${{ env.GAR_BASE }}/${{ env.IMAGE_NAME }} - ${{ env.GCR_BASE }}/${{ env.GITHUB_REPOSITORY_SLUG_URL }}/${{ env.IMAGE_NAME }} - # generate Docker tags based on the following events/attributes - tags: | - type=schedule - type=ref,event=branch - type=ref,event=pr - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=semver,pattern={{major}} - type=sha - - # Setup Docker Buildx to allow use of docker cache layers from GH - - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v1 - - - name: Authenticate to Google Cloud - id: auth - uses: google-github-actions/auth@v0.7.1 - with: - workload_identity_provider: 'projects/143793276228/locations/global/workloadIdentityPools/github-actions/providers/github-oidc' - service_account: 'github-service-account@zealous-zebra.iam.gserviceaccount.com' - token_format: 'access_token' - - - name: Login to Google Artifact Registry - uses: docker/login-action@v1.14.1 - with: - registry: us-docker.pkg.dev - username: oauth2accesstoken - password: ${{ steps.auth.outputs.access_token }} - - - name: Login to Google Container Registry - uses: docker/login-action@v1.14.1 - with: - registry: gcr.io - username: oauth2accesstoken - password: ${{ steps.auth.outputs.access_token }} - - # Build and push image to Google Artifact Registry - - name: Build & push - id: docker_build - uses: docker/build-push-action@v2.10.0 - with: - target: tester - context: . - file: ./docker/Dockerfile - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - build-args: | - NETWORK=${{ github.event.inputs.network || env.NETWORK }} - SHORT_SHA=${{ env.GITHUB_SHA_SHORT }} - RUST_BACKTRACE=${{ env.RUST_BACKTRACE }} - RUST_LIB_BACKTRACE=${{ env.RUST_LIB_BACKTRACE }} - COLORBT_SHOW_HIDDEN=${{ env.COLORBT_SHOW_HIDDEN }} - ZEBRA_SKIP_NETWORK_TESTS="1" - CHECKPOINT_SYNC=${{ github.event.inputs.checkpoint_sync || true }} - RUST_LOG=debug - SENTRY_DSN=${{ secrets.SENTRY_ENDPOINT }} - push: true - cache-from: type=registry,ref=${{ env.GAR_BASE }}/${{ env.IMAGE_NAME }}:${{ env.GITHUB_REF_SLUG_URL }}-buildcache - cache-to: type=registry,ref=${{ env.GAR_BASE }}/${{ env.IMAGE_NAME }}:${{ env.GITHUB_REF_SLUG_URL }}-buildcache,mode=max + uses: ./.github/workflows/docker-image-build.yml + with: + dockerfile_path: ./docker/Dockerfile + dockerfile_target: tester + image_name: zebrad-test + network: Mainnet + checkpoint_sync: true + rust_backtrace: full + rust_lib_backtrace: full + colorbt_show_hidden: '1' + zebra_skip_ipv6_tests: '1' + rust_log: info # Run all the zebra tests, including tests that are ignored by default test-all: @@ -168,7 +90,7 @@ jobs: - name: Run all zebrad tests run: | docker pull ${{ env.GAR_BASE }}/${{ env.IMAGE_NAME }}:sha-${{ env.GITHUB_SHA_SHORT }} - docker run -e ZEBRA_SKIP_IPV6_TESTS --name zebrad-tests -t ${{ env.GAR_BASE }}/${{ env.IMAGE_NAME }}:sha-${{ env.GITHUB_SHA_SHORT }} cargo test --locked --release --features enable-sentry --workspace -- --include-ignored + docker run --name zebrad-tests -t ${{ env.GAR_BASE }}/${{ env.IMAGE_NAME }}:sha-${{ env.GITHUB_SHA_SHORT }} cargo test --locked --release --features enable-sentry --workspace -- --include-ignored # This test changes zebra-chain's activation heights, # which can recompile all the Zebra crates, @@ -189,7 +111,7 @@ jobs: - name: Run tests with fake activation heights run: | docker pull ${{ env.GAR_BASE }}/${{ env.IMAGE_NAME }}:sha-${{ env.GITHUB_SHA_SHORT }} - docker run -e ZEBRA_SKIP_IPV6_TESTS -e TEST_FAKE_ACTIVATION_HEIGHTS --name zebrad-tests -t ${{ env.GAR_BASE }}/${{ env.IMAGE_NAME }}:sha-${{ env.GITHUB_SHA_SHORT }} cargo test --locked --release --package zebra-state --lib -- with_fake_activation_heights + docker run -e TEST_FAKE_ACTIVATION_HEIGHTS --name zebrad-tests -t ${{ env.GAR_BASE }}/${{ env.IMAGE_NAME }}:sha-${{ env.GITHUB_SHA_SHORT }} cargo test --locked --release --package zebra-state --lib -- with_fake_activation_heights env: TEST_FAKE_ACTIVATION_HEIGHTS: '1' @@ -208,7 +130,7 @@ jobs: - name: Run zebrad large sync tests run: | docker pull ${{ env.GAR_BASE }}/${{ env.IMAGE_NAME }}:sha-${{ env.GITHUB_SHA_SHORT }} - docker run -e ZEBRA_SKIP_IPV6_TESTS --name zebrad-tests -t ${{ env.GAR_BASE }}/${{ env.IMAGE_NAME }}:sha-${{ env.GITHUB_SHA_SHORT }} cargo test --locked --release --features enable-sentry --test acceptance sync_large_checkpoints_ -- --ignored + docker run --name zebrad-tests -t ${{ env.GAR_BASE }}/${{ env.IMAGE_NAME }}:sha-${{ env.GITHUB_SHA_SHORT }} cargo test --locked --release --features enable-sentry --test acceptance sync_large_checkpoints_ -- --ignored test-lightwalletd-integration: name: Test integration with lightwalletd @@ -224,7 +146,7 @@ jobs: - name: Run tests with included lightwalletd binary run: | docker pull ${{ env.GAR_BASE }}/${{ env.IMAGE_NAME }}:sha-${{ env.GITHUB_SHA_SHORT }} - docker run -e ZEBRA_SKIP_IPV6_TESTS -e ZEBRA_TEST_LIGHTWALLETD --name zebrad-tests -t ${{ env.GAR_BASE }}/${{ env.IMAGE_NAME }}:sha-${{ env.GITHUB_SHA_SHORT }} cargo test --locked --release --features enable-sentry --test acceptance -- lightwalletd_integration --nocapture + docker run -e ZEBRA_TEST_LIGHTWALLETD --name zebrad-tests -t ${{ env.GAR_BASE }}/${{ env.IMAGE_NAME }}:sha-${{ env.GITHUB_SHA_SHORT }} cargo test --locked --release --features enable-sentry --test acceptance -- lightwalletd_integration --nocapture env: ZEBRA_TEST_LIGHTWALLETD: '1' @@ -311,7 +233,6 @@ jobs: --container-arg="--manifest-path" \ --container-arg="zebrad/Cargo.toml" \ --container-arg="sync_to_mandatory_checkpoint_${{ env.NETWORK }}" \ - --container-env=ZEBRA_SKIP_IPV6_TESTS=1 \ --machine-type ${{ env.MACHINE_TYPE }} \ --scopes cloud-platform \ --metadata=google-monitoring-enabled=true,google-logging-enabled=true \ @@ -480,7 +401,6 @@ jobs: --container-arg="--manifest-path" \ --container-arg="zebrad/Cargo.toml" \ --container-arg="sync_past_mandatory_checkpoint_${{ env.NETWORK }}" \ - --container-env=ZEBRA_SKIP_IPV6_TESTS=1 \ --machine-type ${{ env.MACHINE_TYPE }} \ --scopes cloud-platform \ --metadata=google-monitoring-enabled=true,google-logging-enabled=true \ diff --git a/.github/workflows/zcash-lightwalletd.yml b/.github/workflows/zcash-lightwalletd.yml index ab964815c..32b04b9de 100644 --- a/.github/workflows/zcash-lightwalletd.yml +++ b/.github/workflows/zcash-lightwalletd.yml @@ -21,9 +21,7 @@ on: - '.github/workflows/zcash-lightwalletd.yml' env: - PROJECT_ID: zealous-zebra GAR_BASE: us-docker.pkg.dev/zealous-zebra/zebra - GCR_BASE: gcr.io/zealous-zebra IMAGE_NAME: lightwalletd jobs: diff --git a/.github/workflows/zcash-params.yml b/.github/workflows/zcash-params.yml index 29ff190e1..b550f51e3 100644 --- a/.github/workflows/zcash-params.yml +++ b/.github/workflows/zcash-params.yml @@ -13,99 +13,16 @@ on: # workflow definitions - 'docker/zcash-params/Dockerfile' - '.github/workflows/zcash-params.yml' - -env: - CARGO_INCREMENTAL: '1' - PROJECT_ID: zealous-zebra - GAR_BASE: us-docker.pkg.dev/zealous-zebra/zebra - GCR_BASE: gcr.io/zealous-zebra - IMAGE_NAME: zcash-params + - '.github/workflows/docker-image-build.yml' jobs: build: - name: Build images - # TODO: remove timeout until we have an average build time - # timeout-minutes: 180 - runs-on: ubuntu-latest - permissions: - contents: 'read' - id-token: 'write' - - steps: - - uses: actions/checkout@v3.0.2 - with: - persist-credentials: false - - - name: Inject slug/short variables - uses: rlespinasse/github-slug-action@v4 - with: - short-length: 7 - - # Automatic tag management and OCI Image Format Specification for labels - - name: Docker meta - id: meta - uses: docker/metadata-action@v3.7.0 - with: - # list of Docker images to use as base name for tags - images: | - ${{ env.GAR_BASE }}/${{ env.IMAGE_NAME }} - # generate Docker tags based on the following events/attributes - tags: | - type=schedule - type=ref,event=branch - type=ref,event=pr - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=semver,pattern={{major}} - type=sha - - - name: Set up QEMU - id: qemu - uses: docker/setup-qemu-action@v1 - with: - image: tonistiigi/binfmt:latest - platforms: all - - # Setup Docker Buildx to allow use of docker cache layers from GH - - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v1 - - # Setup gcloud CLI - - name: Authenticate to Google Cloud - id: auth - uses: google-github-actions/auth@v0.7.1 - with: - workload_identity_provider: 'projects/143793276228/locations/global/workloadIdentityPools/github-actions/providers/github-oidc' - service_account: 'github-service-account@zealous-zebra.iam.gserviceaccount.com' - token_format: 'access_token' - - - name: Login to Google Artifact Registry - uses: docker/login-action@v1.14.1 - with: - registry: us-docker.pkg.dev - username: oauth2accesstoken - password: ${{ steps.auth.outputs.access_token }} - - # Build and push image to Google Artifact Registry - - name: Build & push - id: docker_build - uses: docker/build-push-action@v2.10.0 - with: - target: builder - context: . - file: ./docker/zcash-params/Dockerfile - # TODO: building crates is taking too long with arm64 and it's timing out on GHA - # platforms: | - # linux/amd64 - # linux/arm64 - - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - build-args: | - SHORT_SHA=${{ env.GITHUB_SHA_SHORT }} - ZEBRA_SKIP_IPV6_TESTS="1" - SENTRY_DSN=${{ secrets.SENTRY_ENDPOINT }} - push: true - cache-from: type=registry,ref=${{ env.GAR_BASE }}/${{ env.IMAGE_NAME }}:buildcache - cache-to: type=registry,ref=${{ env.GAR_BASE }}/${{ env.IMAGE_NAME }}:buildcache,mode=max + uses: ./.github/workflows/docker-image-build.yml + with: + dockerfile_path: ./docker/zcash-params/Dockerfile + dockerfile_target: builder + image_name: zcash-params + rust_backtrace: full + rust_lib_backtrace: full + colorbt_show_hidden: '1' + rust_log: info