欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

jenkins配置golang?代碼工程自動發(fā)布的實現(xiàn)方法

 更新時間:2022年07月26日 14:32:45   作者:stefan1240  
這篇文章主要介紹了jenkins配置golang?代碼工程自動發(fā)布,jks是個很好的工具,使用方法也很多,我只用了它簡單的功能,對jenkins配置golang相關(guā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?編寫Tcp服務(wù)器的解決方案

    Golang?編寫Tcp服務(wù)器的解決方案

    Golang?作為廣泛用于服務(wù)端和云計算領(lǐng)域的編程語言,tcp?socket?是其中至關(guān)重要的功能,這篇文章給大家介紹Golang?開發(fā)?Tcp?服務(wù)器及拆包粘包、優(yōu)雅關(guān)閉的解決方案,感興趣的朋友一起看看吧
    2022-10-10
  • Golang內(nèi)存管理之內(nèi)存分配器詳解

    Golang內(nèi)存管理之內(nèi)存分配器詳解

    Go內(nèi)存分配器的設(shè)計思想來源于TCMalloc,全稱是Thread-Caching?Malloc,核心思想是把內(nèi)存分為多級管理,下面就來和大家深入聊聊Go語言內(nèi)存分配器的使用吧
    2023-06-06
  • Go基本數(shù)據(jù)類型的具體使用

    Go基本數(shù)據(jù)類型的具體使用

    本文主要介紹了Go的基本數(shù)據(jù)類型,包括布爾類型、整數(shù)類型、浮點數(shù)類型、復(fù)數(shù)類型、字符串類型,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • Go語言中map使用和并發(fā)安全詳解

    Go語言中map使用和并發(fā)安全詳解

    golang?自帶的map不是并發(fā)安全的,并發(fā)讀寫會報錯,所以下面這篇文章主要給大家介紹了關(guān)于Go語言中map使用和并發(fā)安全的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • Go Asynq異步任務(wù)處理的實現(xiàn)

    Go Asynq異步任務(wù)處理的實現(xiàn)

    Asynq是一個新興的異步任務(wù)處理解決方案,它提供了輕量級的、易于使用的API,本文主要介紹了Go Asynq異步任務(wù)處理的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-06-06
  • vscode如何debug調(diào)試golang代碼

    vscode如何debug調(diào)試golang代碼

    古話說工欲善其事必先利其器,Go語言程序的開發(fā)者而言,當(dāng)下最火的IDE應(yīng)該非微軟的Visual Studio Code莫屬,本文主要介紹了vscode如何debug調(diào)試golang代碼,感興趣的可以了解一下
    2024-03-03
  • Golang實現(xiàn)EasyCache緩存庫實例探究

    Golang實現(xiàn)EasyCache緩存庫實例探究

    這篇文章主要為大家介紹了Golang實現(xiàn)EasyCache緩存庫實例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Golang依賴注入工具digo的使用詳解

    Golang依賴注入工具digo的使用詳解

    這篇文章主要為大家詳細(xì)介紹了Golang中依賴注入工具digo的使用,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-06-06
  • 淺析Golang中Gin框架存在的必要性

    淺析Golang中Gin框架存在的必要性

    在Go語言中,net/http?包提供了一個強(qiáng)大且靈活的標(biāo)準(zhǔn)HTTP庫,那為什么還出現(xiàn)了像?Gin?這樣的,方便我們構(gòu)建Web應(yīng)用程序的第三方庫,下面就來和大家簡單分析一下
    2023-08-08
  • Golang切片和數(shù)組拷貝詳解(淺拷貝和深拷貝)

    Golang切片和數(shù)組拷貝詳解(淺拷貝和深拷貝)

    這篇文章主要為大家詳細(xì)介紹一下Golang切片拷貝和數(shù)組拷貝,文中有詳細(xì)的代碼示例供大家參考,需要的可以參考一下
    2023-04-04

最新評論