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.17 - run: | # https://github.com/actions/setup-go/issues/107 cp -f `which go` /usr/bin/go - 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 "TAG_NAME=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV else echo "TAG_NAME=${{ github.event.inputs.tag }}" >> $GITHUB_ENV fi # prepare image tags - name: Prepare Image Tags run: | echo "DOCKERFILE_FRPC_PATH=dockerfiles/Dockerfile-for-frpc" >> $GITHUB_ENV echo "DOCKERFILE_FRPS_PATH=dockerfiles/Dockerfile-for-frps" >> $GITHUB_ENV echo "TAG_FRPC=fatedier/frpc:${{ env.TAG_NAME }}" >> $GITHUB_ENV echo "TAG_FRPS=fatedier/frps:${{ env.TAG_NAME }}" >> $GITHUB_ENV echo "TAG_FRPC_GPR=ghcr.io/fatedier/frpc:${{ env.TAG_NAME }}" >> $GITHUB_ENV echo "TAG_FRPS_GPR=ghcr.io/fatedier/frps:${{ env.TAG_NAME }}" >> $GITHUB_ENV # build images - name: Build Images run: | # for Docker hub docker build --file ${{ env.DOCKERFILE_FRPC_PATH }} --tag ${{ env.TAG_FRPC }} . docker build --file ${{ env.DOCKERFILE_FRPS_PATH }} --tag ${{ env.TAG_FRPS }} . # for GPR docker build --file ${{ env.DOCKERFILE_FRPC_PATH }} --tag ${{ env.TAG_FRPC_GPR }} . docker build --file ${{ env.DOCKERFILE_FRPS_PATH }} --tag ${{ env.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 ${{ env.TAG_FRPC }} docker push ${{ env.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 ${{ env.TAG_FRPC_GPR }} docker push ${{ env.TAG_FRPS_GPR }}