Skip to content

release: bump version to 0.5.0 #16

release: bump version to 0.5.0

release: bump version to 0.5.0 #16

Workflow file for this run

name: "Build multi-arch images"
on:
push:
tags:
- "v*.*.*"
jobs:
crate-info:
name: "Extract crate info"
runs-on: "ubuntu-latest"
outputs:
version: ${{ steps.derive.outputs.version }}
steps:
- id: "derive"
name: "Derive crate info from Git tag"
run: |
FULL_REF="${{ github.ref }}"
REGEX="^refs\/tags\/v(.*)$"
[[ $FULL_REF =~ $REGEX ]];
echo "version=${BASH_REMATCH[1]}" >> $GITHUB_OUTPUT
build-amd64:
name: "Build for linux/amd64"
runs-on: "ubuntu-latest"
needs:
- "crate-info"
env:
DOCKER_REPOSITORY: "starknet/jsonrpc-to-firestark"
steps:
- name: "Checkout"
uses: "actions/checkout@v3"
- name: "Build Docker image"
run: |
docker build -t ${DOCKER_REPOSITORY}:${{ needs.crate-info.outputs.version }}-amd64 -f ./Dockerfile .
- name: "Export Docker image"
run: |
docker save ${DOCKER_REPOSITORY}:${{ needs.crate-info.outputs.version }}-amd64 | gzip > /tmp/amd64.tar.gz
- name: "Upload Docker image artifact"
uses: "actions/upload-artifact@v3"
with:
name: "amd64.tar.gz"
path: "/tmp/amd64.tar.gz"
build-arm64:
name: "Build for linux/arm64"
runs-on: "ubuntu-latest"
needs:
- "crate-info"
env:
DOCKER_REPOSITORY: "starknet/jsonrpc-to-firestark"
steps:
- name: "Checkout"
uses: "actions/checkout@v3"
- name: "Install cross"
run: |
cargo install --locked --version 0.2.5 cross
- name: "Build release"
run: |
cross build --release --target aarch64-unknown-linux-gnu
- name: "Build Docker image"
run: |
docker build -t ${DOCKER_REPOSITORY}:${{ needs.crate-info.outputs.version }}-arm64 -f ./.github/workflows/docker/Dockerfile.arm64 .
- name: "Export Docker image"
run: |
docker save ${DOCKER_REPOSITORY}:${{ needs.crate-info.outputs.version }}-arm64 | gzip > /tmp/arm64.tar.gz
- name: "Upload Docker image artifact"
uses: "actions/upload-artifact@v3"
with:
name: "arm64.tar.gz"
path: "/tmp/arm64.tar.gz"
push:
name: "Push multi-arch manifest"
runs-on: "ubuntu-latest"
needs:
- "build-amd64"
- "build-arm64"
- "crate-info"
env:
DOCKER_REPOSITORY: "starknet/jsonrpc-to-firestark"
steps:
- name: "Login to Docker Hub"
uses: "docker/[email protected]"
with:
username: "${{ secrets.DOCKER_HUB_USERNAME }}"
password: "${{ secrets.DOCKER_HUB_PASSWORD }}"
- name: "Download linux/amd64 image"
uses: "actions/download-artifact@v3"
with:
name: "amd64.tar.gz"
path: "/tmp/"
- name: "Download linux/arm64/v8 image"
uses: "actions/download-artifact@v3"
with:
name: "arm64.tar.gz"
path: "/tmp/"
- name: "Load Docker images"
run: |
docker load < /tmp/amd64.tar.gz
docker load < /tmp/arm64.tar.gz
- name: "Push Docker images"
run: |
docker push ${DOCKER_REPOSITORY}:${{ needs.crate-info.outputs.version }}-amd64
docker push ${DOCKER_REPOSITORY}:${{ needs.crate-info.outputs.version }}-arm64
docker manifest create ${DOCKER_REPOSITORY}:${{ needs.crate-info.outputs.version }} \
${DOCKER_REPOSITORY}:${{ needs.crate-info.outputs.version }}-amd64 \
${DOCKER_REPOSITORY}:${{ needs.crate-info.outputs.version }}-arm64
docker manifest create ${DOCKER_REPOSITORY}:latest \
${DOCKER_REPOSITORY}:${{ needs.crate-info.outputs.version }}-amd64 \
${DOCKER_REPOSITORY}:${{ needs.crate-info.outputs.version }}-arm64
docker manifest push ${DOCKER_REPOSITORY}:${{ needs.crate-info.outputs.version }}
docker manifest push ${DOCKER_REPOSITORY}:latest