lychee/.github/workflows/docker.yml
MichaIng fb4c6d5559
Skip Docker login on PRs from forks (#586)
Since github.repository_owner refers to the base repository on pull request events, while secrets need to exist on the head repository, the Docker Hub login fails for pull requests opened from forks. This commit assures that this step in case of pull request events only runs for internal pull requests, i.e. when head and base repository are the same.

For the actual Docker Hub upload, no change is required: The build can run in every case, the upload is not done on pull request events in general.

Signed-off-by: MichaIng <micha@dietpi.com>
2022-04-06 19:35:28 +02:00

69 lines
2 KiB
YAML

name: Docker
on:
repository_dispatch:
workflow_dispatch:
workflow_run:
workflows: ["release"]
types:
- completed
push:
branches:
- "**"
tags:
- "v*.*.*"
pull_request:
branches:
- "master"
env:
IMAGE_NAME: lycheeverse/lychee
DOCKER_PLATFORMS: linux/amd64,linux/arm64/v8
DOCKERFILE: Dockerfile-CI.Dockerfile
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Docker meta
id: meta
uses: docker/metadata-action@v3
with:
# list of Docker images to use as base name for tags
images: |
${{ env.IMAGE_NAME }}
# generate Docker tags based on the following events/attributes
tags: |
type=schedule
type=ref,event=branch
type=ref,event=pr
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
type=sha
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Login to DockerHub
if: github.repository_owner == 'lycheeverse' && github.actor != 'dependabot[bot]' && ( github.event_name != 'pull_request' || github.event.pull_request.head.repo.owner.login == github.event.pull_request.base.repo.owner.login )
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Push Image
if: github.repository_owner == 'lycheeverse'
uses: docker/build-push-action@v2
with:
context: .
file: ${{ env.DOCKERFILE }}
platforms: ${{ env.DOCKER_PLATFORMS }}
push: ${{ github.event_name != 'pull_request' && github.actor != 'dependabot[bot]' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}