name: Build docker and publish run-name: The pipeline for docker build on: push: branches: - main pull_request: branches: - main env: # Docker REPO: ${{ vars.REPO }} # Gitea GIT_USERNAME: ${{ vars.GIT_USERNAME }} GIT_PASSWORD: ${{ vars.GIT_PASSWORD }} # Host SSH SSH_HOST: ${{ vars.SSH_HOST }} SSH_PORT: ${{ vars.SSH_PORT }} SSH_USER: ${{ vars.SSH_USER }} SSH_PASSWORD: ${{ vars.SSH_PASSWORD }} jobs: linux: runs-on: vpn container: image: golang:1.24-alpine env: GOARCH: amd64 strategy: matrix: go: ["1.24.3"] steps: - name: Install git and dependencies run: | apk add --no-cache git make docker-cli - name: Checkout code run: | git clone --depth 1 https://${{ env.GIT_USERNAME }}:${{ env.GIT_PASSWORD }}@${{ vars.DOMAIN_OF_GITEA}}/${{ github.repository }}.git . git fetch --tags - name: Setup Go environment run: | go env -w GOPROXY=https://goproxy.cn,direct go env -w GOPRIVATE="${{ vars.DOMAIN_OF_GITEA}}" go env -w GOSUMDB=off git config --global url."https://${{ env.GIT_USERNAME }}:${{ env.GIT_PASSWORD }}@${{ vars.DOMAIN_OF_GITEA}}/".insteadOf "https://${{ vars.DOMAIN_OF_GITEA}}/" - name: Copy env file to runner container if: false # Skip this step as we're using container uses: appleboy/ssh-action@v1.0.0 with: host: ${{ env.SSH_HOST }} username: ${{ env.SSH_USER }} password: ${{ env.SSH_PASSWORD }} port: ${{ env.SSH_PORT }} debug: true script: | mkdir -p ~/cicd_env_files cd ~/cicd_env_files rm -f ./.env docker cp ${{ vars.JOB_CONTAINER_NAME }}:${{ github.workspace }}/deploy/.env ./.env source ./.env if [ -n "${{ vars.RUNNER_CONTAINER_NAME }}" ]; then docker cp .env ${{ vars.RUNNER_CONTAINER_NAME }}:/.env docker exec ${{ vars.RUNNER_CONTAINER_NAME }} /bin/bash -c "source /.env" else echo "RUNNER_CONTAINER_NAME is not set, skipping container operations" fi - name: Build and push docker image run: | if [ -f "${{ github.workspace }}/deploy/.env" ]; then source ${{ github.workspace }}/deploy/.env fi go mod tidy make build-linux make docker make publish-docker make docker-run