diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..0895ba5 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,62 @@ +name: Docker Pull and Package + +on: + workflow_dispatch: + inputs: + docker_images: + description: 'Comma-separated list of Docker images to pull' + required: true + default: 'alpine:latest,ubuntu: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'