From 31a32a65d64e01829e698a48cc86cf6879a26cdd Mon Sep 17 00:00:00 2001 From: NN708 Date: Wed, 29 Jul 2020 14:53:53 +0800 Subject: [PATCH] ci: Add GitHub Actions for Docker buildx --- .github/workflows/ci.yml | 57 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..e8c3008 --- /dev/null +++ b/.github/workflows/ci.yml @@ -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 \ No newline at end of file