From 028a2f1cabdc0d42416b84d62be2182a6cfc7a8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=92=8B=E5=A4=A9=E7=BF=94?= Date: Wed, 3 Jun 2026 20:34:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20Dockerfile=20?= =?UTF-8?q?=E5=92=8C=E5=BB=BA=E6=9C=A8=20DevOps=20=E6=B5=81=E6=B0=B4?= =?UTF-8?q?=E7=BA=BF=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 多阶段 Docker 构建(golang:1.26-alpine + alpine:3.20) - 流水线:push 到 master 自动测试、构建、部署到 ECS Co-Authored-By: Claude Opus 4.7 --- .devops/gitlink-cli.yml | 41 +++++++++++++++++++++++++++++++++++++++++ Dockerfile | 20 ++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 .devops/gitlink-cli.yml create mode 100644 Dockerfile diff --git a/.devops/gitlink-cli.yml b/.devops/gitlink-cli.yml new file mode 100644 index 0000000..aa9a60c --- /dev/null +++ b/.devops/gitlink-cli.yml @@ -0,0 +1,41 @@ +version: 2 +name: jtx_gitlink_cli +description: "gitlink-cli 项目:代码提交时自动测试、构建并部署到服务器" +trigger: + webhook: gitlink@1.0.0 + event: + - ref: push + ruleset-operator: AND +global: + concurrent: 1 +workflow: + - ref: start + name: 开始 + task: start + - ref: git_clone_0 + name: git clone + task: git_clone@1.2.9 + input: + remote_url: '"https://gitlink.org.cn/jiangtx/gitlink-cli.git"' + ref: '"refs/heads/master"' + commit_id: '""' + depth: 1 + needs: + - start + - ref: ssh_cmd_0 + name: 测试并部署到服务器 + task: ssh_cmd@1.1.1 + input: + ssh_pass: ((jtx_gitlink_cli.jtx_gitlink_cli_ssh)) + ssh_ip: '"121.41.212.97"' + ssh_port: '"22"' + ssh_user: '"root"' + ssh_cmd: >- + "cd /root && rm -rf gitlink-cli && git clone --depth=1 https://gitlink.org.cn/jiangtx/gitlink-cli.git && cd gitlink-cli && docker run --rm -v $(pwd):/build -w /build docker.1ms.run/library/golang:1.26-alpine go test -race ./... && docker build --no-cache -t gitlink-cli . && docker stop gitlink-cli || true && docker rm gitlink-cli || true && docker run -d --restart=always --name gitlink-cli gitlink-cli version" + needs: + - git_clone_0 + - ref: end + name: 结束 + task: end + needs: + - ssh_cmd_0 diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b8240b7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,20 @@ +FROM docker.1ms.run/library/golang:1.26-alpine AS builder + +WORKDIR /build + +COPY go.mod go.sum ./ +RUN go mod download + +COPY . . + +RUN CGO_ENABLED=0 go build -ldflags "-s -w" -o gitlink-cli . + +FROM docker.1ms.run/library/alpine:3.20 + +RUN apk add --no-cache ca-certificates git + +COPY --from=builder /build/gitlink-cli /usr/local/bin/gitlink-cli + +RUN chmod +x /usr/local/bin/gitlink-cli + +ENTRYPOINT ["gitlink-cli"]