From 1f29446c5f31ce708861e3756c6d48b6688fd623 Mon Sep 17 00:00:00 2001 From: kallydev Date: Thu, 23 Jul 2020 21:31:47 +0800 Subject: [PATCH 1/3] Add docker.yaml to actions --- .github/workflows/docker.yaml | 48 +++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 .github/workflows/docker.yaml diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml new file mode 100644 index 00000000..06ae22f1 --- /dev/null +++ b/.github/workflows/docker.yaml @@ -0,0 +1,48 @@ +name: Release Docker image + +on: + push: + tags: + - v* + +jobs: + release: + runs-on: ubuntu-latest + steps: + - name: Set up Checkout + uses: actions/checkout@v2 + + - name: Set up Docker Buildx + uses: crazy-max/ghaction-docker-buildx@v3 + + - name: Log in to DockerHub + env: + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + run: | + echo "${DOCKER_PASSWORD}" | docker login --username ${DOCKER_USERNAME} --password-stdin + + - name: Get release version + id: get_relesase_version + run: echo ::set-output name=version::${GITHUB_REF#refs/*/} + + - name: Build and puch Docker image (version) + env: + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + RELEASE_VERSION: ${{ steps.get_relesase_version.outputs.version }} + run: | + docker buildx build \ + --platform linux/386,linux/amd64,linux/arm/v7,linux/arm64 \ + --output "type=image,push=true" \ + --tag $(echo "${DOCKER_USERNAME}" | tr '[:upper:]' '[:lower:]')/v2fly-core:"$RELEASE_VERSION" \ + --file ./Dockerfile . + + - name: Build and push Docker image (latest) + env: + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + run: | + docker buildx build \ + --platform linux/386,linux/amd64,linux/arm/v7,linux/arm64 \ + --output "type=image,push=true" \ + --tag $(echo "${DOCKER_USERNAME}" | tr '[:upper:]' '[:lower:]')/v2fly-core:latest \ + --file ./Dockerfile . From 168675a61bda3d6472374e23b5af35b94767358c Mon Sep 17 00:00:00 2001 From: kallydev Date: Fri, 24 Jul 2020 12:37:33 +0800 Subject: [PATCH 2/3] Update docker.yaml --- .github/workflows/docker.yaml | 48 +++++++++++++++++++++++++---------- 1 file changed, 35 insertions(+), 13 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 06ae22f1..f1a4f7c0 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -1,4 +1,4 @@ -name: Release Docker image +name: Release Docker Image on: push: @@ -12,37 +12,59 @@ jobs: - name: Set up Checkout uses: actions/checkout@v2 - - name: Set up Docker Buildx - uses: crazy-max/ghaction-docker-buildx@v3 + - name: Install Buildx and QEMU + run: | + export DOCKER_BUILDKIT=1 + docker build --platform=local -o . git://github.com/docker/buildx + mkdir -p ~/.docker/cli-plugins + mv buildx ~/.docker/cli-plugins/docker-buildx + docker run --rm --privileged multiarch/qemu-user-static:latest --reset -p yes --credential yes + docker buildx create --use --name build --node build --driver-opt network=host - - name: Log in to DockerHub + - name: Log in to Docker Hub env: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} run: | echo "${DOCKER_PASSWORD}" | docker login --username ${DOCKER_USERNAME} --password-stdin - - name: Get release version - id: get_relesase_version + - name: Get image version + id: get_image_version run: echo ::set-output name=version::${GITHUB_REF#refs/*/} - - name: Build and puch Docker image (version) + - name: Get image name + id: get_image_name env: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} - RELEASE_VERSION: ${{ steps.get_relesase_version.outputs.version }} + run: echo ::set-output name=name::$(echo $DOCKER_USERNAME | tr '[:upper:]' '[:lower:]')/v2fly-core + + - name: Get image platform + env: + PLATFORM: linux/386,linux/amd64,linux/arm/v7,linux/arm64 + id: get_image_platform + run: echo ::set-output name=platform::"$PLATFORM" + + - name: Build and push Docker image (version) + env: + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + DOCKER_IMAGE_NAME: ${{ steps.get_image_name.outputs.name }} + DOCKER_IMAGE_VERSION: ${{ steps.get_image_version.outputs.version }} + DOCKER_IMAGE_PLATFORM: ${{ steps.get_image_platform.outputs.platform }} run: | docker buildx build \ - --platform linux/386,linux/amd64,linux/arm/v7,linux/arm64 \ + --platform "$DOCKER_IMAGE_PLATFORM" \ --output "type=image,push=true" \ - --tag $(echo "${DOCKER_USERNAME}" | tr '[:upper:]' '[:lower:]')/v2fly-core:"$RELEASE_VERSION" \ + --tag "$DOCKER_IMAGE_NAME":"$DOCKER_IMAGE_VERSION" \ --file ./Dockerfile . - + - name: Build and push Docker image (latest) env: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + DOCKER_IMAGE_NAME: ${{ steps.get_image_name.outputs.name }} + DOCKER_IMAGE_PLATFORM: ${{ steps.get_image_platform.outputs.platform }} run: | docker buildx build \ - --platform linux/386,linux/amd64,linux/arm/v7,linux/arm64 \ + --platform "$DOCKER_IMAGE_PLATFORM" \ --output "type=image,push=true" \ - --tag $(echo "${DOCKER_USERNAME}" | tr '[:upper:]' '[:lower:]')/v2fly-core:latest \ + --tag "$DOCKER_IMAGE_NAME":latest \ --file ./Dockerfile . From 964d0fbbbe6bc39ee90716b466751b8e4222793c Mon Sep 17 00:00:00 2001 From: kallydev Date: Fri, 24 Jul 2020 13:32:10 +0800 Subject: [PATCH 3/3] Refactor docker.yaml --- .github/workflows/docker.yaml | 35 ++++------------------------------- 1 file changed, 4 insertions(+), 31 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index f1a4f7c0..73bacb26 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -28,43 +28,16 @@ jobs: run: | echo "${DOCKER_PASSWORD}" | docker login --username ${DOCKER_USERNAME} --password-stdin - - name: Get image version - id: get_image_version - run: echo ::set-output name=version::${GITHUB_REF#refs/*/} - - - name: Get image name - id: get_image_name + - name: Build and push Docker image env: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} - run: echo ::set-output name=name::$(echo $DOCKER_USERNAME | tr '[:upper:]' '[:lower:]')/v2fly-core - - - name: Get image platform - env: - PLATFORM: linux/386,linux/amd64,linux/arm/v7,linux/arm64 - id: get_image_platform - run: echo ::set-output name=platform::"$PLATFORM" - - - name: Build and push Docker image (version) - env: - DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} - DOCKER_IMAGE_NAME: ${{ steps.get_image_name.outputs.name }} - DOCKER_IMAGE_VERSION: ${{ steps.get_image_version.outputs.version }} - DOCKER_IMAGE_PLATFORM: ${{ steps.get_image_platform.outputs.platform }} + DOCKER_IMAGE_PLATFORM: linux/386,linux/amd64,linux/arm/v7,linux/arm64 run: | + DOCKER_IMAGE_NAME=$(echo $DOCKER_USERNAME | tr '[:upper:]' '[:lower:]')/v2fly-core + DOCKER_IMAGE_VERSION=${GITHUB_REF#refs/*/} docker buildx build \ --platform "$DOCKER_IMAGE_PLATFORM" \ --output "type=image,push=true" \ --tag "$DOCKER_IMAGE_NAME":"$DOCKER_IMAGE_VERSION" \ - --file ./Dockerfile . - - - name: Build and push Docker image (latest) - env: - DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} - DOCKER_IMAGE_NAME: ${{ steps.get_image_name.outputs.name }} - DOCKER_IMAGE_PLATFORM: ${{ steps.get_image_platform.outputs.platform }} - run: | - docker buildx build \ - --platform "$DOCKER_IMAGE_PLATFORM" \ - --output "type=image,push=true" \ --tag "$DOCKER_IMAGE_NAME":latest \ --file ./Dockerfile .