mirror of
https://github.com/NewFuture/DDNS.git
synced 2022-04-19 20:24:44 +00:00
ci: Add GitHub Actions for Docker buildx
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
name: ci
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
tags:
|
||||
- v*
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
docker-buildx:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
- name: Set up Docker buildx
|
||||
uses: crazy-max/ghaction-docker-buildx@v3
|
||||
- name: Prepare arguments
|
||||
id: prepare
|
||||
env:
|
||||
DOCKER_REPO: newfuture/ddns
|
||||
DOCKER_PLATFORMS: linux/amd64,linux/arm,linux/arm64
|
||||
run: |
|
||||
DOCKER_PUSH=false
|
||||
DOCKER_TAGS="--tag ${DOCKER_REPO}:latest"
|
||||
if [[ $GITHUB_REF == refs/tags/v* ]]; then
|
||||
DOCKER_PUSH=true
|
||||
DOCKER_TAGS="${DOCKER_TAGS} --tag ${DOCKER_REPO}:${GITHUB_REF#refs/tags/v}"
|
||||
fi
|
||||
echo ::set-output name=buildx_push::${DOCKER_PUSH}
|
||||
echo ::set-output name=buildx_args::--platform ${DOCKER_PLATFORMS} ${DOCKER_TAGS} .
|
||||
- name: Run buildx
|
||||
run: |
|
||||
docker buildx build \
|
||||
--output "type=image,push=false" \
|
||||
${{ steps.prepare.outputs.buildx_args }}
|
||||
- name: Docker Hub login
|
||||
if: success() && steps.prepare.outputs.buildx_push == 'true'
|
||||
env:
|
||||
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
|
||||
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
|
||||
run: |
|
||||
echo "${DOCKER_PASSWORD}" | docker login \
|
||||
--username "${DOCKER_USERNAME}" \
|
||||
--password-stdin
|
||||
- name: Run buildx and push
|
||||
if: success() && steps.prepare.outputs.buildx_push == 'true'
|
||||
run: |
|
||||
docker buildx build \
|
||||
--output "type=image,push=true" \
|
||||
${{ steps.prepare.outputs.buildx_args }}
|
||||
- name: Docker Hub logout
|
||||
if: always() && steps.prepare.outputs.buildx_push == 'true'
|
||||
run: docker logout
|
||||
Reference in New Issue
Block a user