Skip to content

Commit

Permalink
Enabled github platform.
Browse files Browse the repository at this point in the history
  • Loading branch information
viferga committed Feb 26, 2025
1 parent 7cb91d1 commit cd13179
Showing 1 changed file with 118 additions and 118 deletions.
236 changes: 118 additions & 118 deletions .github/workflows/docker-hub-platform.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,127 +20,127 @@ env:
BUILDKIT_VERSION: 0.13.0

jobs:
# build:
# name: Build
# runs-on: ubuntu-latest
# strategy:
# fail-fast: false
# matrix:
# platform:
# - linux/amd64
# - linux/386
# - linux/arm64
# - linux/riscv64
# - linux/ppc64le
# - linux/s390x
# - linux/arm/v7
# - linux/arm/v6
# steps:
# - name: Checkout Repository
# uses: actions/checkout@v4
# with:
# fetch-depth: 0

# - name: Set up QEMU
# uses: docker/setup-qemu-action@v3

# - name: Set up Docker BuildX
# uses: docker/setup-buildx-action@v3
# with:
# version: v${{ env.BUILDKIT_VERSION }}

# - name: Login to Docker Hub
# uses: docker/login-action@v3
# with:
# username: ${{ secrets.DOCKER_HUB_USERNAME }}
# password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}

# - name: Build MetaCall Docker Images
# env:
# METACALL_PLATFORM: ${{ matrix.platform }}
# run: |
# ./docker-compose.sh platform

# - name: Tag Platform Images
# run: |
# platform_tag=$(echo "${{ matrix.platform }}" | tr '/' '-')
# echo "Platform Tag: ${platform_tag}"
# for tag in "deps" "dev" "runtime" "cli"; do
# docker tag metacall/${IMAGE_NAME}:${tag} \
# ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${tag}-${platform_tag}
# done

# - name: Push Platform Images
# run: |
# platform_tag=$(echo "${{ matrix.platform }}" | tr '/' '-')
# for tag in "deps" "dev" "runtime" "cli"; do
# echo "Pushing image for tag: ${tag} with platform: ${platform_tag}"
# docker push ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${tag}-${platform_tag}
# done

# - name: Run Tests
# run: |
# set -exuo pipefail
# platform_tag=$(echo "${{ matrix.platform }}" | tr '/' '-')
# cat <<EOF > Dockerfile.test
# FROM ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:cli-${platform_tag}
# RUN echo "console.log('abcde')" > script.js
# RUN metacallcli script.js
# EOF

# docker build --platform ${{ matrix.platform }} -f Dockerfile.test -t test-image .
# docker run --rm --platform=${{ matrix.platform }} test-image

# manifest:
# name: Create and Push Manifest Lists
# needs: build
# runs-on: ubuntu-latest
# steps:
# - name: Login to Docker Hub
# uses: docker/login-action@v3
# with:
# username: ${{ secrets.DOCKER_HUB_USERNAME }}
# password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}

# - name: Create and Push Manifest Lists
# run: |
# for tag in "deps" "dev" "runtime" "cli"; do
# echo "Creating manifest for tag: $tag"
# platform_tags=""
# for platform in "linux/amd64" "linux/386" "linux/arm64" "linux/riscv64" "linux/ppc64le" "linux/s390x" "linux/arm/v7" "linux/arm/v6"; do
# platform_tag=$(echo "${platform}" | tr '/' '-')
# platform_tags="${platform_tags} ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${tag}-${platform_tag}"
# done
# echo "Creating manifest with tags: ${platform_tags}"
# docker manifest create ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${tag} ${platform_tags} --amend
# docker manifest push ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${tag}
# done

# - name: Create Version Specific Tags
# if: startsWith(github.ref, 'refs/tags/')
# run: |
# VERSION=${GITHUB_REF#refs/tags/v}
# tags=("deps" "dev" "runtime" "cli")
# platforms=("linux/amd64" "linux/386" "linux/arm64" "linux/riscv64" "linux/ppc64le" "linux/s390x" "linux/arm/v7" "linux/arm/v6")
# for tag in "${tags[@]}"; do
# platform_tags=""
# for platform in "${platforms[@]}"; do
# platform_tags="${platform_tags} ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${tag}-${platform}"
# done
# docker manifest create ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${VERSION}-${tag} ${platform_tags} --amend
# docker manifest push ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${VERSION}-${tag}
# done

# cli_platform_tags=""
# for platform in ${{ matrix.platform }}; do
# cli_platform_tags="${cli_platform_tags} ${DOCKER_USERNAME}/${IMAGE_NAME}:cli-${platform}"
# done
# docker manifest create ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:latest ${cli_platform_tags} --amend
# docker manifest push ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:latest
build:
name: Build
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
platform:
- linux/amd64
- linux/386
- linux/arm64
- linux/riscv64
- linux/ppc64le
- linux/s390x
- linux/arm/v7
- linux/arm/v6
steps:
- name: Checkout Repository
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up QEMU
uses: docker/setup-qemu-action@v3

- name: Set up Docker BuildX
uses: docker/setup-buildx-action@v3
with:
version: v${{ env.BUILDKIT_VERSION }}

- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}

- name: Build MetaCall Docker Images
env:
METACALL_PLATFORM: ${{ matrix.platform }}
run: |
./docker-compose.sh platform
- name: Tag Platform Images
run: |
platform_tag=$(echo "${{ matrix.platform }}" | tr '/' '-')
echo "Platform Tag: ${platform_tag}"
for tag in "deps" "dev" "runtime" "cli"; do
docker tag metacall/${IMAGE_NAME}:${tag} \
${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${tag}-${platform_tag}
done
- name: Push Platform Images
run: |
platform_tag=$(echo "${{ matrix.platform }}" | tr '/' '-')
for tag in "deps" "dev" "runtime" "cli"; do
echo "Pushing image for tag: ${tag} with platform: ${platform_tag}"
docker push ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${tag}-${platform_tag}
done
- name: Run Tests
run: |
set -exuo pipefail
platform_tag=$(echo "${{ matrix.platform }}" | tr '/' '-')
cat <<EOF > Dockerfile.test
FROM ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:cli-${platform_tag}
RUN echo "console.log('abcde')" > script.js
RUN metacallcli script.js
EOF
docker build --platform ${{ matrix.platform }} -f Dockerfile.test -t test-image .
docker run --rm --platform=${{ matrix.platform }} test-image
manifest:
name: Create and Push Manifest Lists
needs: build
runs-on: ubuntu-latest
steps:
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}

- name: Create and Push Manifest Lists
run: |
for tag in "deps" "dev" "runtime" "cli"; do
echo "Creating manifest for tag: $tag"
platform_tags=""
for platform in "linux/amd64" "linux/386" "linux/arm64" "linux/riscv64" "linux/ppc64le" "linux/s390x" "linux/arm/v7" "linux/arm/v6"; do
platform_tag=$(echo "${platform}" | tr '/' '-')
platform_tags="${platform_tags} ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${tag}-${platform_tag}"
done
echo "Creating manifest with tags: ${platform_tags}"
docker manifest create ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${tag} ${platform_tags} --amend
docker manifest push ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${tag}
done
- name: Create Version Specific Tags
if: startsWith(github.ref, 'refs/tags/')
run: |
VERSION=${GITHUB_REF#refs/tags/v}
tags=("deps" "dev" "runtime" "cli")
platforms=("linux/amd64" "linux/386" "linux/arm64" "linux/riscv64" "linux/ppc64le" "linux/s390x" "linux/arm/v7" "linux/arm/v6")
for tag in "${tags[@]}"; do
platform_tags=""
for platform in "${platforms[@]}"; do
platform_tags="${platform_tags} ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${tag}-${platform}"
done
docker manifest create ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${VERSION}-${tag} ${platform_tags} --amend
docker manifest push ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${VERSION}-${tag}
done
cli_platform_tags=""
for platform in ${{ matrix.platform }}; do
cli_platform_tags="${cli_platform_tags} ${DOCKER_USERNAME}/${IMAGE_NAME}:cli-${platform}"
done
docker manifest create ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:latest ${cli_platform_tags} --amend
docker manifest push ${DOCKER_REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:latest
cleanup:
name: Cleanup Platform Specific Tags
# needs: [build, manifest]
needs: [build, manifest]
runs-on: ubuntu-latest
if: always()
steps:
Expand Down

0 comments on commit cd13179

Please sign in to comment.