Skip to content

status-im/nimbus-eth2@eip-7688 #778

status-im/nimbus-eth2@eip-7688

status-im/nimbus-eth2@eip-7688 #778

name: Build nimbus-eth2 docker image
run-name: "${{ inputs.repository }}@${{ inputs.ref }}${{ inputs.correlation_id && format(' [{0}]', inputs.correlation_id) || '' }}"
on:
workflow_dispatch:
inputs:
repository:
description: The source nimbus-eth2 repository to build from
default: status-im/nimbus-eth2
type: string
required: true
ref:
description: The branch, tag or SHA to checkout and build from
default: unstable
type: string
required: true
docker_tag:
description: Override target docker tag (defaults to the above source ref if left blank)
type: string
required: false
correlation_id:
description: Optional correlation ID passed through to the run name (used by integrations)
type: string
required: false
jobs:
prepare:
runs-on: ubuntu-latest
outputs:
platforms: ${{ steps.setup.outputs.platforms }}
target_tag: ${{ steps.tag.outputs.docker_tag }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Prepare Matrix
id: setup
uses: ./.github/actions/prepare
with:
client: 'nimbus-eth2'
repository: ${{ inputs.repository }}
ref: ${{ inputs.ref }}
- name: Generate target tag
id: tag
uses: ./.github/actions/docker-tag
with:
input: ${{ inputs.docker_tag || inputs.ref }}
repository: ${{ inputs.repository }}
upstream_repository: status-im/nimbus-eth2
docker_tag: ${{ inputs.docker_tag }}
deploy-beacon:
needs:
- prepare
runs-on: ${{ matrix.runner }}
continue-on-error: true
strategy:
matrix:
include: ${{fromJson(needs.prepare.outputs.platforms)}}
outputs:
git_commit_hash: ${{ steps.set_output.outputs.git_commit_hash }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/install-deps
with:
repository: ${{ inputs.repository }}
- uses: ./.github/actions/deploy
id: deploy
with:
source_repository: ${{ inputs.repository }}
source_ref: ${{ inputs.ref }}
target_tag: ${{ needs.prepare.outputs.target_tag }}-${{ matrix.slug }}
target_repository: ethpandaops/nimbus-eth2
target_dockerfile: ./nimbus-eth2/Dockerfile.beacon
platform: ${{ matrix.platform }}
DOCKER_USERNAME: "${{ vars.DOCKER_USERNAME }}"
DOCKER_PASSWORD: "${{ secrets.DOCKER_PASSWORD }}"
MACOS_PASSWORD: "${{ secrets.MACOS_PASSWORD }}"
GOPROXY: "${{ vars.GOPROXY }}"
HARBOR_USERNAME: "${{ vars.HARBOR_USERNAME }}"
HARBOR_PASSWORD: "${{ secrets.HARBOR_PASSWORD }}"
harbor_registry: ${{ vars.HARBOR_REGISTRY }}
# This step captures the git commit hash from the deploy action for job output
- name: Set job output
id: set_output
run: echo "git_commit_hash=${{ steps.deploy.outputs.git_commit_hash }}" >> $GITHUB_OUTPUT
shell: bash
deploy-beacon-minimal:
needs:
- prepare
runs-on: ${{ matrix.runner }}
continue-on-error: true
strategy:
matrix:
include: ${{fromJson(needs.prepare.outputs.platforms)}}
outputs:
git_commit_hash: ${{ steps.set_output.outputs.git_commit_hash }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/install-deps
with:
repository: ${{ inputs.repository }}
- uses: ./.github/actions/deploy
id: deploy
with:
source_repository: ${{ inputs.repository }}
source_ref: ${{ inputs.ref }}
target_tag: ${{ needs.prepare.outputs.target_tag }}-minimal-${{ matrix.slug }}
target_repository: ethpandaops/nimbus-eth2
target_dockerfile: ./nimbus-eth2/Dockerfile.beacon-minimal
platform: ${{ matrix.platform }}
DOCKER_USERNAME: "${{ vars.DOCKER_USERNAME }}"
DOCKER_PASSWORD: "${{ secrets.DOCKER_PASSWORD }}"
MACOS_PASSWORD: "${{ secrets.MACOS_PASSWORD }}"
GOPROXY: "${{ vars.GOPROXY }}"
# This step captures the git commit hash from the deploy action for job output
- name: Set job output
id: set_output
run: echo "git_commit_hash=${{ steps.deploy.outputs.git_commit_hash }}" >> $GITHUB_OUTPUT
shell: bash
deploy-validator:
needs:
- prepare
runs-on: ${{ matrix.runner }}
continue-on-error: true
strategy:
matrix:
include: ${{fromJson(needs.prepare.outputs.platforms)}}
outputs:
git_commit_hash: ${{ steps.set_output.outputs.git_commit_hash }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/deploy
id: deploy
with:
source_repository: ${{ inputs.repository }}
source_ref: ${{ inputs.ref }}
target_tag: ${{ needs.prepare.outputs.target_tag }}-${{ matrix.slug }}
target_repository: ethpandaops/nimbus-validator-client
target_dockerfile: ./nimbus-eth2/Dockerfile.validator
platform: ${{ matrix.platform }}
DOCKER_USERNAME: "${{ vars.DOCKER_USERNAME }}"
DOCKER_PASSWORD: "${{ secrets.DOCKER_PASSWORD }}"
MACOS_PASSWORD: "${{ secrets.MACOS_PASSWORD }}"
GOPROXY: "${{ vars.GOPROXY }}"
HARBOR_USERNAME: "${{ vars.HARBOR_USERNAME }}"
HARBOR_PASSWORD: "${{ secrets.HARBOR_PASSWORD }}"
harbor_registry: ${{ vars.HARBOR_REGISTRY }}
# This step captures the git commit hash from the deploy action for job output
- name: Set job output
id: set_output
run: echo "git_commit_hash=${{ steps.deploy.outputs.git_commit_hash }}" >> $GITHUB_OUTPUT
shell: bash
deploy-validator-minimal:
needs:
- prepare
runs-on: ${{ matrix.runner }}
continue-on-error: true
strategy:
matrix:
include: ${{fromJson(needs.prepare.outputs.platforms)}}
outputs:
git_commit_hash: ${{ steps.set_output.outputs.git_commit_hash }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/deploy
id: deploy
with:
source_repository: ${{ inputs.repository }}
source_ref: ${{ inputs.ref }}
target_tag: ${{ needs.prepare.outputs.target_tag }}-minimal-${{ matrix.slug }}
target_repository: ethpandaops/nimbus-validator-client
target_dockerfile: ./nimbus-eth2/Dockerfile.validator-minimal
platform: ${{ matrix.platform }}
DOCKER_USERNAME: "${{ vars.DOCKER_USERNAME }}"
DOCKER_PASSWORD: "${{ secrets.DOCKER_PASSWORD }}"
MACOS_PASSWORD: "${{ secrets.MACOS_PASSWORD }}"
GOPROXY: "${{ vars.GOPROXY }}"
HARBOR_USERNAME: "${{ vars.HARBOR_USERNAME }}"
HARBOR_PASSWORD: "${{ secrets.HARBOR_PASSWORD }}"
harbor_registry: ${{ vars.HARBOR_REGISTRY }}
# This step captures the git commit hash from the deploy action for job output
- name: Set job output
id: set_output
run: echo "git_commit_hash=${{ steps.deploy.outputs.git_commit_hash }}" >> $GITHUB_OUTPUT
shell: bash
manifest-beacon:
needs:
- prepare
- deploy-beacon
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/manifest
with:
source_repository: ${{ inputs.repository }}
source_ref: ${{ inputs.ref }}
target_tag: ${{ needs.prepare.outputs.target_tag }}
target_repository: ethpandaops/nimbus-eth2
platforms: ${{ needs.prepare.outputs.platforms }}
harbor_registry: ${{ vars.HARBOR_REGISTRY }}
HARBOR_USERNAME: "${{ vars.HARBOR_USERNAME }}"
HARBOR_PASSWORD: "${{ secrets.HARBOR_PASSWORD }}"
git_commit_hash: ${{ needs.deploy-beacon.outputs.git_commit_hash }}
DOCKER_USERNAME: "${{ vars.DOCKER_USERNAME }}"
DOCKER_PASSWORD: "${{ secrets.DOCKER_PASSWORD }}"
manifest-beacon-minimal:
needs:
- prepare
- deploy-beacon-minimal
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/manifest
with:
source_repository: ${{ inputs.repository }}
source_ref: ${{ inputs.ref }}
target_tag: ${{ needs.prepare.outputs.target_tag }}-minimal
target_repository: ethpandaops/nimbus-eth2
platforms: ${{ needs.prepare.outputs.platforms }}
harbor_registry: ${{ vars.HARBOR_REGISTRY }}
HARBOR_USERNAME: "${{ vars.HARBOR_USERNAME }}"
HARBOR_PASSWORD: "${{ secrets.HARBOR_PASSWORD }}"
git_commit_hash: ${{ needs.deploy-beacon-minimal.outputs.git_commit_hash }}
DOCKER_USERNAME: "${{ vars.DOCKER_USERNAME }}"
DOCKER_PASSWORD: "${{ secrets.DOCKER_PASSWORD }}"
manifest-validator:
needs:
- prepare
- deploy-validator
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/manifest
with:
source_repository: ${{ inputs.repository }}
source_ref: ${{ inputs.ref }}
target_tag: ${{ needs.prepare.outputs.target_tag }}
target_repository: ethpandaops/nimbus-validator-client
platforms: ${{ needs.prepare.outputs.platforms }}
harbor_registry: ${{ vars.HARBOR_REGISTRY }}
HARBOR_USERNAME: "${{ vars.HARBOR_USERNAME }}"
HARBOR_PASSWORD: "${{ secrets.HARBOR_PASSWORD }}"
git_commit_hash: ${{ needs.deploy-validator.outputs.git_commit_hash }}
DOCKER_USERNAME: "${{ vars.DOCKER_USERNAME }}"
DOCKER_PASSWORD: "${{ secrets.DOCKER_PASSWORD }}"
manifest-validator-minimal:
needs:
- prepare
- deploy-validator-minimal
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: ./.github/actions/manifest
with:
source_repository: ${{ inputs.repository }}
source_ref: ${{ inputs.ref }}
target_tag: ${{ needs.prepare.outputs.target_tag }}-minimal
target_repository: ethpandaops/nimbus-validator-client
platforms: ${{ needs.prepare.outputs.platforms }}
harbor_registry: ${{ vars.HARBOR_REGISTRY }}
HARBOR_USERNAME: "${{ vars.HARBOR_USERNAME }}"
HARBOR_PASSWORD: "${{ secrets.HARBOR_PASSWORD }}"
git_commit_hash: ${{ needs.deploy-validator-minimal.outputs.git_commit_hash }}
DOCKER_USERNAME: "${{ vars.DOCKER_USERNAME }}"
DOCKER_PASSWORD: "${{ secrets.DOCKER_PASSWORD }}"
notify:
name: Discord Notification
runs-on: ubuntu-latest
needs:
- prepare
- deploy-beacon
- deploy-beacon-minimal
- deploy-validator
- deploy-validator-minimal
- manifest-beacon
- manifest-beacon-minimal
- manifest-validator
- manifest-validator-minimal
if: failure()
steps:
- name: Notify
uses: nobrayner/discord-webhook@1766a33bf571acdcc0678f00da4fb83aad01ebc7 # v1
with:
github-token: ${{ secrets.github_token }}
discord-webhook: ${{ secrets.DISCORD_WEBHOOK }}