.github/workflows/_release_docker.yml #3
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: _Release 5 - Publish Docker Images to Docker Hub | |
on: | |
workflow_call: | |
workflow_dispatch: | |
permissions: | |
contents: read | |
packages: write | |
jobs: | |
publish-docker: | |
name: Build and Publish Docker Images | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
platform: [amd64, arm64] | |
steps: | |
- name: Check out the code | |
uses: actions/checkout@v3 | |
- name: Extract Package and Rust Versions | |
id: version_extraction | |
run: | | |
PACKAGE_VERSION=$(grep -m 1 '^version' Cargo.toml | sed 's/version = "\(.*\)"/\1/') | |
RUST_VERSION=$(grep -m 1 '^rust-version' Cargo.toml | sed 's/rust-version = "\(.*\)"/\1/') | |
echo "PACKAGE_VERSION=$PACKAGE_VERSION" >> $GITHUB_ENV | |
echo "RUST_VERSION=$RUST_VERSION" >> $GITHUB_ENV | |
shell: bash | |
- name: Deactivate Private Storage | |
run: | | |
chmod +x ./scripts/deactivate_private_storage.py | |
./scripts/deactivate_private_storage.py | |
- name: Log in to Docker Hub | |
uses: docker/login-action@v2 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Set up QEMU for multi-platform builds | |
uses: docker/setup-qemu-action@v2 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
# Build and push the base image with Rust version tag for each platform | |
- name: Build and push raphtory_base Docker image | |
uses: docker/build-push-action@v4 | |
with: | |
context: . | |
file: docker/base/Dockerfile | |
platforms: linux/amd64,linux/arm64 | |
push: true | |
tags: | | |
${{ secrets.DOCKERHUB_USERNAME }}/raphtory_base:${{ env.RUST_VERSION }}-${{ matrix.platform }} | |
# Build and push Python Docker image with package version and platform-specific tags | |
- name: Build and push Python Docker image | |
uses: docker/build-push-action@v4 | |
with: | |
context: . | |
file: docker/dockerfile | |
platforms: linux/amd64,linux/arm64 | |
push: true | |
build-args: | | |
BASE_IMAGE=${{ secrets.DOCKERHUB_USERNAME }}/raphtory_base:${{ env.RUST_VERSION }}-${{ matrix.platform }} | |
tags: | | |
${{ secrets.DOCKERHUB_USERNAME }}/raphtory:${{ env.PACKAGE_VERSION }}-python-${{ matrix.platform }} | |
# Build and push Rust Docker image with package version and platform-specific tags | |
- name: Build and push Rust Docker image | |
uses: docker/build-push-action@v4 | |
with: | |
context: . | |
file: Dockerfile | |
platforms: linux/amd64,linux/arm64 | |
push: true | |
build-args: | | |
BASE_IMAGE=${{ secrets.DOCKERHUB_USERNAME }}/raphtory_base:${{ env.RUST_VERSION }}-${{ matrix.platform }} | |
tags: | | |
${{ secrets.DOCKERHUB_USERNAME }}/raphtory:${{ env.PACKAGE_VERSION }}-rust-${{ matrix.platform }} |