name: Docker Pull and Package on: workflow_dispatch: inputs: docker_images: description: 'Comma-separated list of Docker images to pull' required: true default: 'wukongdaily/box:latest' platform: description: 'Platform architecture (e.g., amd64, arm64)' required: true default: 'amd64' jobs: pull_and_package: runs-on: ubuntu-latest steps: - name: Clean up environment run: | # Clean up Docker images docker image prune -af # Clean up temporary tar files rm -f *.tar # Clean up other temporary files if necessary # rm -rf - name: Checkout repository uses: actions/checkout@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 - name: Pull, Save, and Compress Docker Images run: | images="${{ github.event.inputs.docker_images }}" platform="${{ github.event.inputs.platform }}" IFS=',' read -r -a image_array <<< "$images" for image in "${image_array[@]}"; do echo "Pulling $image for platform $platform" docker pull --platform "$platform" "$image" image_name="${image//\//_}_${platform}" docker save "$image" -o "${image_name}.tar" tar -czf "${image_name}.tar.gz" "${image_name}.tar" rm -f "${image_name}.tar" # Save image path to environment file echo "${image}_IMAGE_PATH=${{ runner.temp }}/${image_name}.tar.gz" >> $GITHUB_ENV done - name: Clean up intermediate files run: | rm -f *.tar - name: Upload artifacts uses: actions/upload-artifact@v2 with: name: docker-images-tar path: '*.tar.gz'