aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/container_release2.yml
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2025-11-27 14:50:45 -0800
committerChris Lu <chris.lu@gmail.com>2025-11-27 14:50:45 -0800
commit3c1914532fb53585bec88176dbebfce501f76e30 (patch)
treeacc493b17f67804bc15ab1b3b4fb834f12e17788 /.github/workflows/container_release2.yml
parent75d593d7fa82c0146dea5150531c4b640dcba029 (diff)
downloadseaweedfs-3c1914532fb53585bec88176dbebfce501f76e30.tar.xz
seaweedfs-3c1914532fb53585bec88176dbebfce501f76e30.zip
re-organize github actions
Diffstat (limited to '.github/workflows/container_release2.yml')
-rw-r--r--.github/workflows/container_release2.yml125
1 files changed, 90 insertions, 35 deletions
diff --git a/.github/workflows/container_release2.yml b/.github/workflows/container_release2.yml
index 13926a9ca..902d8592f 100644
--- a/.github/workflows/container_release2.yml
+++ b/.github/workflows/container_release2.yml
@@ -10,50 +10,105 @@ permissions:
contents: read
jobs:
-
- build-large-release-container:
- runs-on: [ubuntu-latest]
-
+ build:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ platform: [amd64, arm64, arm, 386]
+ include:
+ - platform: amd64
+ qemu: false
+ - platform: arm64
+ qemu: true
+ - platform: arm
+ qemu: true
+ - platform: 386
+ qemu: true
steps:
- -
- name: Checkout
- uses: actions/checkout@1af3b93b6815bc44a9784bd300feb67ff0d1eeb3 # v2
- -
- name: Docker meta
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Free Disk Space
+ run: |
+ echo "Available disk space before cleanup:"
+ df -h
+ # Remove pre-installed tools
+ sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc /opt/hostedtoolcache/CodeQL
+ # Clean package managers
+ sudo apt-get clean
+ sudo rm -rf /var/lib/apt/lists/*
+ # Clean Docker aggressively
+ sudo docker system prune -af --volumes
+ # Clean Go cache if it exists
+ [ -d ~/.cache/go-build ] && rm -rf ~/.cache/go-build || true
+ [ -d /go/pkg ] && rm -rf /go/pkg || true
+ echo "Available disk space after cleanup:"
+ df -h
+ - name: Docker meta
id: docker_meta
- uses: docker/metadata-action@318604b99e75e41977312d83839a89be02ca4893 # v3
+ uses: docker/metadata-action@v5
with:
- images: |
- chrislusf/seaweedfs
- tags: |
- type=ref,event=tag,suffix=_large_disk
- flavor: |
- latest=false
- labels: |
- org.opencontainers.image.title=seaweedfs
- org.opencontainers.image.description=SeaweedFS is a distributed storage system for blobs, objects, files, and data lake, to store and serve billions of files fast!
- org.opencontainers.image.vendor=Chris Lu
- -
- name: Set up QEMU
- uses: docker/setup-qemu-action@c7c53464625b32c7a7e944ae62b3e17d2b600130 # v1
- -
- name: Set up Docker Buildx
- uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v1
- -
- name: Login to Docker Hub
+ images: chrislusf/seaweedfs
+ tags: type=ref,event=tag,suffix=_large_disk
+ flavor: latest=false
+ - name: Set up QEMU
+ if: matrix.qemu
+ uses: docker/setup-qemu-action@v3
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v3
+ - name: Login to Docker Hub
if: github.event_name != 'pull_request'
- uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v1
+ uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- -
- name: Build
- uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83 # v2
+ - name: Build ${{ matrix.platform }}
+ uses: docker/build-push-action@v5
+ env:
+ DOCKER_BUILDKIT: 1
with:
context: ./docker
push: ${{ github.event_name != 'pull_request' }}
file: ./docker/Dockerfile.go_build
- build-args: TAGS=5BytesOffset
- platforms: linux/amd64, linux/arm, linux/arm64, linux/386
- tags: ${{ steps.docker_meta.outputs.tags }}
+ build-args: |
+ TAGS=5BytesOffset
+ BUILDKIT_INLINE_CACHE=1
+ BRANCH=${{ github.sha }}
+ platforms: linux/${{ matrix.platform }}
+ tags: ${{ steps.docker_meta.outputs.tags }}-${{ matrix.platform }}
labels: ${{ steps.docker_meta.outputs.labels }}
+ cache-from: type=gha
+ cache-to: type=gha,mode=max
+ - name: Clean up build artifacts
+ if: always()
+ run: |
+ # Clean up Docker build cache and temporary files
+ sudo docker system prune -f
+ # Remove Go build cache
+ sudo rm -rf /tmp/go-build*
+
+ create-manifest:
+ runs-on: ubuntu-latest
+ needs: [build]
+ if: github.event_name != 'pull_request'
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Docker meta
+ id: docker_meta
+ uses: docker/metadata-action@v5
+ with:
+ images: chrislusf/seaweedfs
+ tags: type=ref,event=tag,suffix=_large_disk
+ flavor: latest=false
+ - name: Login to Docker Hub
+ uses: docker/login-action@v3
+ with:
+ username: ${{ secrets.DOCKER_USERNAME }}
+ password: ${{ secrets.DOCKER_PASSWORD }}
+ - name: Create and push manifest
+ run: |
+ docker buildx imagetools create -t ${{ steps.docker_meta.outputs.tags }} \
+ ${{ steps.docker_meta.outputs.tags }}-amd64 \
+ ${{ steps.docker_meta.outputs.tags }}-arm64 \
+ ${{ steps.docker_meta.outputs.tags }}-arm \
+ ${{ steps.docker_meta.outputs.tags }}-386