1. 准备Debian基础环境
确保Debian系统已更新至最新状态,避免因包版本冲突影响后续安装:
sudo apt update && sudo apt upgrade -y
2. 安装Golang环境
Debian官方仓库提供Golang安装包,可通过apt快速部署:
sudo apt install golang-go -y
验证安装是否成功:
go version
# 预期输出:go version goX.XX.X linux/amd64(X.XX.X为具体版本号)
配置环境变量(可选但建议):
编辑~/.bashrc或~/.profile文件,添加以下内容:
export GOPATH=$HOME/go # 设置工作空间路径
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin # 添加Go可执行文件路径
使配置生效:
source ~/.bashrc # 或 source ~/.profile
3. 选择并安装CI工具
常见CI工具推荐:
4. 配置GitLab CI/CD(推荐新手)
步骤4.1:安装GitLab Runner
GitLab Runner是执行CI流程的代理工具,需在Debian服务器上安装:
sudo apt-get install -y curl openssh-server ca-certificates tzdata perl
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-runner/script.deb.sh | sudo bash
sudo apt-get install gitlab-runner -y
注册Runner(关联项目与Runner):
sudo gitlab-runner register
按提示输入GitLab实例URL(如https://gitlab.com)、注册令牌(从项目→Settings→CI/CD→Runners获取)及Runner描述、标签(如golang)。
步骤4.2:创建.gitlab-ci.yml配置文件
在Golang项目根目录下创建.gitlab-ci.yml,定义CI流程(以“构建-测试-部署”为例):
image: golang:latest # 使用官方Golang镜像
stages:
- build # 构建阶段
- test # 测试阶段
- deploy # 部署阶段(仅main分支触发)
variables:
GIN_MODE: release # 设置Golang环境变量(如框架模式)
before_script:
- go version # 打印Go版本(调试用)
- go env # 打印Go环境变量(调试用)
build:
stage: build
script:
- go build -o myapp . # 编译项目为可执行文件
test:
stage: test
script:
- go test ./... # 运行所有单元测试
deploy:
stage: deploy
script:
- scp myapp user@your_server:/path/to/deploy # 将可执行文件复制到目标服务器
only:
- main # 仅main分支推送时触发部署
将配置文件提交至Git仓库并推送:
git add .gitlab-ci.yml
git commit -m "Add GitLab CI/CD configuration"
git push origin main
触发CI流程:推送代码后,GitLab会自动启动Runner执行.gitlab-ci.yml中的步骤,可在GitLab项目→CI/CD→Jobs页面查看实时日志。
5. 配置Jenkins(适合复杂流程)
步骤5.1:安装Jenkins
通过apt安装Jenkins:
sudo apt update
sudo apt install jenkins -y
启动Jenkins并设置开机自启:
sudo systemctl start jenkins
sudo systemctl enable jenkins
访问http://<Debian服务器IP>:8080,按提示输入初始管理员密码(从/var/lib/jenkins/secrets/initialAdminPassword获取)完成安装。
步骤5.2:安装必要插件
登录Jenkins控制台→Manage Jenkins→Manage Plugins→Available,搜索并安装以下插件:
步骤5.3:创建Jenkins Pipeline项目
进入Jenkins→New Item→输入项目名称(如golang-ci)→选择“Pipeline”→点击“OK”。
配置Pipeline:
https://github.com/yourname/golang-app.git);*/main);Jenkinsfile,即项目根目录下的Jenkinsfile)。步骤5.4:编写Jenkinsfile
在项目根目录下创建Jenkinsfile,定义Pipeline流程(以“构建-测试-部署”为例):
pipeline {
agent any // 使用任意可用节点执行
stages {
stage('Build') {
steps {
sh 'go build -o myapp' // 编译项目
}
}
stage('Test') {
steps {
sh 'go test ./...' // 运行测试
}
}
stage('Deploy') {
when {
branch 'main' // 仅main分支触发部署
}
steps {
sh 'scp myapp user@your_server:/path/to/deploy' // 部署到目标服务器
}
}
}
post {
success {
echo 'CI流程执行成功!' // 成功时发送通知(可替换为邮件、Slack等)
}
failure {
echo 'CI流程执行失败!' // 失败时发送通知
}
}
}
保存并运行Pipeline:点击“Build Now”,Jenkins会自动拉取代码并执行Jenkinsfile中的步骤,可在项目→Build History查看执行结果。
6. 可选优化:容器化部署
为确保环境一致性,可使用Docker容器化部署Golang应用。
步骤6.1:编写Dockerfile
在项目根目录下创建Dockerfile:
# 使用官方Golang镜像作为基础镜像
FROM golang:1.20-alpine AS builder
# 设置工作目录
WORKDIR /app
# 复制Go模块文件
COPY go.mod go.sum ./
# 下载依赖(缓存层,避免每次重新下载)
RUN go mod download
# 复制源代码
COPY . .
# 构建应用(静态编译,无需依赖运行时)
RUN CGO_ENABLED=0 GOOS=linux go build -o myapp .
# 使用轻量级Alpine镜像作为运行时镜像
FROM alpine:latest
WORKDIR /root/
# 复制构建好的二进制文件
COPY --from=builder /app/myapp .
# 暴露端口
EXPOSE 8080
# 运行应用
CMD ["./myapp"]
步骤6.2:构建并推送Docker镜像
在项目根目录下运行以下命令构建镜像:
docker build -t your_dockerhub_username/golang-app:latest .
登录Docker Hub(或其他镜像仓库):
docker login
推送镜像至仓库:
docker push your_dockerhub_username/golang-app:latest
步骤6.3:修改CI配置(以GitLab CI为例)
更新.gitlab-ci.yml中的build和deploy阶段,加入Docker构建与推送步骤:
build:
stage: build
script:
- docker build -t your_dockerhub_username/golang-app:latest . # 构建镜像
- docker push your_dockerhub_username/golang-app:latest # 推送镜像
deploy:
stage: deploy
script:
- ssh user@your_server "docker pull your_dockerhub_username/golang-app:latest && docker stop golang-app || true && docker rm golang-app || true && docker run -d --name golang-app -p 8080:8080 your_dockerhub_username/golang-app:latest" # 拉取最新镜像并重启容器
only:
- main
通过以上步骤,即可在Debian系统上搭建Golang项目的持续集成环境,实现代码提交→自动构建→自动测试→自动部署的全流程自动化。