|
12 | 12 |
|
13 | 13 | env: |
14 | 14 | IMAGE_NAME: shawn636/mini-ftp |
15 | | - MINORS_TO_KEEP: 3 |
16 | 15 |
|
17 | 16 | jobs: |
18 | 17 | build-and-release: |
@@ -56,38 +55,35 @@ jobs: |
56 | 55 | uses: docker/setup-buildx-action@v2 |
57 | 56 | with: |
58 | 57 | driver: docker-container |
59 | | - buildkitd-flags: --allow-insecure-entitlement security.insecure |
60 | | - |
61 | | - - name: Cache Docker Buildx |
62 | | - uses: actions/cache@v3 |
63 | | - with: |
64 | | - path: /tmp/.buildx-cache |
65 | | - key: docker-buildx-cache-${{ runner.os }}-${{ github.sha }} |
66 | | - restore-keys: | |
67 | | - docker-buildx-cache-${{ runner.os }}- |
68 | 58 |
|
69 | 59 | - name: Log in to Docker Hub |
70 | 60 | uses: docker/login-action@v2 |
71 | 61 | with: |
72 | 62 | username: ${{ secrets.DOCKER_HUB_USERNAME }} |
73 | 63 | password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }} |
74 | 64 |
|
75 | | - - name: Build and Push Docker Image |
| 65 | + - name: Build and Push Images |
76 | 66 | run: | |
77 | 67 | VERSION=$(cat VERSION) |
78 | | - echo "Building image with version: $VERSION" |
| 68 | + ALPINE_LATEST="latest" |
| 69 | + ALPINE_VERSIONS=("3.21" "3.20" "3.19") |
| 70 | +
|
| 71 | + echo "Building and pushing images for version: $VERSION" |
| 72 | +
|
| 73 | + # Build and push the default version (alpine:latest) |
79 | 74 | docker buildx build --push \ |
80 | | - --platform linux/amd64,linux/arm64 \ |
81 | | - --tag ${{ env.IMAGE_NAME }}:$VERSION \ |
82 | | - --cache-to type=inline \ |
83 | | - --cache-from type=registry,ref=${{ env.IMAGE_NAME }}:build-cache \ |
84 | | - . |
| 75 | + --platform linux/amd64,linux/arm64 \ |
| 76 | + --tag ${{ env.IMAGE_NAME }}:$VERSION \ |
| 77 | + --tag ${{ env.IMAGE_NAME }}:$VERSION-alpine-$ALPINE_LATEST \ |
| 78 | + --build-arg ALPINE_VERSION=$ALPINE_LATEST . |
85 | 79 |
|
86 | | - - name: Cleanup Old Docker Images |
87 | | - run: | |
88 | | - old_versions=$(docker images ${{ env.IMAGE_NAME }} --format '{{.Tag}}' | sort -r | tail -n +${{ env.MINORS_TO_KEEP }}) |
89 | | - for version in $old_versions; do |
90 | | - docker rmi ${{ env.IMAGE_NAME }}:$version || true |
| 80 | + # Build and push for each specific Alpine version |
| 81 | + for version in "${ALPINE_VERSIONS[@]}"; do |
| 82 | + TAG_SUFFIX="alpine-$version" |
| 83 | + docker buildx build --push \ |
| 84 | + --platform linux/amd64,linux/arm64 \ |
| 85 | + --tag ${{ env.IMAGE_NAME }}:$VERSION-$TAG_SUFFIX \ |
| 86 | + --build-arg ALPINE_VERSION=$version . |
91 | 87 | done |
92 | 88 |
|
93 | 89 | - name: Finalize Release |
|
0 commit comments