Get-AMD64-Docker-Images-Release #37
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Get-AMD64-Docker-Images-Release | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| docker_images: | |
| description: '请填写docker镜像名称,多个用英文逗号分开' | |
| required: true | |
| default: 'ghcr.io/catthehacker/ubuntu:full-22.04' | |
| jobs: | |
| pull_and_package: | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - name: Maximize build space & set TMPDIR | |
| run: | | |
| echo "=== Before cleanup ===" | |
| df -h | |
| # 删除大文件和无用目录 | |
| docker rmi $(docker images -q) || true | |
| sudo rm -rf /usr/share/dotnet /opt/ghc /usr/local/lib/android /usr/local/share/boost \ | |
| /opt/hostedtoolcache /usr/local/share/az* /usr/local/lib/node_modules || true | |
| sudo apt-get purge -y azure-cli* docker* ghc* zulu* llvm* firefox google* dotnet* \ | |
| powershell* openjdk* mysql* php* mongodb* snap* | |
| sudo apt-get autoremove -y --purge | |
| sudo apt-get clean | |
| # 把 /tmp 挪到空间更大的工作目录 | |
| export TMPDIR="$GITHUB_WORKSPACE/tmp" | |
| mkdir -p "$TMPDIR" | |
| echo "TMPDIR=$TMPDIR" >> $GITHUB_ENV | |
| echo "=== After cleanup ===" | |
| df -h | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Pull Docker Images and Package | |
| run: | | |
| images="${{ github.event.inputs.docker_images }}" | |
| IFS=',' read -r -a image_array <<< "$images" | |
| for image in "${image_array[@]}"; do | |
| docker pull "${image}" --platform "linux/amd64" | |
| image_name="${image//\//_}" | |
| image_name="${image_name//:/_}" | |
| docker save "${image}" -o "${image_name}-amd64.tar" | |
| gzip -c "${image_name}-amd64.tar" > "${image_name}-amd64.tar.gz" | |
| rm "${image_name}-amd64.tar" | |
| # 分割文件:每个分割块大小 1G,生成 image_name-amd64.tar.gz.partaa, partab ... 文件 | |
| split -b 1024m "${image_name}-amd64.tar.gz" "${image_name}-amd64.tar.gz.part" | |
| rm "${image_name}-amd64.tar.gz" | |
| done | |
| - name: List generated split files (debug step) | |
| run: | | |
| echo "Prepared docker images split parts:" | |
| find $GITHUB_WORKSPACE -name "*.part*" | |
| release_name=$(TZ="Asia/Shanghai" date +'%Y-%m-%d %H:%M Build') | |
| echo "RELEASE_NAME=$release_name" >> $GITHUB_ENV | |
| - name: Create GitHub Release | |
| uses: softprops/action-gh-release@master | |
| with: | |
| tag_name: DockerTarBuilder-AMD64 | |
| name: ${{ env.RELEASE_NAME }} for x86-64 | |
| body: | | |
| [](https://www.bilibili.com/video/BV1EZ421M7mL) [](https://wkdaily.cpolar.top/archives/1) | |
| ### 使用说明: | |
| 分割文件下载后,执行: | |
| ``` | |
| cat alpine_latest-amd64.tar.gz.part* > alpine_latest-amd64.tar.gz | |
| docker load -i alpine_latest-amd64.tar.gz | |
| ``` | |
| ### 视频教学 | |
| [](https://www.bilibili.com/video/BV1yyq6YREdF) | |
| draft: false | |
| prerelease: false | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Upload Docker images split parts as release assets | |
| uses: softprops/action-gh-release@v2.1.0 | |
| with: | |
| tag_name: DockerTarBuilder-AMD64 | |
| files: ${{ github.workspace }}/*.part* | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |