在CentOS上进行Golang持续集成可按以下步骤操作,以Jenkins和GitLab CI为例:
安装Golang
sudo yum install golang
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
选择CI工具
安装插件
在Jenkins管理界面安装:Go Plugin、Git Plugin、Pipeline Plugin。
创建Pipeline Job
pipeline {
agent any
tools {
go 'go1.20' // 配置Go版本
}
stages {
stage('Checkout') {
steps {
git branch: 'main', url: 'https://github.com/your-repo.git'
}
}
stage('Build') {
steps {
sh 'go build -o myapp'
}
}
stage('Test') {
steps {
sh 'go test ./...'
}
}
stage('Deploy') {
steps {
sh './deploy.sh' // 自定义部署脚本
}
}
}
}
触发构建
保存后手动运行或通过Git Webhook自动触发。
创建.gitlab-ci.yml
stages:
- build
- test
- deploy
build:
stage: build
image: golang:1.20
script:
- go mod download
- go build -o myapp
artifacts:
paths:
- myapp
test:
stage: test
image: golang:1.20
script:
- go test -v ./...
deploy:
stage: deploy
image: docker:latest
services:
- docker:dind
script:
- docker build -t my-go-app:latest .
- docker push my-go-app:latest
only:
- main
触发构建
推送代码到GitLab仓库,CI/CD流程自动执行。
go mod download
缓存依赖,减少重复下载。golangci-lint
进行静态代码分析。工具 | 优势 | 适用场景 |
---|---|---|
Jenkins | 插件丰富,支持多步骤流水线 | 复杂企业级项目 |
GitLab CI | 与GitLab深度集成,配置简洁 | GitLab仓库项目 |
Drone | 轻量级,支持Docker原生 | 微服务或云原生项目 |
参考资料: