點擊「Golang在發光」,關注我們
點擊文末「閱讀原文」解鎖資料
jenkins服務拉取github上的項目
構建golang項目並生成docker鏡像[jenkins調用的是宿主機上的docker環境,如何調用的,後面會說明]
啟動golang項目的docker鏡像
docker的安裝這裡就不說了
Makefile
run:
docker run \
-u root \
-d \
-p 8088:8080 \
-p 50000:50000 \
-e TZ="Asia/Shanghai" \
-v /Users/chen/data/docker/jenkins:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/local/bin/docker:/usr/bin/docker \
--name jenkins \
jenkins/jenkins:lts說明:-v /Users/chen/data/docker/jenkins:/var/jenkins_home 掛載jenkins的home目錄,jenkins安裝的插件,拉取的項目代碼都在這個目錄裡-v /var/run/docker.sock:/var/run/docker.sock與-v /usr/local/bin/docker:/usr/bin/docker 掛載這兩個文件就能在docker容器內訪問宿主機上的docker。官方文檔裡有說明
make run1.安裝後訪問http://127.0.0.1:8088/login
2.獲取登錄密碼
docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword3.選擇「選擇插件來安裝」[ 插件安裝很慢,參考 Jenkins安裝插件提速]
4.選擇插件
5.添加憑據[Jenkins>憑據>系統>全局憑據]
用於拉取github上的代碼
需要在jenkins容器裡生成ssh
# 進入容器
docker exec -it jenkins bash
# 生成ssh,一路回車就行了
ssh-keygen -t rsa
# 獲取密鑰,下圖Private Key的值
cat ~/.ssh/id_rsa
# 獲取公鑰,加入到github的 SSH keys 裡
cat ~/.ssh/id_rsa.pub
6.全局工具配置[Jenkins>全局工具配置]
7.創建任務
(1). 創建任務
(2). 設置參數與源碼管理。VERSION會在構建docker容器時用到,相當項目版本號;Git> Credentialst選擇第5步創建的憑據
(3). 構建環境與構建
Dockerfile
FROM alpine:latest
RUN mkdir -p /app
WORKDIR /app
ADD main /app/main
EXPOSE 9999
CMD ["./main"]cd $WORKSPACE
export GOPROXY=https://goproxy.io
go mod tidy
# 列印依賴,部署成功後查看版本依賴是否如預期
cat ./go.mod
cd ./app/test/http
# linux環境編譯
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o main
# 構建docker鏡像,項目中需要在當前目錄下有dockerfile,否則構建失敗
docker build -t qicmsg/test/demo:$VERSION .
rm -rf main
docker rm http_test -f
docker run --name http_test -p 9999:9999 -d qicmsg/test/demo:$VERSION
8.開始構建項目
到這裡整體流程就走完了。docker container ls 就能看到剛啟動的容器了。
註:在實際中,通常是jenkins是一臺伺服器,運行golang項目的是一臺獨立的伺服器(集群可以用k8s來部署)。在jenkins構建項目後,構建docker鏡像docker build 並提交到docker倉庫docker push。然後在7.(3)步的構建後操作通過ssh來執行遠端命令部署項目本文作者:cqims21
原文連結:https://blog.csdn.net/cqims21/article/details/104797234