name: Build Image and Publish to Dockerhub & GPR on: release: types: [ created ] workflow_dispatch: inputs: tag: description: 'Image tag' required: true default: 'test' jobs: binary: name: Build Golang project runs-on: ubuntu-latest steps: - name: Set up Go 1.x uses: actions/setup-go@v2 with: go-version: 1.15 - run: go version - name: Check out code into the Go module directory uses: actions/checkout@v2 - name: Build run: make build - name: Archive artifacts for frpc uses: actions/upload-artifact@v1 with: name: frpc path: bin/frpc - name: Archive artifacts for frps uses: actions/upload-artifact@v1 with: name: frps path: bin/frps image: name: Build Image from Dockerfile and binaries runs-on: ubuntu-latest needs: binary steps: # environment - name: Checkout uses: actions/checkout@v2 with: fetch-depth: '0' - name: Set up QEMU uses: docker/setup-qemu-action@v1 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v1 # download binaries of frpc and frps - name: Download binary of frpc uses: actions/download-artifact@v2 with: name: frpc path: bin/frpc - name: Download binary of frps uses: actions/download-artifact@v2 with: name: frps path: bin/frps # get image tag name - name: Get Image Tag Name run: | if [ x${{ github.event.inputs.tag }} == x"" ]; then echo ::set-env name=TAG_NAME::${GITHUB_REF#refs/*/} else echo ::set-env name=TAG_NAME::${{ github.event.inputs.tag }} fi # prepare image tags - name: Prepare Image Tags run: | echo ::set-env name=DOCKERFILE_FRPC_PATH::dockerfiles/Dockerfile-for-frpc echo ::set-env name=DOCKERFILE_FRPS_PATH::dockerfiles/Dockerfile-for-frps echo ::set-env name=TAG_FRPC::fatedier/frpc:$TAG_NAME echo ::set-env name=TAG_FRPS::fatedier/frps:$TAG_NAME echo ::set-env name=TAG_FRPC_GPR::ghcr.io/fatedier/frpc:$TAG_NAME echo ::set-env name=TAG_FRPS_GPR::ghcr.io/fatedier/frps:$TAG_NAME # build images - name: Build Images run: | # for Docker hub docker build --file $DOCKERFILE_FRPC_PATH --tag $TAG_FRPC . docker build --file $DOCKERFILE_FRPS_PATH --tag $TAG_FRPS . # for GPR docker build --file $DOCKERFILE_FRPC_PATH --tag $TAG_FRPC_GPR . docker build --file $DOCKERFILE_FRPS_PATH --tag $TAG_FRPS_GPR . # push to dockerhub - name: Publish to Dockerhub run: | echo ${{ secrets.DOCKERHUB_PASSWORD }} | docker login --username ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin docker push $TAG_FRPC docker push $TAG_FRPS # push to gpr - name: Publish to GPR run: | echo ${{ secrets.GPR_TOKEN }} | docker login ghcr.io --username ${{ github.repository_owner }} --password-stdin docker push $TAG_FRPC_GPR docker push $TAG_FRPS_GPR