A GitHub Action for extracting files from a Docker Image.
- uses: shrink/actions-docker-extract@v3
with:
image: "ghost:alpine"
path: "/var/lib/ghost/current/core/built/assets/."
ID | Description | Required | Examples |
---|---|---|---|
image |
Docker Image to extract files from | ✅ | alpine ghcr.io/github/super-linter:latest |
path |
Path (from root) to a file or directory within Image | ✅ | files/example.txt files files/. |
destination |
Destination path for the extracted files | ❌ | /foo/ ~/ ./foo/bar |
📎 To copy the contents of a directory the
path
must end with/.
otherwise the directory itself will be copied. More information about the specific rules can be found via the docker cp documentation.
ID | Description | Example |
---|---|---|
destination |
Destination path containing the extracted file(s) | extracted-1598717412/ |
Using docker/build-push-action to build a Docker
Image and then extract the contents of the /app
directory within the newly
built image to upload as a dist
artifact.
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build Docker Image
uses: docker/build-push-action@v5
with:
tags: my-example-image:latest
load: true
- uses: shrink/actions-docker-extract@v3
id: extract
with:
image: my-example-image:latest
path: /app/.
destination: dist
- name: Upload Dist
uses: actions/upload-artifact@v3
with:
path: dist
Using docker/login-action to authenticate with the GitHub Container Registry to extract from a published Docker Image.
jobs:
extract:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: "ghcr.io"
username: "${{ github.actor }}"
password: "${{ secrets.GITHUB_TOKEN }}"
- uses: shrink/actions-docker-extract@v3
id: extract
with:
image: ghcr.io/${{ github.repository }}:latest
path: /app/.
destination: dist
- name: Upload Dist
uses: actions/upload-artifact@v3
with:
path: dist
A Workflow packages the Action automatically when a collaborator created a new tag. Any reference to this Action in a Workflow must use a tag (mutable) or the commit hash of a tag (immutable).
✅ uses: shrink/actions-docker-extract@v3
✅ uses: shrink/actions-docker-extract@v3.0.0
✅ uses: shrink/actions-docker-extract@40400b42f4f8b663c647f535e2c6674658e39fc6
❌ uses: shrink/actions-docker-extract@main
The blog post Package GitHub Actions automatically with GitHub Actions describes how this is achieved.