mirror of
https://github.com/pypa/gh-action-pypi-publish.git
synced 2024-11-24 01:21:05 -05:00
783267be69
Up to this point, the project has been set up as a Docker action referencing the Dockerfile. The downside to using the Dockerfile for the action is that the Docker image must be built every time the action is used. This commit will set up the project to build the Docker image and push it to GitHub Container Registry (GHCR). This change will speed up user workflows every time the action is used because the workflows will simply pull the Docker image from GHCR instead of building again. Changes: - Add required metadata to Dockerfile - Build container image with GitHub Actions - Push container image to GHCR Docker actions support pulling in pre-built Docker images. The downside is that there's no way to specify the correct Docker tag because the GitHub Actions `image` and `uses:` keys don't accept any context. For example, if a user's workflow has `uses: pypa/gh-action-pypi-publish@release/v1.8`, then the action should pull in a Docker image built from the `release/v1.8` branch, something like `ghcr.io/pypa/gh-action-pypi-publish:release-v1.8` (Docker tags can't have `/`). The workaround is to switch the top-level `action.yml` to a composite action that then calls the Docker action, substituting the correct image name and tag.
29 lines
757 B
YAML
29 lines
757 B
YAML
---
|
|
|
|
name: 🏗️
|
|
|
|
on: # yamllint disable-line rule:truthy
|
|
pull_request:
|
|
push:
|
|
branches: ["release/*", "unstable/*"]
|
|
tags: ["*"]
|
|
|
|
jobs:
|
|
build-and-push:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Build Docker image
|
|
run: |
|
|
IMAGE="ghcr.io/$GITHUB_REPOSITORY:${GITHUB_REF_NAME/'/'/'-'}"
|
|
echo "IMAGE=$IMAGE" >>"$GITHUB_ENV"
|
|
docker build . \
|
|
--build-arg BUILDKIT_INLINE_CACHE=1 \
|
|
--cache-from $IMAGE \
|
|
--tag $IMAGE
|
|
- name: Push Docker image to GHCR
|
|
if: github.event_name != 'pull_request'
|
|
run: |
|
|
echo ${{ secrets.GITHUB_TOKEN }} |
|
|
docker login ghcr.io -u $GITHUB_ACTOR --password-stdin
|
|
docker push $IMAGE
|