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 }} DOMAIN: ${{ vars.DOMAIN_OF_GITEA }} # 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 dependencies run: | apk add --no-cache git make docker-cli curl bash - name: Checkout code run: | echo "Setting up git credentials..." git config --global credential.helper store echo "https://${GIT_USERNAME}:${GIT_PASSWORD}@${DOMAIN}" > ~/.git-credentials echo "Cloning repository..." git clone --depth 1 https://${DOMAIN}/${{ github.repository }}.git . echo "Fetching tags..." git fetch --tags || true echo "Repository cloned successfully" - name: Setup Go environment run: | go env -w GOPROXY=https://goproxy.cn,direct go env -w GOPRIVATE="${DOMAIN}" go env -w GOSUMDB=off git config --global url."https://${GIT_USERNAME}:${GIT_PASSWORD}@${DOMAIN}/".insteadOf "https://${DOMAIN}/" - name: Build and push docker image run: | if [ -f "${{ github.workspace }}/deploy/.env" ]; then source ${{ github.workspace }}/deploy/.env fi echo "Building application..." go mod tidy make build-linux echo "Building Docker image..." make docker # echo "Publishing Docker image..." # make publish-docker echo "Starting Docker container..." make docker-run