Skip to content

Commit 0acb414

Browse files
committed
321
1 parent d5cd731 commit 0acb414

File tree

1 file changed

+140
-140
lines changed

1 file changed

+140
-140
lines changed

.github/workflows/build-and-release-services-images.yml

Lines changed: 140 additions & 140 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,7 @@ jobs:
8181
done <<< "${{ steps.meta.outputs.tags }}"
8282
8383
# Build and push the Docker image with all tags
84-
# docker buildx build --platform linux/arm64\
85-
# docker buildx build --platform linux/amd64,linux/arm64\
86-
docker buildx build --platform linux/amd64\
84+
docker buildx build --platform linux/amd64,linux/arm64\
8785
--file "$dockerfile" \
8886
"${tag_args[@]}" \
8987
--push \
@@ -93,142 +91,144 @@ jobs:
9391
echo "No valid Dockerfile found in $dir"
9492
fi
9593
done
96-
# - name: Verify multi-platform support
97-
# run: |
98-
# MAX_RETRIES=2
99-
# RETRY_DELAY=6
100-
# for dir in build/images/*/; do
101-
# IMAGE_NAME=$(basename "$dir" | tr '[:upper:]' '[:lower:]')
102-
# for tag in $(echo "${{ steps.meta.outputs.tags }}" | tr ',' '\n'); do
103-
# manifest=$(docker manifest inspect "${{ secrets.DOCKER_USERNAME }}/$IMAGE_NAME:$tag" || echo "error")
104-
# if [[ "$manifest" == "error" ]]; then
105-
# echo "Manifest not found for $IMAGE_NAME:$tag"
106-
# exit 1
107-
# fi
108-
# amd64_found=$(echo "$manifest" | jq '.manifests[] | select(.platform.architecture == "amd64")')
109-
# echo "amd64_found is: $amd64_found"
110-
# if [[ -z "$amd64_found" ]]; then
111-
# echo "Multi-platform support check failed for $IMAGE_NAME:$tag - missing amd64"
112-
# # exit 1
113-
# fi
114-
# # else
115-
# echo "Multi-platform support for $IMAGE_NAME:$tag - have amd64"
116-
# done
117-
# done
118-
119-
build-and-arm:
120-
runs-on: ubuntu-latest
121-
122-
steps:
123-
- name: Checkout repository
124-
uses: actions/checkout@v4
125-
126-
- name: Set up Docker Buildx
127-
uses: docker/setup-buildx-action@v2
128-
129-
- name: set up qemu
130-
uses: docker/setup-qemu-action@v3.3.0
131-
with:
132-
platforms: linux/arm64
133-
134-
- name: Log in to Docker Hub
135-
uses: docker/login-action@v2
136-
with:
137-
username: ${{ secrets.DOCKER_USERNAME }}
138-
password: ${{ secrets.DOCKER_PASSWORD }}
139-
140-
- name: Log in to GitHub Container Registry
141-
uses: docker/login-action@v2
142-
with:
143-
registry: ghcr.io
144-
username: ${{ github.repository_owner }}
145-
password: ${{ secrets.GITHUB_TOKEN }}
146-
147-
- name: Log in to Aliyun Container Registry
148-
uses: docker/login-action@v2
149-
with:
150-
registry: registry.cn-hangzhou.aliyuncs.com
151-
username: ${{ secrets.ALIREGISTRY_USERNAME }}
152-
password: ${{ secrets.ALIREGISTRY_TOKEN }}
153-
154-
- name: Extract metadata for Docker (tags, labels)
155-
id: meta
156-
uses: docker/metadata-action@v5
157-
with:
158-
tags: |
159-
type=ref,event=tag
160-
type=schedule
161-
type=ref,event=branch
162-
type=semver,pattern={{version}}
163-
type=semver,pattern=v{{version}}
164-
type=semver,pattern=release-{{raw}}
165-
type=sha
166-
type=raw,value=${{ github.event.inputs.tag }}
167-
168-
- name: Build and push Docker images
94+
- name: Verify multi-platform support
16995
run: |
170-
IMG_DIR="build/images"
171-
for dir in "$IMG_DIR"/*/; do
172-
# Find Dockerfile or *.dockerfile in a case-insensitive manner
173-
dockerfile=$(find "$dir" -maxdepth 1 -type f \( -iname 'dockerfile' -o -iname '*.dockerfile' \) | head -n 1)
174-
175-
if [ -n "$dockerfile" ] && [ -f "$dockerfile" ]; then
176-
IMAGE_NAME=$(basename "$dir")
177-
echo "Building Docker image for $IMAGE_NAME with tags:"
178-
179-
# Initialize tag arguments
180-
tag_args=()
181-
182-
# Read each tag and append --tag arguments
183-
while IFS= read -r tag; do
184-
tag_args+=(--tag "${{ secrets.DOCKER_USERNAME }}/$IMAGE_NAME:$tag")
185-
# tag_args+=(--tag "ghcr.io/${{ github.repository_owner }}/$IMAGE_NAME:$tag")
186-
# tag_args+=(--tag "registry.cn-hangzhou.aliyuncs.com/openimsdk/$IMAGE_NAME:$tag")
187-
done <<< "${{ steps.meta.outputs.tags }}"
188-
189-
# Build and push the Docker image with all tags
190-
docker buildx build --platform linux/arm64 \
191-
--file "$dockerfile" \
192-
"${tag_args[@]}" \
193-
--push \
194-
"."
195-
196-
else
197-
echo "No valid Dockerfile found in $dir"
198-
fi
96+
MAX_RETRIES=2
97+
RETRY_DELAY=6
98+
for dir in build/images/*/; do
99+
IMAGE_NAME=$(basename "$dir" | tr '[:upper:]' '[:lower:]')
100+
for tag in $(echo "${{ steps.meta.outputs.tags }}" | tr ',' '\n'); do
101+
manifest=$(docker manifest inspect "${{ secrets.DOCKER_USERNAME }}/$IMAGE_NAME:$tag" || echo "error")
102+
if [[ "$manifest" == "error" ]]; then
103+
echo "Manifest not found for $IMAGE_NAME:$tag"
104+
exit 1
105+
fi
106+
amd64_found=$(echo "$manifest" | jq '.manifests[] | select(.platform.architecture == "amd64")')
107+
arm64_found=$(echo "$manifest" | jq '.manifests[] | select(.platform.architecture == "arm64")')
108+
echo "amd64_found is: $amd64_found"
109+
echo "arm64_found is: $arm64_found"
110+
if [[ -z "$amd64_found" ]]; then
111+
echo "Multi-platform support check failed for $IMAGE_NAME:$tag - missing amd64"
112+
# exit 1
113+
fi
114+
# else
115+
echo "Multi-platform support for $IMAGE_NAME:$tag - have amd64"
116+
done
199117
done
200-
# - name: Verify multi-platform support
201-
# run: |
202-
# MAX_RETRIES=6
203-
# RETRY_DELAY=10
204-
# for ((i=1; i<=MAX_RETRIES; i++)); do
205-
# manifest=$(docker manifest inspect "${{ secrets.DOCKER_USERNAME }}/$IMAGE_NAME:$tag" || echo "error")
206-
# if [[ "$manifest" != "error" ]]; then
207-
# break
208-
# fi
209-
# if [[ $i -eq $MAX_RETRIES ]]; then
210-
# echo "Manifest not found for $IMAGE_NAME:$tag after $MAX_RETRIES retries"
211-
# exit 1
212-
# fi
213-
# echo "Retry $i/$MAX_RETRIES: Manifest not found for $IMAGE_NAME:$tag, retrying in $RETRY_DELAY seconds..."
214-
# sleep $RETRY_DELAY
215-
# done
216-
217-
# for dir in build/images/*/; do
218-
# IMAGE_NAME=$(basename "$dir" | tr '[:upper:]' '[:lower:]')
219-
# for tag in $(echo "${{ steps.meta.outputs.tags }}" | tr ',' '\n'); do
220-
# manifest=$(docker manifest inspect "${{ secrets.DOCKER_USERNAME }}/$IMAGE_NAME:$tag" || echo "error")
221-
# if [[ "$manifest" == "error" ]]; then
222-
# echo "Manifest not found for $IMAGE_NAME:$tag"
223-
# exit 1
224-
# fi
225-
# arm64_found=$(echo "$manifest" | jq '.manifests[] | select(.platform.architecture == "arm64")')
226-
# echo "arm64_found is: $arm64_found"
227-
# if [[ -z "$arm64_found" ]]; then
228-
# echo "Multi-platform support check failed for $IMAGE_NAME:$tag - missing arm64"
229-
# exit 1
230-
# fi
231-
# # else
232-
# echo "Multi-platform support for $IMAGE_NAME:$tag - have arm64"
233-
# done
234-
# done
118+
119+
# build-and-arm:
120+
# runs-on: ubuntu-latest
121+
122+
# steps:
123+
# - name: Checkout repository
124+
# uses: actions/checkout@v4
125+
126+
# - name: Set up Docker Buildx
127+
# uses: docker/setup-buildx-action@v2
128+
129+
# - name: set up qemu
130+
# uses: docker/setup-qemu-action@v3.3.0
131+
# with:
132+
# platforms: linux/arm64
133+
134+
# - name: Log in to Docker Hub
135+
# uses: docker/login-action@v2
136+
# with:
137+
# username: ${{ secrets.DOCKER_USERNAME }}
138+
# password: ${{ secrets.DOCKER_PASSWORD }}
139+
140+
# - name: Log in to GitHub Container Registry
141+
# uses: docker/login-action@v2
142+
# with:
143+
# registry: ghcr.io
144+
# username: ${{ github.repository_owner }}
145+
# password: ${{ secrets.GITHUB_TOKEN }}
146+
147+
# - name: Log in to Aliyun Container Registry
148+
# uses: docker/login-action@v2
149+
# with:
150+
# registry: registry.cn-hangzhou.aliyuncs.com
151+
# username: ${{ secrets.ALIREGISTRY_USERNAME }}
152+
# password: ${{ secrets.ALIREGISTRY_TOKEN }}
153+
154+
# - name: Extract metadata for Docker (tags, labels)
155+
# id: meta
156+
# uses: docker/metadata-action@v5
157+
# with:
158+
# tags: |
159+
# type=ref,event=tag
160+
# type=schedule
161+
# type=ref,event=branch
162+
# type=semver,pattern={{version}}
163+
# type=semver,pattern=v{{version}}
164+
# type=semver,pattern=release-{{raw}}
165+
# type=sha
166+
# type=raw,value=${{ github.event.inputs.tag }}
167+
168+
# - name: Build and push Docker images
169+
# run: |
170+
# IMG_DIR="build/images"
171+
# for dir in "$IMG_DIR"/*/; do
172+
# # Find Dockerfile or *.dockerfile in a case-insensitive manner
173+
# dockerfile=$(find "$dir" -maxdepth 1 -type f \( -iname 'dockerfile' -o -iname '*.dockerfile' \) | head -n 1)
174+
175+
# if [ -n "$dockerfile" ] && [ -f "$dockerfile" ]; then
176+
# IMAGE_NAME=$(basename "$dir")
177+
# echo "Building Docker image for $IMAGE_NAME with tags:"
178+
179+
# # Initialize tag arguments
180+
# tag_args=()
181+
182+
# # Read each tag and append --tag arguments
183+
# while IFS= read -r tag; do
184+
# tag_args+=(--tag "${{ secrets.DOCKER_USERNAME }}/$IMAGE_NAME:$tag")
185+
# # tag_args+=(--tag "ghcr.io/${{ github.repository_owner }}/$IMAGE_NAME:$tag")
186+
# # tag_args+=(--tag "registry.cn-hangzhou.aliyuncs.com/openimsdk/$IMAGE_NAME:$tag")
187+
# done <<< "${{ steps.meta.outputs.tags }}"
188+
189+
# # Build and push the Docker image with all tags
190+
# docker buildx build --platform linux/arm64 \
191+
# --file "$dockerfile" \
192+
# "${tag_args[@]}" \
193+
# --push \
194+
# "."
195+
196+
# else
197+
# echo "No valid Dockerfile found in $dir"
198+
# fi
199+
# done
200+
# - name: Verify multi-platform support
201+
# run: |
202+
# MAX_RETRIES=6
203+
# RETRY_DELAY=10
204+
# for ((i=1; i<=MAX_RETRIES; i++)); do
205+
# manifest=$(docker manifest inspect "${{ secrets.DOCKER_USERNAME }}/$IMAGE_NAME:$tag" || echo "error")
206+
# if [[ "$manifest" != "error" ]]; then
207+
# break
208+
# fi
209+
# if [[ $i -eq $MAX_RETRIES ]]; then
210+
# echo "Manifest not found for $IMAGE_NAME:$tag after $MAX_RETRIES retries"
211+
# exit 1
212+
# fi
213+
# echo "Retry $i/$MAX_RETRIES: Manifest not found for $IMAGE_NAME:$tag, retrying in $RETRY_DELAY seconds..."
214+
# sleep $RETRY_DELAY
215+
# done
216+
217+
# for dir in build/images/*/; do
218+
# IMAGE_NAME=$(basename "$dir" | tr '[:upper:]' '[:lower:]')
219+
# for tag in $(echo "${{ steps.meta.outputs.tags }}" | tr ',' '\n'); do
220+
# manifest=$(docker manifest inspect "${{ secrets.DOCKER_USERNAME }}/$IMAGE_NAME:$tag" || echo "error")
221+
# if [[ "$manifest" == "error" ]]; then
222+
# echo "Manifest not found for $IMAGE_NAME:$tag"
223+
# exit 1
224+
# fi
225+
# arm64_found=$(echo "$manifest" | jq '.manifests[] | select(.platform.architecture == "arm64")')
226+
# echo "arm64_found is: $arm64_found"
227+
# if [[ -z "$arm64_found" ]]; then
228+
# echo "Multi-platform support check failed for $IMAGE_NAME:$tag - missing arm64"
229+
# exit 1
230+
# fi
231+
# # else
232+
# echo "Multi-platform support for $IMAGE_NAME:$tag - have arm64"
233+
# done
234+
# done

0 commit comments

Comments
 (0)