github docker脚本 附带释放磁盘空间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

name: DockerHub CI

on:
release:
types: [published]
env:
DOCKERHUB_REPO: ${{ secrets.DOCKERHUB_USERNAME }}/ktransformers
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Move Docker data directory
run: |
sudo systemctl stop docker
sudo mkdir -p /mnt/docker
sudo rsync -avz /var/lib/docker/ /mnt/docker
sudo rm -rf /var/lib/docker
sudo ln -s /mnt/docker /var/lib/docker
sudo systemctl start docker

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

-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

-
name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and push
uses: docker/build-push-action@v6
with:
push: true
platforms: |
linux/amd64
linux/arm64
tags: |
${{ env.DOCKERHUB_REPO }}:latest
${{ env.DOCKERHUB_REPO }}:${{ github.event.release.tag_name }}

空间不够


name: DockerHub CI2

on:
  release:
    types: [published]
  workflow_dispatch:
    inputs:
      tag:
        description: '可选: 发布标签 (默认为当前日期)'
        required: false
env:
  DOCKERHUB_REPO: chatteohr/ktransformers
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Before freeing up disk space
        run: |
          echo "Before freeing up disk space"
          echo "=============================================================================="
          df -hT
          echo "=============================================================================="
      - name: "Optimize Disk Space"
        uses: "hugoalh/disk-space-optimizer-ghaction@v0.8.1"
        with:
          operate_sudo: "True"
          general_include: ".+"
          general_exclude: |-
            ^GCC$
            ^G\+\+$
            Clang
            LLVM
          docker_include: ".+"
          docker_prune: "True"
          docker_clean: "True"
          apt_prune: "True"
          apt_clean: "True"
          homebrew_prune: "True"
          homebrew_clean: "True"
          npm_prune: "True"
          npm_clean: "True"
          os_swap: "True"

      - name: Freeing up disk space
        uses: easimon/maximize-build-space@master
        with:
          root-reserve-mb: 2048
          swap-size-mb: 1
          remove-dotnet: 'true'
          remove-android: 'true'
          remove-haskell: 'true'
          remove-codeql: 'true'
          remove-docker-images: 'false'
      - name: Move Docker data directory
        run: |
          # 停止 Docker 服务
          sudo systemctl stop docker

          # 创建新的目录并将已有数据同步到新位置(为了安全,先同步现有数据)
          sudo mkdir -p $GITHUB_WORKSPACE/docker
          sudo rsync -avz /var/lib/docker/ $GITHUB_WORKSPACE/docker

          # 备份原目录并做软连接
          sudo rm -rf /var/lib/docker 
          sudo ln -s $GITHUB_WORKSPACE/docker /var/lib/docker

          # 重启 Docker
          sudo systemctl start docker

      - name: Check disk usage after
        run: df -h
      -
        name: Set up QEMU
        uses: docker/setup-qemu-action@v3

      -
        name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v3

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

      -
        name: Set tags
        id: set_tags
        run: |
          if [ -z "${{ github.event.inputs.tag }}" ]; then
          echo "tags=${{ env.DOCKERHUB_REPO }}:latest" >> $GITHUB_OUTPUT
          else
          # 使用 here-doc 方式输出多行内容到输出变量
          echo "tags<<EOF" >> $GITHUB_OUTPUT
          echo "${{ env.DOCKERHUB_REPO }}:latest" >> $GITHUB_OUTPUT
          echo "${{ env.DOCKERHUB_REPO }}:${{ github.event.inputs.tag }}" >> $GITHUB_OUTPUT
          echo "EOF" >> $GITHUB_OUTPUT
          fi
      -
        name: Build and push
        uses: docker/build-push-action@v6
        with:
          push: true
          platforms: |
            linux/amd64
#            linux/arm64
#            linux/arm/v7
          tags: |
            ${{ steps.set_tags.outputs.tags }}

      - name: Free up disk space complete
        run: |
          echo "Free up disk space complete"
          echo "=============================================================================="
          df -hT
          echo "=============================================================================="

可以使用这个脚本来释放磁盘空间,这个脚本会释放一些磁盘空间,可以选择挂载位置。

评论

:D 一言句子获取中...

加载中,最新评论有1分钟缓存...