jenkins配置golang?代碼工程自動發(fā)布的實現(xiàn)方法
前沿
以前go工程都是在我mac上打包成鏡像然后再推到我的docker hub上去,每次更新都要經(jīng)過打包->推送到dockert倉庫->目前服務(wù)重新拉取容器;最近項目代碼量很大,頻繁更新,終于忍不住了,決定把jks得用起來,這樣可以解放下雙手。注:我們jks直接安裝在內(nèi)網(wǎng)硬件服務(wù)器上(centos7.9)。
一、在jenkins宿主機(jī)上配置go環(huán)境;
1、安裝go;
#1.下載golang wget https://golang.google.cn/dl/go1.16.3.linux-amd64.tar.gz #2.安裝 tar -xf go1.16.3.linux-amd64.tar.gz -C /usr/local/
2、配置環(huán)境變量
1、vi /etc/profile
GO111MODULE=on GO_PATH=/data/go GOPROXY=https://mirrors.aliyun.com/goproxy/ GO_HOME=/usr/local/go GO_ROOT=/usr/local/go
讓配置文件立即生效:soruce /etc/profile
打印環(huán)境變量:printenv |grep GO
GO_PATH=/data/go
GOPROXY=https://mirrors.aliyun.com/goproxy/
GO_HOME=/usr/local/go
GO_ROOT=/usr/local/go
3、驗證環(huán)境是否可用
自己建個go工程,寫個hello world 看是否能夠go run main.go
二、jenkis上配置項目
配置步驟:
1、jks上新建項目
新建Item-> Freestyle project
2、“源碼管理”菜單添加git信息
3、“構(gòu)建”-》增加構(gòu)建步驟-》Execute shell
執(zhí)行我的shell腳本;腳本的內(nèi)容有:
(1)編譯go代碼;
我的環(huán)境變量都沒有在jks上配置,因此我需要用/usr/local/go/bin/go來執(zhí)行命令(GO_ROOT 是 /usr/local/go)。
此外,我build go代碼的時候,在前面加了“CGO_ENABLED=0”。這個是用來解決容器找不到我的可執(zhí)行程序的問題(會報錯:“/bin/sh: xxxnot found”)
(2)打包成鏡像并且推送到倉庫;
(3)通過ansible在開發(fā)服務(wù)器上執(zhí)行刪除容器啟動新容器腳本;
ansible 不會用的自己百度查下,這個是用來執(zhí)行遠(yuǎn)程服務(wù)器的命令,運維同學(xué)肯定很熟悉。
我需要遠(yuǎn)程服務(wù)器,刪除當(dāng)前容器,并且重新拉去鏡像并運行。
git checkout $GIT_TAG echo "-------------build go project-------------------------" export GOPROXY=https://mirrors.aliyun.com/goproxy/ /usr/local/go/bin/go mod tidy CGO_ENABLED=0 /usr/local/go/bin/go build -o gw_micro_service main.go #push docker image to docker hub echo "-------------push docker image to docker hub-------------------------" docker build -t gw_micro_service . docker tag gw_micro_service harbor.zaitugongda.com:5000/stefan/gw_micro_service:latest docker push harbor.zaitugongda.com:5000/stefan/gw_micro_service:latest if [ $? -eq 0 ] then echo "push ok" else echo "push faild" fi echo "-------------remote servcie restart docker-------------------------" ip='47.106.89.198' ansible $ip -m shell -a "bash /data/gw_micro_service/rebuildDocker.sh"
4、如何使用jks的功能
jks非常靈活,我這里使用的jks并沒有安裝什么插件(docker 和go插件),只是用到j(luò)ks的兩個功能:
1)、從git上拉代碼;
2)、執(zhí)行我的shell腳本;腳本的內(nèi)容有:
(1)編譯go代碼;
(2)打包成鏡像并且推送到倉庫;
(3)通過ansible在開發(fā)服務(wù)器上執(zhí)行刪除容器啟動新容器腳本;
其它:
如果你只想生成可執(zhí)行程序并且在遠(yuǎn)端允許(不想要docker),那么你只要在腳本里面寫入:
(1)編譯代碼;
(2)通過ansbile推送可執(zhí)行程序到你目標(biāo)服務(wù)器
(3)ansible 執(zhí)行遠(yuǎn)端的腳本(你可以在里面寫重啟的相關(guān)命令)。
5、調(diào)試方法
我配置jks的時候遇到兩個問題:
1、在jks拉取代碼后,打包的可執(zhí)行程序在centos 下能夠運行,但是打包到鏡像后,執(zhí)行報錯(“/bin/sh: xxxnot found”),通過百度,在編譯時語句前面加了CGO_ENABLED=0。
2、打包成鏡像的shell命令報錯
jks拉取的代碼存放在:/var/lib/jenkins/workspace 目錄下。如果碰到問題了,我們可以自己在這個目錄下手動調(diào)試。舉例:
我構(gòu)建了一個jks 工程“gw_micro_service”。你可以在這個目錄下手動執(zhí)行jks上的那個shell命令,遇到啥問題可先在這個目錄下調(diào)試好。
總結(jié):
jks是個很好的工具,使用方法也很多,我只用了它簡單的功能;其實這些我也可以寫個腳本,在我mac上一鍵升級遠(yuǎn)端程序。但是這樣不方便協(xié)同辦公。
到此這篇關(guān)于jenkins配置golang 代碼工程自動發(fā)布的文章就介紹到這了,更多相關(guān)jenkins配置golang內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang實現(xiàn)EasyCache緩存庫實例探究
這篇文章主要為大家介紹了Golang實現(xiàn)EasyCache緩存庫實例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01