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獲?。┘癛unner描述、標簽(如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
獲?。┩瓿砂惭b。
步驟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項目的持續集成環境,實現代碼提交→自動構建→自動測試→自動部署的全流程自動化。