Fixed wrong google-cloud-go dependency #1685
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
name: Build docker image | |
on: | |
push: | |
tags: | |
- "v*" | |
branches: | |
- "dockerbuild" | |
- "develop" | |
- "release/v*" | |
- "feature/*" | |
workflow_dispatch: | |
inputs: | |
flavors: | |
description: 'JSON-formatted list of flavors to build' | |
required: true | |
type: string | |
default: '[{"name":"geth","version":"latest-fh2"},{"name":"bsc","version":"latest-fh2"},{"name":"polygon","version":"latest-fh2"},{"name":"optimism","version":"latest-fh3"}]' | |
nitro_tag: | |
description: 'nitro docker image to pull (will not build if set to the string "null")' | |
required: true | |
type: string | |
default: 'latest' | |
env: | |
REGISTRY: ghcr.io | |
IMAGE_NAME: ${{ github.repository }} | |
jobs: | |
setup: | |
runs-on: ubuntu-latest | |
env: | |
SLACK_IDS: ${{ vars.SLACK_IDS }} | |
outputs: | |
slack_id: ${{ steps.get-slack-id.outputs.SLACK_ID }} | |
steps: | |
- name: Check SLACK_IDS env variable | |
run: | | |
if [ -z "${SLACK_IDS}" ]; then | |
echo "The secret 'vars.SLACK_IDS' is empty" | |
exit 1 | |
fi | |
- name: Get Slack ID | |
id: get-slack-id | |
run: | | |
SLACK_IDS=$(echo "$SLACK_IDS" | sed 's/\\//g') | |
SLACK_ID=$(echo "$SLACK_IDS" | jq -r '.["${{ github.actor }}"]') | |
echo "SLACK_ID=$SLACK_ID" >> $GITHUB_OUTPUT | |
build-vanilla: | |
needs: [setup] | |
runs-on: ubuntu-20.04 | |
permissions: | |
contents: read | |
packages: write | |
outputs: | |
tags: ${{ steps.meta.outputs.tags }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Branch name | |
id: extract_branch | |
shell: bash | |
run: | | |
echo "branch=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_OUTPUT | |
echo "release_train=$(echo ${GITHUB_REF#refs/heads/release/})" >> $GITHUB_OUTPUT | |
echo "core_version=$(grep 'github.com/streamingfast/firehose-core' go.mod | cut -d' ' -f2)" >> $GITHUB_OUTPUT | |
- name: Log in to the Container registry | |
uses: docker/login-action@v2 | |
with: | |
registry: ${{ env.REGISTRY }} | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Generate docker tags/labels from github build context | |
id: meta | |
uses: docker/metadata-action@v4 | |
with: | |
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | |
tags: | | |
type=ref,event=tag | |
type=sha,prefix=,enable=true | |
type=raw,enable=${{ github.ref == 'refs/heads/develop' }},value=develop | |
type=raw,enable=${{ startsWith(github.ref, 'refs/heads/release/v') }},value=${{ steps.extract_branch.outputs.release_train }} | |
flavor: | | |
latest=${{ startsWith(github.ref, 'refs/tags/') }} | |
- name: Build and push Docker image | |
uses: docker/build-push-action@v4 | |
with: | |
context: . | |
push: true | |
build-args: | | |
VERSION=${{ github.event.ref }} | |
COREVERSION=${{ steps.extract_branch.outputs.core_version }} | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} | |
- name: Get Job ID from GH API | |
id: get_job_id | |
if: ${{ failure() }} | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
jobs=$(gh api "repos/${{ github.repository }}/actions/runs/${{ github.run_id }}/attempts/${{ github.run_attempt }}/jobs") | |
job_id=$(echo "$jobs" | jq -r '.jobs[] | select(.runner_name=="${{ runner.name }}") | .id') | |
echo "job_id=$job_id" >> $GITHUB_OUTPUT | |
- name: Notify build failure on Slack | |
if: ${{ failure() }} | |
env: | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} | |
uses: Ilshidur/action-slack@2.1.0 | |
with: | |
args: | | |
:x: <@${{ needs.setup.outputs.slack_id }}> *${{ github.repository }}* Failed building docker image from ${{ github.ref_type }} _${{ github.ref_name }}_ (${{ github.actor }}, <https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}/job/${{ steps.get_job_id.outputs.job_id }}|See Actions Logs>) :broken_heart: | |
bundle-docker-version-nitro: | |
needs: [setup, build-vanilla] | |
runs-on: ubuntu-20.04 | |
if: ${{ (startsWith(github.ref, 'refs/tags/') || contains(github.event.head_commit.message, 'build:all') || github.event_name == 'workflow_dispatch') && (github.event.inputs.nitro_tag != 'null') }} | |
outputs: | |
nitro: ${{ steps.print.outputs.nitro }} | |
permissions: | |
contents: read | |
packages: write | |
steps: | |
- name: Log in to the Container registry | |
uses: docker/login-action@v2 | |
with: | |
registry: ${{ env.REGISTRY }} | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Branch name | |
id: extract_branch | |
shell: bash | |
run: | | |
echo "branch=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_OUTPUT | |
echo "release_train=$(echo ${GITHUB_REF#refs/heads/release/})" >> $GITHUB_OUTPUT | |
- run: | | |
docker pull ghcr.io/streamingfast/nitro:${{ github.event.inputs.nitro_tag == '' && 'latest' || github.event.inputs.nitro_tag }} | |
echo VERSION=$(docker inspect --format='{{index .Config.Labels "org.opencontainers.image.version"}}' 'ghcr.io/streamingfast/nitro:${{ github.event.inputs.nitro_tag == '' && 'latest' || github.event.inputs.nitro_tag }}') >> $GITHUB_ENV | |
echo SF_VERSION=$(echo "${{ needs.build-vanilla.outputs.tags }}" | grep -Ev "(develop|0.1[01].x)" | head -n 1 |cut -d: -f2) >> $GITHUB_ENV | |
- name: Generate docker tags/labels from github build context | |
id: meta | |
uses: docker/metadata-action@v4 | |
with: | |
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | |
tags: | | |
type=ref,event=tag,suffix=-nitro-${{ env.VERSION }} | |
type=ref,event=tag,suffix=-nitro | |
type=sha,prefix=,suffix=-nitro-${{ env.VERSION }},enable=true | |
type=sha,prefix=,suffix=-nitro,enable=true | |
type=raw,prefix=,suffix=-nitro-${{ env.VERSION }},enable=${{ github.ref == 'refs/heads/develop' }},value=develop | |
type=raw,prefix=,suffix=-nitro,enable=${{ github.ref == 'refs/heads/develop' }},value=develop | |
type=raw,prefix=,suffix=-nitro-${{ env.VERSION }},enable=${{ github.ref == 'refs/heads/dockerbuild' }},value=manual | |
type=raw,prefix=,suffix=-nitro,enable=${{ github.ref == 'refs/heads/dockerbuild' }},value=manual | |
type=raw,prefix=,suffix=-nitro-${{ env.VERSION }},enable=${{ startsWith(github.ref, 'refs/heads/release/v') }},value=${{ steps.extract_branch.outputs.release_train }} | |
type=raw,prefix=,suffix=-nitro,enable=${{ startsWith(github.ref, 'refs/heads/release/v') }},value=${{ steps.extract_branch.outputs.release_train }} | |
flavor: latest=false | |
- name: Build and push Docker image | |
uses: docker/build-push-action@v4 | |
with: | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} | |
file: ./Dockerfile.nitro | |
build-args: | | |
VERSION=${{ github.event.ref }} | |
CHAIN_DOCKER_VERSION=${{ env.VERSION }} | |
SF_VERSION=${{ env.SF_VERSION }} | |
- name: Get Job ID from GH API | |
id: get_job_id | |
if: ${{ failure() }} | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
jobs=$(gh api "repos/${{ github.repository }}/actions/runs/${{ github.run_id }}/attempts/${{ github.run_attempt }}/jobs") | |
job_id=$(echo "$jobs" | jq -r '.jobs[] | select(.runner_name=="${{ runner.name }}") | .id') | |
echo "job_id=$job_id" >> $GITHUB_OUTPUT | |
- name: Notify build failure on Slack | |
if: ${{ failure() }} | |
env: | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} | |
uses: Ilshidur/action-slack@2.1.0 | |
with: | |
args: | | |
:x: <@${{ needs.setup.outputs.slack_id }}> *${{ github.repository }}* Failed building bundle for nitro from ${{ github.ref_type }} _${{ github.ref_name }}_ (${{ github.actor }}, <https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}/job/${{ steps.get_job_id.outputs.job_id }}|See Actions Logs>) :broken_heart: | |
- id: print | |
run: | | |
OUT="${{ steps.meta.outputs.tags }}" | |
OUT="${OUT//'%'/'%25'}" | |
OUT="${OUT//$'\n'/' '}" | |
OUT="${OUT//$'\r'/' '}" | |
echo "nitro=$OUT" >> $GITHUB_OUTPUT | |
bundle-docker-versions: | |
needs: [setup, build-vanilla] | |
runs-on: ubuntu-20.04 | |
if: ${{ (startsWith(github.ref, 'refs/tags/') || contains(github.event.head_commit.message, 'build:all') || github.event_name == 'workflow_dispatch') && (github.event.inputs.flavors == '' || contains(github.event.inputs.flavors, 'geth') || contains(github.event.inputs.flavors, 'polygon') || contains(github.event.inputs.flavors, 'bsc') || contains(github.event.inputs.flavors, 'optimism')) }} | |
permissions: | |
contents: read | |
packages: write | |
outputs: | |
geth: ${{ steps.print.outputs.geth }} | |
bsc: ${{ steps.print.outputs.bsc }} | |
polygon: ${{ steps.print.outputs.polygon }} | |
optimism: ${{ steps.print.outputs.optimism }} | |
strategy: | |
matrix: | |
binary: ${{ fromJSON( github.event.inputs.flavors || '[{"name":"geth","version":"latest-fh2"},{"name":"bsc","version":"latest-fh2"},{"name":"polygon","version":"latest-fh2"},{"name":"optimism","version":"latest-fh3"}]') }} | |
steps: | |
- name: Log in to the Container registry | |
uses: docker/login-action@v2 | |
with: | |
registry: ${{ env.REGISTRY }} | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Branch name | |
id: extract_branch | |
shell: bash | |
run: | | |
echo "branch=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_OUTPUT | |
echo "release_train=$(echo ${GITHUB_REF#refs/heads/release/})" >> $GITHUB_OUTPUT | |
- run: | | |
echo ${{ matrix }} | |
echo ${{ matrix.binary }} | |
echo ${{ matrix.binary.name }} | |
docker pull ghcr.io/streamingfast/go-ethereum:${{ matrix.binary.name }}-${{ matrix.binary.version }} | |
echo VERSION=$(docker inspect --format='{{index .Config.Labels "org.opencontainers.image.version"}}' 'ghcr.io/streamingfast/go-ethereum':${{ matrix.binary.name }}-${{ matrix.binary.version }}) >> $GITHUB_ENV | |
echo SF_VERSION=$(echo "${{ needs.build-vanilla.outputs.tags }}" | grep -Ev "(develop|0.1[01].x)" | head -n 1 |cut -d: -f2) >> $GITHUB_ENV | |
- name: Generate docker tags/labels from github build context | |
id: meta | |
uses: docker/metadata-action@v4 | |
with: | |
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | |
tags: | | |
type=ref,event=tag,suffix=-${{ env.VERSION }} | |
type=ref,event=tag,suffix=-${{ matrix.binary.name }} | |
type=sha,prefix=,suffix=-${{ env.VERSION }},enable=true | |
type=sha,prefix=,suffix=-${{ matrix.binary }},enable=true | |
type=raw,prefix=,suffix=-${{ env.VERSION }},enable=${{ github.ref == 'refs/heads/develop' }},value=develop | |
type=raw,prefix=,suffix=-${{ matrix.binary.name }},enable=${{ github.ref == 'refs/heads/develop' }},value=develop | |
type=raw,prefix=,suffix=-${{ env.VERSION }},enable=${{ github.ref == 'refs/heads/dockerbuild' }},value=manual | |
type=raw,prefix=,suffix=-${{ matrix.binary.name }},enable=${{ github.ref == 'refs/heads/dockerbuild' }},value=manual | |
type=raw,prefix=,suffix=-${{ env.VERSION }},enable=${{ startsWith(github.ref, 'refs/heads/release/v') }},value=${{ steps.extract_branch.outputs.release_train }} | |
type=raw,prefix=,suffix=-${{ matrix.binary.name }},enable=${{ startsWith(github.ref, 'refs/heads/release/v') }},value=${{ steps.extract_branch.outputs.release_train }} | |
flavor: latest=false | |
- name: Build and push Docker image | |
uses: docker/build-push-action@v4 | |
with: | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} | |
file: ./Dockerfile.bundle | |
build-args: | | |
CHAIN_DOCKER_REPO=ghcr.io/streamingfast/go-ethereum | |
CHAIN_DOCKER_VERSION=${{ env.VERSION }} | |
SF_VERSION=${{ env.SF_VERSION }} | |
- name: Get Job ID from GH API | |
id: get_job_id | |
if: ${{ failure() }} | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
jobs=$(gh api "repos/${{ github.repository }}/actions/runs/${{ github.run_id }}/attempts/${{ github.run_attempt }}/jobs") | |
job_id=$(echo "$jobs" | jq -r '.jobs[] | select(.runner_name=="${{ runner.name }}") | .id') | |
echo "job_id=$job_id" >> $GITHUB_OUTPUT | |
- name: Notify build failure on Slack | |
if: ${{ failure() }} | |
env: | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} | |
uses: Ilshidur/action-slack@2.1.0 | |
with: | |
args: | | |
:x: <@${{ needs.setup.outputs.slack_id }}> *${{ github.repository }}* Failed building docker versions from ${{ github.ref_type }} _${{ github.ref_name }}_ (${{ github.actor }}, <https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}/job/${{ steps.get_job_id.outputs.job_id }}|See Actions Logs>) :broken_heart: | |
- id: print | |
run: | | |
OUT="${{ steps.meta.outputs.tags }}" | |
OUT="${OUT//'%'/'%25'}" | |
OUT="${OUT//$'\n'/' '}" | |
OUT="${OUT//$'\r'/' '}" | |
echo "${{ matrix.binary.name }}=$OUT" >> $GITHUB_OUTPUT | |
slack-notifications-vanilla: | |
if: ${{ !startsWith(github.ref, 'refs/tags/') && !contains(github.event.head_commit.message, 'build:all') && github.event_name != 'workflow_dispatch' }} | |
needs: [setup, build-vanilla] | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Slack notification | |
env: | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} | |
uses: Ilshidur/action-slack@2.1.0 | |
with: | |
args: | | |
:done: <@${{ needs.setup.outputs.slack_id }}> *${{ github.repository }}* Success building docker image from ${{ github.ref_type }} _${{ github.ref_name }}_ (${{ github.actor }}) :sparkling_heart: ```${{ join(needs.build-vanilla.outputs.tags, ' ') }}``` | |
slack-notifications: | |
needs: [ setup, build-vanilla, bundle-docker-versions ] | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Slack notification | |
env: | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} | |
uses: Ilshidur/action-slack@2.1.0 | |
with: | |
args: | | |
:done: <@${{ needs.setup.outputs.slack_id }}> *${{ github.repository }}* Success building docker images from ${{ github.ref_type }} _${{ github.ref_name }}_ (${{ github.actor }}) :sparkling_heart: ```${{ join(needs.build-vanilla.outputs.tags, ' ') }} | |
${{ needs.bundle-docker-versions.outputs.geth }} | |
${{ needs.bundle-docker-versions.outputs.bsc }} | |
${{ needs.bundle-docker-versions.outputs.optimism }} | |
${{ needs.bundle-docker-versions.outputs.polygon }}``` | |
slack-notification-nitro: | |
needs: [ setup, bundle-docker-version-nitro ] | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Slack notification | |
env: | |
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} | |
uses: Ilshidur/action-slack@2.1.0 | |
with: | |
args: | | |
:done: <@${{ needs.setup.outputs.slack_id }}> *${{ github.repository }}* Success building nitro docker images from ${{ github.ref_type }} _${{ github.ref_name }}_ (${{ github.actor }}) :sparkling_heart: ```${{ join(needs.build-vanilla.outputs.tags, ' ') }} | |
${{ needs.bundle-docker-version-nitro.outputs.nitro }}``` |