Skip to content

Commit c3b8670

Browse files
Merge pull request #722 from madeofpendletonwool/backend-arm
Added backend workflow
2 parents 2c49ffc + 60f2679 commit c3b8670

File tree

1 file changed

+87
-0
lines changed

1 file changed

+87
-0
lines changed
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
name: Publish Backend Multi-Architecture Image to DockerHub
2+
on:
3+
push:
4+
branches:
5+
- main
6+
paths:
7+
- 'Backend/**'
8+
workflow_dispatch:
9+
env:
10+
REGISTRY: docker.io
11+
IMAGE_NAME: madeofpendletonwool/pinepods_backend
12+
jobs:
13+
build-and-push-x86:
14+
runs-on: ubuntu-latest
15+
permissions:
16+
contents: read
17+
packages: write
18+
id-token: write
19+
steps:
20+
- name: Checkout code
21+
uses: actions/checkout@v4
22+
- name: Set up Docker Buildx
23+
uses: docker/setup-buildx-action@v2
24+
- name: Log in to Docker Hub
25+
uses: docker/login-action@v2
26+
with:
27+
username: ${{ secrets.DOCKER_USERNAME }}
28+
password: ${{ secrets.DOCKER_KEY }}
29+
- name: Build and push x86 image
30+
run: |
31+
cd Backend
32+
docker build --platform linux/amd64 -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest-amd64 -f dockerfile .
33+
docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest-amd64
34+
35+
build-and-push-arm64:
36+
runs-on: ubuntu-24.04-arm
37+
permissions:
38+
contents: read
39+
packages: write
40+
id-token: write
41+
steps:
42+
- name: Checkout code
43+
uses: actions/checkout@v4
44+
- name: Set up Docker Buildx
45+
uses: docker/setup-buildx-action@v2
46+
- name: Log in to Docker Hub
47+
uses: docker/login-action@v2
48+
with:
49+
username: ${{ secrets.DOCKER_USERNAME }}
50+
password: ${{ secrets.DOCKER_KEY }}
51+
- name: Build and push ARM64 image
52+
run: |
53+
cd Backend
54+
docker build --platform linux/arm64 -t ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest-arm64 -f dockerfile .
55+
docker push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest-arm64
56+
57+
create-manifests:
58+
needs: [build-and-push-x86, build-and-push-arm64]
59+
runs-on: ubuntu-latest
60+
permissions:
61+
contents: read
62+
packages: write
63+
id-token: write
64+
steps:
65+
- name: Checkout code
66+
uses: actions/checkout@v4
67+
- name: Set up Docker Buildx
68+
uses: docker/setup-buildx-action@v2
69+
- name: Log in to Docker Hub
70+
uses: docker/login-action@v2
71+
with:
72+
username: ${{ secrets.DOCKER_USERNAME }}
73+
password: ${{ secrets.DOCKER_KEY }}
74+
75+
- name: Create and push Docker manifest for the latest tag
76+
run: |
77+
sleep 10
78+
# Pull the images first to ensure they're available
79+
docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest-amd64
80+
docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest-arm64
81+
82+
# Create and push manifest
83+
docker manifest create ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest \
84+
--amend ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest-amd64 \
85+
--amend ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest-arm64
86+
87+
docker manifest push ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest

0 commit comments

Comments
 (0)