Skip to content

Commit

Permalink
ci: build node-specific ARM64 Docker images
Browse files Browse the repository at this point in the history
  • Loading branch information
xJonathanLEI committed Nov 19, 2023
1 parent 80938e4 commit f718c17
Show file tree
Hide file tree
Showing 2 changed files with 160 additions and 20 deletions.
90 changes: 80 additions & 10 deletions .github/workflows/docker-jsonrpc.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Build Docker Image with jsonrpc-to-firestark
name: "Build Docker images with jsonrpc-to-firestark"

on:
workflow_dispatch:
Expand All @@ -11,27 +11,97 @@ on:
required: true

jobs:
build:
name: "Build"
image-info:
name: "Extract image info"
runs-on: "ubuntu-latest"
outputs:
tag: ${{ steps.derive.outputs.tag }}

env:
DOCKER_REPOSITORY: "starknet/firestark"

steps:
- id: "derive"
name: "Derive image info from workflow input"
run: |
echo "tag=${DOCKER_REPOSITORY}:${{ github.event.inputs.firestarkVersion }}-jsonrpc-${{ github.event.inputs.jsonrpcToFirestarkVersion }}" >> $GITHUB_OUTPUT
build:
name: "Build for ${{ matrix.platform }}"
runs-on: "ubuntu-latest"
needs:
- "image-info"

strategy:
matrix:
include:
- tag: "amd64"
platform: "linux/amd64"
artifact: "amd64.tar.gz"
- tag: "arm64"
platform: "linux/arm64/v8"
artifact: "arm64.tar.gz"

steps:
- name: "Checkout"
uses: "actions/checkout@v2"
uses: "actions/checkout@v3"

- name: "Build Docker image"
run: |
docker buildx build \
-t ${{ needs.image-info.outputs.tag }}-${{ matrix.tag }} \
--build-arg FIRESTARK_VERSION=${{ github.event.inputs.firestarkVersion }} \
--build-arg JSONRPC_TO_FIRESTARK_VERSION=${{ github.event.inputs.jsonrpcToFirestarkVersion }} \
--platform "${{ matrix.platform }}" \
--output=type=docker \
-f ./Dockerfile.jsonrpc .
- name: "Export Docker image"
run: |
docker save ${{ needs.image-info.outputs.tag }}-${{ matrix.tag }} | gzip > /tmp/${{ matrix.artifact }}
- name: "Upload Docker image artifact"
uses: "actions/upload-artifact@v3"
with:
name: "${{ matrix.artifact }}"
path: "/tmp/${{ matrix.artifact }}"

push:
name: "Push Docker images"
runs-on: "ubuntu-latest"
needs:
- "image-info"
- "build"

steps:
- 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: "Login to Docker Hub"
uses: "docker/[email protected]"
with:
username: "${{ secrets.DOCKER_HUB_USERNAME }}"
password: "${{ secrets.DOCKER_HUB_PASSWORD }}"

- name: "Build Docker image"
run: |
docker build -t ${DOCKER_REPOSITORY}:${{ github.event.inputs.firestarkVersion }}-jsonrpc-${{ github.event.inputs.jsonrpcToFirestarkVersion }} --build-arg FIRESTARK_VERSION=${{ github.event.inputs.firestarkVersion }} --build-arg JSONRPC_TO_FIRESTARK_VERSION=${{ github.event.inputs.jsonrpcToFirestarkVersion }} -f ./Dockerfile.jsonrpc .
- name: "Push Docker image"
- name: "Push Docker images"
run: |
docker push ${DOCKER_REPOSITORY}:${{ github.event.inputs.firestarkVersion }}-jsonrpc-${{ github.event.inputs.jsonrpcToFirestarkVersion }}
docker push ${{ needs.image-info.outputs.tag }}-amd64
docker push ${{ needs.image-info.outputs.tag }}-arm64
docker manifest create ${{ needs.image-info.outputs.tag }} \
${{ needs.image-info.outputs.tag }}-amd64 \
${{ needs.image-info.outputs.tag }}-arm64
docker manifest push ${{ needs.image-info.outputs.tag }}
90 changes: 80 additions & 10 deletions .github/workflows/docker-pathfinder.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Build Docker Image with pathfinder
name: "Build Docker images with pathfinder"

on:
workflow_dispatch:
Expand All @@ -11,27 +11,97 @@ on:
required: true

jobs:
build:
name: "Build"
image-info:
name: "Extract image info"
runs-on: "ubuntu-latest"
outputs:
tag: ${{ steps.derive.outputs.tag }}

env:
DOCKER_REPOSITORY: "starknet/firestark"

steps:
- id: "derive"
name: "Derive image info from workflow input"
run: |
echo "tag=${DOCKER_REPOSITORY}:${{ github.event.inputs.firestarkVersion }}-pathfinder-${{ github.event.inputs.pathfinderVersion }}" >> $GITHUB_OUTPUT
build:
name: "Build for ${{ matrix.platform }}"
runs-on: "ubuntu-latest"
needs:
- "image-info"

strategy:
matrix:
include:
- tag: "amd64"
platform: "linux/amd64"
artifact: "amd64.tar.gz"
- tag: "arm64"
platform: "linux/arm64/v8"
artifact: "arm64.tar.gz"

steps:
- name: "Checkout"
uses: "actions/checkout@v2"
uses: "actions/checkout@v3"

- name: "Build Docker image"
run: |
docker buildx build \
-t ${{ needs.image-info.outputs.tag }}-${{ matrix.tag }} \
--build-arg FIRESTARK_VERSION=${{ github.event.inputs.firestarkVersion }} \
--build-arg PATHFINDER_VERSION=${{ github.event.inputs.pathfinderVersion }} \
--platform "${{ matrix.platform }}" \
--output=type=docker \
-f ./Dockerfile.pathfinder .
- name: "Export Docker image"
run: |
docker save ${{ needs.image-info.outputs.tag }}-${{ matrix.tag }} | gzip > /tmp/${{ matrix.artifact }}
- name: "Upload Docker image artifact"
uses: "actions/upload-artifact@v3"
with:
name: "${{ matrix.artifact }}"
path: "/tmp/${{ matrix.artifact }}"

push:
name: "Push Docker images"
runs-on: "ubuntu-latest"
needs:
- "image-info"
- "build"

steps:
- 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: "Login to Docker Hub"
uses: "docker/[email protected]"
with:
username: "${{ secrets.DOCKER_HUB_USERNAME }}"
password: "${{ secrets.DOCKER_HUB_PASSWORD }}"

- name: "Build Docker image"
run: |
docker build -t ${DOCKER_REPOSITORY}:${{ github.event.inputs.firestarkVersion }}-pathfinder-${{ github.event.inputs.pathfinderVersion }} --build-arg FIRESTARK_VERSION=${{ github.event.inputs.firestarkVersion }} --build-arg PATHFINDER_VERSION=${{ github.event.inputs.pathfinderVersion }} -f ./Dockerfile.pathfinder .
- name: "Push Docker image"
- name: "Push Docker images"
run: |
docker push ${DOCKER_REPOSITORY}:${{ github.event.inputs.firestarkVersion }}-pathfinder-${{ github.event.inputs.pathfinderVersion }}
docker push ${{ needs.image-info.outputs.tag }}-amd64
docker push ${{ needs.image-info.outputs.tag }}-arm64
docker manifest create ${{ needs.image-info.outputs.tag }} \
${{ needs.image-info.outputs.tag }}-amd64 \
${{ needs.image-info.outputs.tag }}-arm64
docker manifest push ${{ needs.image-info.outputs.tag }}

0 comments on commit f718c17

Please sign in to comment.