From 2f747770ddad6a71dfde62fc56792c931aeee676 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E6=96=B9=E6=88=90?= Date: Thu, 16 Oct 2025 13:58:39 +0800 Subject: [PATCH 1/8] =?UTF-8?q?ci:=20=E6=B7=BB=E5=8A=A0docker-compose?= =?UTF-8?q?=E5=92=8Cswagger=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=E4=BB=A5?= =?UTF-8?q?=E5=8F=8ACI=E5=B7=A5=E4=BD=9C=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加docker-compose.yaml和swagger.yaml配置文件用于容器部署 添加.gitea/workflows/docker.yaml实现CI/CD自动化流程 --- .gitea/workflows/docker.yaml | 100 +++++++++++++++++++++++++++++ deploy/project/docker-compose.yaml | 15 +++++ deploy/project/swagger.yaml | 26 ++++++++ 3 files changed, 141 insertions(+) create mode 100644 .gitea/workflows/docker.yaml create mode 100644 deploy/project/docker-compose.yaml create mode 100644 deploy/project/swagger.yaml diff --git a/ .gitea/workflows/docker.yaml b/ .gitea/workflows/docker.yaml new file mode 100644 index 0000000..9a7fc7f --- /dev/null +++ b/ .gitea/workflows/docker.yaml @@ -0,0 +1,100 @@ +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 }} + DOCKER_USERNAME: ${{ vars.DOCKER_USERNAME }} + DOCKER_PASSWORD: ${{ vars.DOCKER_PASSWORD}} + # 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 }} + # SMTP + SMTP_SERVER_ADDRESS: ${{ vars.SMTP_SERVER_ADDRESS }} + SMTP_USERNAME: ${{ vars.SMTP_USERNAME }} + SMTP_PASSWORD: ${{ vars.SMTP_PASSWORD }} + +jobs: + linux: + runs-on: ubuntu-latest + strategy: + matrix: + # 使用gitea-tool-cache需要指定具体的版本号 + go: ["1.24.5"] + + steps: + - name: Checkout + uses: https://${{ env.GIT_USERNAME }}:${{ env.GIT_PASSWORD }}@${{ vars.DOMAIN_OF_GITEA}}/actions/checkout@v4 + + # 将.env环境变量配置文件拷贝致gitea runner容器 + - name: copy env file to runner container + uses: https://${{ env.GIT_USERNAME }}:${{ env.GIT_PASSWORD }}@${{ vars.DOMAIN_OF_GITEA}}/actions/ssh-action@v0.1.10 + with: + host: ${{ env.SSH_HOST }} + username: ${{ env.SSH_USER }} + password: ${{ env.SSH_PASSWORD }} + port: ${{ env.SSH_PORT }} + debug: true + script: | + mkdir -p /install/cicd_env_files + cd /install/cicd_env_files + docker cp ${{env.JOB_CONTAINER_NAME}}:${{gitea.WORKSPACE}}/deploy/.env ./.env + source ./.env + docker cp ${{env.JOB_CONTAINER_NAME}}:${{gitea.WORKSPACE}}/docs/${SERVICE_NAME}.json . + docker cp .env ${{ vars.RUNNER_CONTAINER_NAME }}:/.env + docker exec ${{ vars.RUNNER_CONTAINER_NAME }} /bin/bash -c "source /.env" + + - name: Install Go environment + uses: https://${{ env.GIT_USERNAME }}:${{ env.GIT_PASSWORD }}@${{ vars.DOMAIN_OF_GITEA}}/actions/gitea-tool-cache@v5 + with: + # 需要指定具体版本号! + go-version: ${{ matrix.go }} + + - uses: https://${{ env.GIT_USERNAME }}:${{ env.GIT_PASSWORD }}@${{ vars.DOMAIN_OF_GITEA}}/actions/setup-go@v2 + with: + go-version: ${{ matrix.go }} + + - uses: https://${{ env.GIT_USERNAME }}:${{ env.GIT_PASSWORD }}@${{ vars.DOMAIN_OF_GITEA}}/actions/cache@v3 + with: + path: | + ~/.cache/go-build + ~/go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go- + + - name: Prepare GO environment + run: | + go env -w GOPROXY=https://goproxy.cn,direct + go env -w GOPRIVATE="${{ vars.DOMAIN_OF_GITEA}}" + git config --global url."https://${{ env.GIT_USERNAME }}:${{ env.GIT_PASSWORD }}@${{ vars.DOMAIN_OF_GITEA}}/".insteadOf "https://${{ vars.DOMAIN_OF_GITEA}}/" + + - name: Build and push docker image + run: | + source ${{gitea.WORKSPACE}}/deploy/.env + go clean -modcache + go mod tidy + make build-linux + make docker + make publish-docker + make docker-run + + - name: Build APIDOC docker image + run: | + source ${{gitea.WORKSPACE}}/deploy/.env + echo ${SERVICE_NAME} + echo ${APIDOC_CONTAINER_NAME} + echo ${SWAGGER_JSON} + make swagger-docker \ No newline at end of file diff --git a/deploy/project/docker-compose.yaml b/deploy/project/docker-compose.yaml new file mode 100644 index 0000000..cdb8ae5 --- /dev/null +++ b/deploy/project/docker-compose.yaml @@ -0,0 +1,15 @@ +services: + # need modify service name to your owner + blindbox-mms-api: + image: ${API_IMAGE_NAME} + container_name: ${API_CONTAINER_NAME} + restart: always + ports: + - ${API_EXTERNAL_PORT}:${API_INNTER_PORT} + volumes: + - ${API_LOG_DIR}:/app/logs + +networks: + default: + name: ${DOCKER_NETWORK_NAME} + external: true diff --git a/deploy/project/swagger.yaml b/deploy/project/swagger.yaml new file mode 100644 index 0000000..1d71a71 --- /dev/null +++ b/deploy/project/swagger.yaml @@ -0,0 +1,26 @@ +services: + apidoc: + image: swaggerapi/swagger-ui + container_name: ${APIDOC_CONTAINER_NAME} + restart: always + entrypoint: + [ + "/bin/sh", + "-c", + "sed -i 's|localhost:${API_INNTER_PORT}|${SWAGGER_INVOKE_URL}|g' ${SWAGGER_JSON} && /docker-entrypoint.sh nginx && tail -f /dev/null", + ] + ports: + - "${APIDOC_PORT_DEFINE}:8080" + environment: + SWAGGER_JSON: ${SWAGGER_JSON} + APIDOC_CONTAINER_NAME: ${APIDOC_CONTAINER_NAME} + APIDOC_PORT: ${APIDOC_PORT} + INVOKE_URL: ${SWAGGER_INVOKE_URL} + API_URL: https://${DOMAIN}/${SERVICE_NAME}-${APIDOC_BUILD_SUFFIX}/${SERVICE_NAME}.json + volumes: + - ${HOST_APIDOC_DIRCTORY}:${APIDOC_CONTAINER_DIRECOTRY} + +networks: + default: + name: ${DOCKER_NETWORK_NAME} + external: true From 129e438b077d11d2680f6bc75626edca834dd2e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E6=96=B9=E6=88=90?= Date: Thu, 16 Oct 2025 14:02:05 +0800 Subject: [PATCH 2/8] =?UTF-8?q?ci(docker):=20=E6=B7=BB=E5=8A=A0Dockerfile?= =?UTF-8?q?=E5=92=8C=E6=9B=B4=E6=96=B0CI=E5=B7=A5=E4=BD=9C=E6=B5=81?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加新的Dockerfile用于构建miniChat应用镜像 更新.gitea/workflows/docker.yaml CI工作流配置,优化构建和发布流程 --- { .gitea => .gitea}/workflows/docker.yaml | 2 +- Dockerfile | 51 +++++++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) rename { .gitea => .gitea}/workflows/docker.yaml (98%) create mode 100644 Dockerfile diff --git a/ .gitea/workflows/docker.yaml b/.gitea/workflows/docker.yaml similarity index 98% rename from .gitea/workflows/docker.yaml rename to .gitea/workflows/docker.yaml index 9a7fc7f..aa80098 100644 --- a/ .gitea/workflows/docker.yaml +++ b/.gitea/workflows/docker.yaml @@ -97,4 +97,4 @@ jobs: echo ${SERVICE_NAME} echo ${APIDOC_CONTAINER_NAME} echo ${SWAGGER_JSON} - make swagger-docker \ No newline at end of file + make swagger-docker \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b8a7b87 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,51 @@ +# Build stage +FROM golang:1.24.5-alpine AS builder + +# Set working directory +WORKDIR /app + +# Install dependencies +RUN apk add --no-cache git ca-certificates tzdata + +# Copy go mod files +COPY go.mod go.sum ./ + +# Download dependencies +RUN go mod download + +# Copy source code +COPY . . + +# Build the application +RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -ldflags '-w -s' -trimpath -o miniChat . + +# Final stage +FROM alpine:latest + +# Install ca-certificates for HTTPS requests +RUN apk --no-cache add ca-certificates tzdata + +# Set timezone +ENV TZ=Asia/Shanghai + +# Create app directory +WORKDIR /app + +# Copy binary from builder stage +COPY --from=builder /app/miniChat . + +# Copy configuration files if they exist +COPY --from=builder /app/configs ./configs + +# Create logs directory +RUN mkdir -p /app/logs + +# Expose port +EXPOSE 9991 + +# Health check +HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ + CMD wget --no-verbose --tries=1 --spider http://localhost:9991/system/health || exit 1 + +# Run the application +CMD ["./miniChat"] \ No newline at end of file From 96e60ca93de38d52a325ad981690321b4c7474d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E6=96=B9=E6=88=90?= Date: Thu, 16 Oct 2025 14:14:03 +0800 Subject: [PATCH 3/8] =?UTF-8?q?ci:=20=E4=BF=AE=E5=A4=8D=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=81=E4=B8=AD=E7=8E=AF=E5=A2=83=E5=8F=98=E9=87=8F=E5=BC=95?= =?UTF-8?q?=E7=94=A8=E6=A0=BC=E5=BC=8F=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/docker.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitea/workflows/docker.yaml b/.gitea/workflows/docker.yaml index aa80098..4d6b142 100644 --- a/.gitea/workflows/docker.yaml +++ b/.gitea/workflows/docker.yaml @@ -50,9 +50,9 @@ jobs: script: | mkdir -p /install/cicd_env_files cd /install/cicd_env_files - docker cp ${{env.JOB_CONTAINER_NAME}}:${{gitea.WORKSPACE}}/deploy/.env ./.env + docker cp ${{ vars.JOB_CONTAINER_NAME }}:${{ gitea.workspace }}/deploy/.env ./.env source ./.env - docker cp ${{env.JOB_CONTAINER_NAME}}:${{gitea.WORKSPACE}}/docs/${SERVICE_NAME}.json . + docker cp ${{ vars.JOB_CONTAINER_NAME }}:${{ gitea.workspace }}/docs/${SERVICE_NAME}.json . docker cp .env ${{ vars.RUNNER_CONTAINER_NAME }}:/.env docker exec ${{ vars.RUNNER_CONTAINER_NAME }} /bin/bash -c "source /.env" @@ -83,7 +83,7 @@ jobs: - name: Build and push docker image run: | - source ${{gitea.WORKSPACE}}/deploy/.env + source ${{ gitea.workspace }}/deploy/.env go clean -modcache go mod tidy make build-linux @@ -93,7 +93,7 @@ jobs: - name: Build APIDOC docker image run: | - source ${{gitea.WORKSPACE}}/deploy/.env + source ${{ gitea.workspace }}/deploy/.env echo ${SERVICE_NAME} echo ${APIDOC_CONTAINER_NAME} echo ${SWAGGER_JSON} From d5e1ffd5fd0704015d0c6cc4d908cf1fa6161156 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E6=96=B9=E6=88=90?= Date: Thu, 16 Oct 2025 14:15:43 +0800 Subject: [PATCH 4/8] =?UTF-8?q?ci:=20=E7=A7=BB=E9=99=A4=E6=9E=84=E5=BB=BAA?= =?UTF-8?q?PIDOC=E9=95=9C=E5=83=8F=E7=9A=84=E6=AD=A5=E9=AA=A4=E5=B9=B6?= =?UTF-8?q?=E6=B8=85=E7=90=86=E6=97=A0=E7=94=A8=E6=96=87=E4=BB=B6=E6=8B=B7?= =?UTF-8?q?=E8=B4=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/docker.yaml | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/.gitea/workflows/docker.yaml b/.gitea/workflows/docker.yaml index 4d6b142..e579aa0 100644 --- a/.gitea/workflows/docker.yaml +++ b/.gitea/workflows/docker.yaml @@ -52,7 +52,6 @@ jobs: cd /install/cicd_env_files docker cp ${{ vars.JOB_CONTAINER_NAME }}:${{ gitea.workspace }}/deploy/.env ./.env source ./.env - docker cp ${{ vars.JOB_CONTAINER_NAME }}:${{ gitea.workspace }}/docs/${SERVICE_NAME}.json . docker cp .env ${{ vars.RUNNER_CONTAINER_NAME }}:/.env docker exec ${{ vars.RUNNER_CONTAINER_NAME }} /bin/bash -c "source /.env" @@ -89,12 +88,4 @@ jobs: make build-linux make docker make publish-docker - make docker-run - - - name: Build APIDOC docker image - run: | - source ${{ gitea.workspace }}/deploy/.env - echo ${SERVICE_NAME} - echo ${APIDOC_CONTAINER_NAME} - echo ${SWAGGER_JSON} - make swagger-docker \ No newline at end of file + make docker-run \ No newline at end of file From 9db33e7db1f63d2acb582bdf97c343901d90127a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E6=96=B9=E6=88=90?= Date: Thu, 16 Oct 2025 14:18:19 +0800 Subject: [PATCH 5/8] =?UTF-8?q?ci(docker):=20=E6=9B=B4=E6=96=B0docker?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E6=B5=81=E4=BB=A5=E6=94=AF=E6=8C=81apidoc?= =?UTF-8?q?=E6=9E=84=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加从容器中复制apidoc配置文件的步骤 新增构建apidoc docker镜像的任务 --- .gitea/workflows/docker.yaml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/.gitea/workflows/docker.yaml b/.gitea/workflows/docker.yaml index e579aa0..9a7fc7f 100644 --- a/.gitea/workflows/docker.yaml +++ b/.gitea/workflows/docker.yaml @@ -50,8 +50,9 @@ jobs: script: | mkdir -p /install/cicd_env_files cd /install/cicd_env_files - docker cp ${{ vars.JOB_CONTAINER_NAME }}:${{ gitea.workspace }}/deploy/.env ./.env + docker cp ${{env.JOB_CONTAINER_NAME}}:${{gitea.WORKSPACE}}/deploy/.env ./.env source ./.env + docker cp ${{env.JOB_CONTAINER_NAME}}:${{gitea.WORKSPACE}}/docs/${SERVICE_NAME}.json . docker cp .env ${{ vars.RUNNER_CONTAINER_NAME }}:/.env docker exec ${{ vars.RUNNER_CONTAINER_NAME }} /bin/bash -c "source /.env" @@ -82,10 +83,18 @@ jobs: - name: Build and push docker image run: | - source ${{ gitea.workspace }}/deploy/.env + source ${{gitea.WORKSPACE}}/deploy/.env go clean -modcache go mod tidy make build-linux make docker make publish-docker - make docker-run \ No newline at end of file + make docker-run + + - name: Build APIDOC docker image + run: | + source ${{gitea.WORKSPACE}}/deploy/.env + echo ${SERVICE_NAME} + echo ${APIDOC_CONTAINER_NAME} + echo ${SWAGGER_JSON} + make swagger-docker \ No newline at end of file From ae8e92404546ef36584cea356daca90d7c5a8a12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E6=96=B9=E6=88=90?= Date: Thu, 16 Oct 2025 14:20:28 +0800 Subject: [PATCH 6/8] =?UTF-8?q?ci(docker):=20=E7=AE=80=E5=8C=96=E5=B9=B6?= =?UTF-8?q?=E4=BC=98=E5=8C=96docker=E6=9E=84=E5=BB=BA=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E6=B5=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 移除不必要的环境文件拷贝步骤,更新Go安装方式 添加调试信息以帮助定位.env文件问题 --- .gitea/workflows/docker.yaml | 74 +++++++++++++----------------------- 1 file changed, 27 insertions(+), 47 deletions(-) diff --git a/.gitea/workflows/docker.yaml b/.gitea/workflows/docker.yaml index 9a7fc7f..aa62c8e 100644 --- a/.gitea/workflows/docker.yaml +++ b/.gitea/workflows/docker.yaml @@ -31,70 +31,50 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - # 使用gitea-tool-cache需要指定具体的版本号 go: ["1.24.5"] steps: - name: Checkout uses: https://${{ env.GIT_USERNAME }}:${{ env.GIT_PASSWORD }}@${{ vars.DOMAIN_OF_GITEA}}/actions/checkout@v4 - # 将.env环境变量配置文件拷贝致gitea runner容器 - - name: copy env file to runner container - uses: https://${{ env.GIT_USERNAME }}:${{ env.GIT_PASSWORD }}@${{ vars.DOMAIN_OF_GITEA}}/actions/ssh-action@v0.1.10 - with: - host: ${{ env.SSH_HOST }} - username: ${{ env.SSH_USER }} - password: ${{ env.SSH_PASSWORD }} - port: ${{ env.SSH_PORT }} - debug: true - script: | - mkdir -p /install/cicd_env_files - cd /install/cicd_env_files - docker cp ${{env.JOB_CONTAINER_NAME}}:${{gitea.WORKSPACE}}/deploy/.env ./.env - source ./.env - docker cp ${{env.JOB_CONTAINER_NAME}}:${{gitea.WORKSPACE}}/docs/${SERVICE_NAME}.json . - docker cp .env ${{ vars.RUNNER_CONTAINER_NAME }}:/.env - docker exec ${{ vars.RUNNER_CONTAINER_NAME }} /bin/bash -c "source /.env" - - name: Install Go environment - uses: https://${{ env.GIT_USERNAME }}:${{ env.GIT_PASSWORD }}@${{ vars.DOMAIN_OF_GITEA}}/actions/gitea-tool-cache@v5 - with: - # 需要指定具体版本号! - go-version: ${{ matrix.go }} - - - uses: https://${{ env.GIT_USERNAME }}:${{ env.GIT_PASSWORD }}@${{ vars.DOMAIN_OF_GITEA}}/actions/setup-go@v2 + uses: https://${{ env.GIT_USERNAME }}:${{ env.GIT_PASSWORD }}@${{ vars.DOMAIN_OF_GITEA}}/actions/setup-go@v4 with: go-version: ${{ matrix.go }} - - uses: https://${{ env.GIT_USERNAME }}:${{ env.GIT_PASSWORD }}@${{ vars.DOMAIN_OF_GITEA}}/actions/cache@v3 - with: - path: | - ~/.cache/go-build - ~/go/pkg/mod - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - - name: Prepare GO environment run: | - go env -w GOPROXY=https://goproxy.cn,direct + go env -w GOPROXY=https://goproxy.cn,direct go env -w GOPRIVATE="${{ vars.DOMAIN_OF_GITEA}}" - git config --global url."https://${{ env.GIT_USERNAME }}:${{ env.GIT_PASSWORD }}@${{ vars.DOMAIN_OF_GITEA}}/".insteadOf "https://${{ vars.DOMAIN_OF_GITEA}}/" + git config --global url."https://${{ env.GIT_USERNAME }}:${{ env.GIT_PASSWORD }}@${{ vars.DOMAIN_OF_GITEA}}/".insteadOf "https://${{ vars.DOMAIN_OF_GITEA}}/" - - name: Build and push docker image + - name: Debug filesystem and build docker image run: | - source ${{gitea.WORKSPACE}}/deploy/.env + echo "=== Debug Information ===" + echo "Current working directory: $(pwd)" + echo "Gitea workspace: ${{ gitea.workspace }}" + echo "Listing current directory:" + ls -la + echo "Checking if deploy directory exists:" + ls -la deploy/ || echo "deploy directory not found" + echo "Checking if .env file exists:" + ls -la deploy/.env || echo ".env file not found in deploy/" + echo "Trying to find .env files:" + find . -name ".env" -type f 2>/dev/null || echo "No .env files found" + echo "=========================" + + # Try to source the .env file with proper path + if [ -f "./deploy/.env" ]; then + echo "Found .env file, sourcing it..." + source ./deploy/.env + else + echo "ERROR: .env file not found at ./deploy/.env" + exit 1 + fi + go clean -modcache go mod tidy make build-linux make docker make publish-docker - make docker-run - - - name: Build APIDOC docker image - run: | - source ${{gitea.WORKSPACE}}/deploy/.env - echo ${SERVICE_NAME} - echo ${APIDOC_CONTAINER_NAME} - echo ${SWAGGER_JSON} - make swagger-docker \ No newline at end of file + make docker-run \ No newline at end of file From 51dd6c2b5294dfca9bab5dde874378544bf2597c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E6=96=B9=E6=88=90?= Date: Thu, 16 Oct 2025 14:22:03 +0800 Subject: [PATCH 7/8] =?UTF-8?q?ci(docker):=20=E4=BC=98=E5=8C=96Gitea=20CI?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=B9=B6=E6=B7=BB=E5=8A=A0API=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E6=9E=84=E5=BB=BA=E6=AD=A5=E9=AA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加将.env文件拷贝到runner容器的步骤 - 使用gitea-tool-cache替代setup-go以提升构建效率 - 添加go构建缓存配置 - 简化构建步骤并移除调试信息 - 新增API文档镜像构建步骤 --- .gitea/workflows/docker.yaml | 74 +++++++++++++++++++++++------------- 1 file changed, 47 insertions(+), 27 deletions(-) diff --git a/.gitea/workflows/docker.yaml b/.gitea/workflows/docker.yaml index aa62c8e..9a7fc7f 100644 --- a/.gitea/workflows/docker.yaml +++ b/.gitea/workflows/docker.yaml @@ -31,50 +31,70 @@ jobs: runs-on: ubuntu-latest strategy: matrix: + # 使用gitea-tool-cache需要指定具体的版本号 go: ["1.24.5"] steps: - name: Checkout uses: https://${{ env.GIT_USERNAME }}:${{ env.GIT_PASSWORD }}@${{ vars.DOMAIN_OF_GITEA}}/actions/checkout@v4 + # 将.env环境变量配置文件拷贝致gitea runner容器 + - name: copy env file to runner container + uses: https://${{ env.GIT_USERNAME }}:${{ env.GIT_PASSWORD }}@${{ vars.DOMAIN_OF_GITEA}}/actions/ssh-action@v0.1.10 + with: + host: ${{ env.SSH_HOST }} + username: ${{ env.SSH_USER }} + password: ${{ env.SSH_PASSWORD }} + port: ${{ env.SSH_PORT }} + debug: true + script: | + mkdir -p /install/cicd_env_files + cd /install/cicd_env_files + docker cp ${{env.JOB_CONTAINER_NAME}}:${{gitea.WORKSPACE}}/deploy/.env ./.env + source ./.env + docker cp ${{env.JOB_CONTAINER_NAME}}:${{gitea.WORKSPACE}}/docs/${SERVICE_NAME}.json . + docker cp .env ${{ vars.RUNNER_CONTAINER_NAME }}:/.env + docker exec ${{ vars.RUNNER_CONTAINER_NAME }} /bin/bash -c "source /.env" + - name: Install Go environment - uses: https://${{ env.GIT_USERNAME }}:${{ env.GIT_PASSWORD }}@${{ vars.DOMAIN_OF_GITEA}}/actions/setup-go@v4 + uses: https://${{ env.GIT_USERNAME }}:${{ env.GIT_PASSWORD }}@${{ vars.DOMAIN_OF_GITEA}}/actions/gitea-tool-cache@v5 + with: + # 需要指定具体版本号! + go-version: ${{ matrix.go }} + + - uses: https://${{ env.GIT_USERNAME }}:${{ env.GIT_PASSWORD }}@${{ vars.DOMAIN_OF_GITEA}}/actions/setup-go@v2 with: go-version: ${{ matrix.go }} + - uses: https://${{ env.GIT_USERNAME }}:${{ env.GIT_PASSWORD }}@${{ vars.DOMAIN_OF_GITEA}}/actions/cache@v3 + with: + path: | + ~/.cache/go-build + ~/go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go- + - name: Prepare GO environment run: | - go env -w GOPROXY=https://goproxy.cn,direct + go env -w GOPROXY=https://goproxy.cn,direct go env -w GOPRIVATE="${{ vars.DOMAIN_OF_GITEA}}" - git config --global url."https://${{ env.GIT_USERNAME }}:${{ env.GIT_PASSWORD }}@${{ vars.DOMAIN_OF_GITEA}}/".insteadOf "https://${{ vars.DOMAIN_OF_GITEA}}/" + git config --global url."https://${{ env.GIT_USERNAME }}:${{ env.GIT_PASSWORD }}@${{ vars.DOMAIN_OF_GITEA}}/".insteadOf "https://${{ vars.DOMAIN_OF_GITEA}}/" - - name: Debug filesystem and build docker image + - name: Build and push docker image run: | - echo "=== Debug Information ===" - echo "Current working directory: $(pwd)" - echo "Gitea workspace: ${{ gitea.workspace }}" - echo "Listing current directory:" - ls -la - echo "Checking if deploy directory exists:" - ls -la deploy/ || echo "deploy directory not found" - echo "Checking if .env file exists:" - ls -la deploy/.env || echo ".env file not found in deploy/" - echo "Trying to find .env files:" - find . -name ".env" -type f 2>/dev/null || echo "No .env files found" - echo "=========================" - - # Try to source the .env file with proper path - if [ -f "./deploy/.env" ]; then - echo "Found .env file, sourcing it..." - source ./deploy/.env - else - echo "ERROR: .env file not found at ./deploy/.env" - exit 1 - fi - + source ${{gitea.WORKSPACE}}/deploy/.env go clean -modcache go mod tidy make build-linux make docker make publish-docker - make docker-run \ No newline at end of file + make docker-run + + - name: Build APIDOC docker image + run: | + source ${{gitea.WORKSPACE}}/deploy/.env + echo ${SERVICE_NAME} + echo ${APIDOC_CONTAINER_NAME} + echo ${SWAGGER_JSON} + make swagger-docker \ No newline at end of file From 0fa2900724349b2fa157d1e1785f545113354d62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=82=B9=E6=96=B9=E6=88=90?= Date: Thu, 16 Oct 2025 14:25:50 +0800 Subject: [PATCH 8/8] =?UTF-8?q?ci(docker):=20=E6=9B=B4=E6=96=B0=E5=B7=A5?= =?UTF-8?q?=E4=BD=9C=E6=B5=81=E4=B8=AD=E7=9A=84=E7=8E=AF=E5=A2=83=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E7=9B=AE=E5=BD=95=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将环境文件目录从/cicd_env_files改为/cicd_env_files_mini_chat以匹配项目名称 --- .gitea/workflows/docker.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/docker.yaml b/.gitea/workflows/docker.yaml index 9a7fc7f..97a85d9 100644 --- a/.gitea/workflows/docker.yaml +++ b/.gitea/workflows/docker.yaml @@ -48,8 +48,8 @@ jobs: port: ${{ env.SSH_PORT }} debug: true script: | - mkdir -p /install/cicd_env_files - cd /install/cicd_env_files + mkdir -p /install/cicd_env_files_mini_chat + cd /install/cicd_env_files_mini_chat docker cp ${{env.JOB_CONTAINER_NAME}}:${{gitea.WORKSPACE}}/deploy/.env ./.env source ./.env docker cp ${{env.JOB_CONTAINER_NAME}}:${{gitea.WORKSPACE}}/docs/${SERVICE_NAME}.json .