feat(nft_ingester): read snapshot from a backfill stream (#448) #225
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 images | |
on: | |
workflow_dispatch: | |
pull_request: | |
branches: [develop] | |
push: | |
branches: [develop] | |
tags: ["v*"] | |
# Add concurrency to cancel in-progress runs on the same ref | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
# Add permissions block for GitHub Container Registry access | |
permissions: | |
contents: read | |
packages: write | |
env: | |
PUSH_CONDITION: ${{ github.event_name == 'push' && (contains(fromJSON('["refs/heads/develop"]'), github.ref) || startsWith(github.ref, 'refs/tags/')) || github.event_name == 'workflow_dispatch' && contains(fromJSON('["refs/heads/develop"]'), github.ref) }} | |
jobs: | |
build-base-image: | |
runs-on: ubuntu-latest | |
outputs: | |
version: ${{ steps.version.outputs.version }} | |
steps: | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Generate version info | |
id: version | |
run: | | |
echo "VERSION_INFO<<EOF" >> "$GITHUB_ENV" | |
./docker/version.sh | sed -e '$a\' >> "$GITHUB_ENV" | |
echo "EOF" >> "$GITHUB_ENV" | |
ver=$( [[ "$GITHUB_REF" == refs/tags/* ]] \ | |
&& echo "${GITHUB_REF#refs/tags/}" \ | |
|| (branch="${GITHUB_REF#refs/heads/}"; sha=$(git rev-parse --short HEAD); echo "${branch}-${sha}") ) | |
echo "Version: $ver" | |
echo "version=${ver}" >> "$GITHUB_OUTPUT" | |
# Build base image for local use only (no push) | |
- name: Build and export base image | |
uses: docker/build-push-action@v6 | |
with: | |
context: . | |
file: docker/base.Dockerfile | |
push: false | |
tags: ghcr.io/${{ github.repository_owner }}/aura-base:latest | |
outputs: type=docker,dest=${{ runner.temp }}/base.tar | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
build-args: | | |
"VERSION_INFO=${{ env.VERSION_INFO }}" | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: base | |
path: ${{ runner.temp }}/base.tar | |
build-binary-images: | |
runs-on: ubuntu-latest | |
needs: [build-base-image] | |
strategy: | |
fail-fast: true | |
matrix: | |
binary-name: | |
[ | |
ingester, | |
slot_persister, | |
backfill, | |
api, | |
synchronizer, | |
rocksdb_backup, | |
] | |
steps: | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
with: | |
driver: docker | |
- name: Download base image artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: base | |
path: ${{ runner.temp }} | |
- name: Load base image | |
run: | | |
docker load --input ${{ runner.temp }}/base.tar | |
- name: Docker metadata for tag | |
if: startsWith(github.ref, 'refs/tags/') | |
id: meta_tag | |
uses: docker/metadata-action@v5 | |
with: | |
images: | | |
ghcr.io/${{ github.repository_owner }}/aura-${{ matrix.binary-name }} | |
tags: | | |
type=semver,pattern=v{{version}} | |
type=raw,value=latest,enable={{is_default_branch}} | |
- name: Docker metadata for branch | |
if: startsWith(github.ref, 'refs/heads/') | |
id: meta_branch | |
uses: docker/metadata-action@v5 | |
with: | |
images: | | |
ghcr.io/${{ github.repository_owner }}/aura-${{ matrix.binary-name }} | |
tags: | | |
type=sha,event=branch,prefix={{branch}}- | |
type=raw,event=branch,value={{branch}}-latest | |
- name: Build and push | |
uses: docker/build-push-action@v6 | |
with: | |
context: . | |
file: docker/app.Dockerfile | |
push: ${{ env.PUSH_CONDITION }} | |
tags: ${{ startsWith(github.ref, 'refs/tags/') && steps.meta_tag.outputs.tags || steps.meta_branch.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} | |
build-args: | | |
BINARY=${{ matrix.binary-name }} | |
dispatch: | |
runs-on: ubuntu-latest | |
needs: [build-base-image, build-binary-images] | |
steps: | |
- name: Repository dispatch for development | |
if: startsWith(github.ref, 'refs/heads/develop') | |
run: | | |
curl -X POST \ | |
-H "Authorization: token ${{ secrets.DISPATCH_TOKEN_DEV }}" \ | |
-H "Accept: application/vnd.github+json" \ | |
https://api.github.com/repos/adm-metaex/aura-config-dev/dispatches \ | |
-d '{ | |
"event_type": "deploy", | |
"client_payload": { | |
"services": "${{ env.PUSH_CONDITION && 'ingester,slot_persister,backfill,api,synchronizer,rocksdb_backup' || '' }}", | |
"version": "${{ needs.build-base-image.outputs.version }}" | |
} | |
}' | |
- name: Repository dispatch for production | |
if: startsWith(github.ref, 'refs/tags/') | |
run: | | |
curl -X POST \ | |
-H "Authorization: token ${{ secrets.DISPATCH_TOKEN_PROD }}" \ | |
-H "Accept: application/vnd.github+json" \ | |
https://api.github.com/repos/adm-metaex/aura-config-prod/dispatches \ | |
-d '{ | |
"event_type": "deploy", | |
"client_payload": { | |
"services": "${{ env.PUSH_CONDITION && 'ingester,slot_persister,backfill,api,synchronizer,rocksdb_backup' || '' }}", | |
"version": "${{ needs.build-base-image.outputs.version }}" | |
} | |
}' |