docker : Jenkins 拉取 Gitee 代碼撼短,構(gòu)建鏡像啟動并上傳私服(支持版本回滾)

docker : Jenkins 拉取 Gitee 代碼塞蹭,構(gòu)建鏡像啟動并上傳私服

1. 環(huán)境準(zhǔn)備工作

# Linux 系統(tǒng)
root@ubuntu:/usr/local/docker/registry# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.2 LTS
Release:    18.04
Codename:   bionic

# docker 版本
root@ubuntu:/usr/local/docker/registry# docker version
Client: Docker Engine - Community
 Version:           20.10.12
 API version:       1.41
 Go version:        go1.16.12
 Git commit:        e91ed57
 Built:             Mon Dec 13 11:45:27 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.12
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.12
  Git commit:       459d0df
  Built:            Mon Dec 13 11:43:36 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.12
  GitCommit:        7b11cfaabd73bb80907dd23182b9347b4245eb5d
 runc:
  Version:          1.0.2
  GitCommit:        v1.0.2-0-g52b36a2
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
  
  # docker-compose 版本
root@ubuntu:/usr/local/docker/registry# docker-compose version
Docker Compose version v2.2.0

2. gitee 創(chuàng)建倉庫與項(xiàng)目

gitee 參考地址: https://gitee.com/onnoA/jenkins_test.git

2.1. 新建項(xiàng)目

image-20220110020639051
image-20220110020743571

2.2. 本地克隆項(xiàng)目,并并將自己準(zhǔn)備的測試項(xiàng)目復(fù)制進(jìn)去署穗,并上傳 gitee

image-20220110020911196

項(xiàng)目創(chuàng)建 docker 目錄, docker 目錄下新建文件 Dockerfile 、docker-compose.yml

image-20220110021244088

Dockerfile

FROM openjdk:8-jre
MAINTAINER onnoa <onnoaheng@163.com>

ENV APP_VERSION 1.0.0-SNAPSHOT
ENV DOCKERIZE_VERSION v0.6.1
RUN wget https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
    && tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz \
    && rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz

RUN mkdir /app

COPY jenkins_test-$APP_VERSION.jar /app/app.jar
ENTRYPOINT ["dockerize", "-timeout", "5m", "-wait", "tcp://192.168.40.129:3306", "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app/app.jar"]

EXPOSE 8090

docker-compose.yml

version: '3.1'
services:
  jenkins_test:
    image: 192.168.40.129:5000/jenkins_test:v1.0.0
    container_name: jenkins_test
    ports:
      - 8090:8090

2.3. 創(chuàng)建標(biāo)簽

image-20220110021027903
image-20220110021125758

3. 基于 docker-compose 安裝 registry

3.1. 新建目錄

mkdir -p /usr/local/docker/registry
# 進(jìn)入目錄
cd /usr/local/docker/registry

3.2. 新建 docker-compose.yml 文件

vi docker-compose.yml

docker-compose.yml 文件內(nèi)容

version: '3.1'
services:
  registry:
    image: registry
    restart: always
    container_name: registry
    ports:
      - 5000:5000
    volumes:
      - /usr/local/docker/registry/data:/var/lib/registry

3.3. 啟動 docker-compose.yml

docker-compose up -d

3.4. 頁面訪問

http://ip:5000/v2/
image

3.5. 配置 docker registry 客戶端

/etc/docker/daemon.json 中增加如下內(nèi)容(如果文件不存在請新建該文件)

{
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ],
  "insecure-registries": [
    "ip:5000"
  ]
}

<strong style="color:red;"> 注意:該文件必須符合 json 規(guī)范丰捷,否則 Docker 將不能啟動。</strong>

重新啟動服務(wù)寂汇。

sudo systemctl daemon-reload
sudo systemctl restart docker

檢查客戶端配置是否生效

docker info
# 返回以下內(nèi)容則說明配置生效
Insecure Registries:
192.168.40.129:5000
image-20220110015823565

4. docker 安裝 jenkins與配置

4.1. 基于docker-compose 安裝 jenkins

新建目錄

mkdir -p /usr/local/docker/jenkins

jenkins 目錄下新增 docker-compose.yml 文件

vi docker-compose.yml

docker-compose.yml 文件內(nèi)容

version: '3.1'
services:
  jenkins:
    restart: always
    image: jenkins/jenkins:latest-jdk8
    container_name: jenkins
    ports:
      # 發(fā)布端口
      - 8085:8080
      # 基于 JNLP 的 Jenkins 代理通過 TCP 端口 50000 與 Jenkins master 進(jìn)行通信
      - 50000:50000
    environment:
      TZ: Asia/Shanghai
    volumes:
      - ./data:/var/jenkins_home

在jenkins 目錄下使用 docker-compose up 命令啟動 jenkins病往。若第一次啟動失敗。則通過命令修改數(shù)據(jù)卷權(quán)限

chown -R 1000 /usr/local/docker/jenkins/data

頁面訪問 jenkins : http://ip:8085

查看初始密碼

# 第一種查看密碼方式
docker logs jenkins
# 第二種
cat /usr/local/docker/jenkins/data/secrets/initialAdminPassword

4.2. jenkins 頁面配置

4.2.1. 插件安裝

選擇安裝插件:

image

需要安裝的插件

Dashboard View
Publish over SSH
Maven Integration plugin
Locale 本地化插件 (顯示中文)
Extended Choice Parameter 動態(tài)參數(shù)插件(支持一鍵回滾)

若在線無法安裝相應(yīng)的插件骄瓣,可選擇離線安裝的方式停巷, Jenkins 離線插件下載目錄

<strong style="color:red;"> **注意:若選擇的插件安裝失敗,則先進(jìn)入下一步榕栏,創(chuàng)建 jenkins 用戶畔勤,進(jìn)入jenkins 頁面再進(jìn)行插件的安裝。系統(tǒng)管理 --》插件管理 扒磁,搜索插件進(jìn)行安裝即可庆揪。 **</strong>

4.2.2. 基礎(chǔ)配置

4.2.2.1. 本地化

中文本地化: 系統(tǒng)管理 -》 系統(tǒng)設(shè)置 -》 Locale

image-20220110011323560
4.2.2.2. 配置 Public Over SSH

配置 open ssh: 系統(tǒng)管理 -》 系統(tǒng)設(shè)置 -》Publish over SSH (需要安裝Publish over SSH插件成功才會有此選項(xiàng)) -》 新增

image-20220110011845279

高級 -》 輸入服務(wù)器密碼

image-20220110012044971

下拉,點(diǎn)擊 Test Connection 渗磅,若左邊返回成功嚷硫,則說明能成功連接上該服務(wù)器

[圖片上傳失敗...(image-173e15-1641782109458)]

4.2.2.3. 安裝 jdk 與 maven

Jenkins 安裝 Java 與 Maven

javamaven 的jar上傳到j(luò)enkins的宿主機(jī)路徑:/usr/local/docker/jenkins/data目錄。并進(jìn)行解壓始鱼。

解壓:

tar -zxvf xxx.tar.gz
# 文件分享連接: https://pan.baidu.com/s/1f6dA0jobOY2SIMGy2IHgiA 密碼:zhnb 
  • 安裝 jdk

系統(tǒng)管理-》global tool configuration(通用工具配置)-》JDK 安裝 -》新增jdk

image-20220110013442683
  • 安裝 maven

系統(tǒng)管理-》global tool configuration(通用工具配置)-》JDK 安裝 -》新增 maven

image-20220110013500408
4.2.2.4. 配置 jenkins 與 gitee 的免密登錄

配置 jenkins 與 gitee 免密登錄

  • 交互式進(jìn)入 Jenkins 容器
docker exec -it jenkins /bin/bash
  • 生成 SSH KEY
ssh-keygen -t rsa -C "your_email@example.com"

一直回車...
  • 查看公鑰
cat /var/jenkins_home/.ssh/id_rsa.pub
  • 復(fù)制公鑰到 Gitee

訪問 gitee 倉庫 -》 頭像 -》 設(shè)置 -》 SSH公鑰

  • 手動克隆一次項(xiàng)目仔掸,該步驟的主要作用是為了生成和服務(wù)器的驗(yàn)證信息

克隆之前,交互式進(jìn)入 jenkins docker exec -it jenkins /bin/bash医清。 cd 回車起暮,后再 git clone gitee 項(xiàng)目地址, 過程種輸入 yes , 此操作是為了拿到 cd .ssh/目錄下的known_hosts文件会烙。

4.2.2.5. jenkins 配置項(xiàng)目(分兩次配置項(xiàng)目)
  • jenkins 第一次配置項(xiàng)目

新建任務(wù) -》構(gòu)建一個Maven 項(xiàng)目(并輸入項(xiàng)目名稱: 如 jenkins_test) -》

image-20220110014141343
image-20220110014209674

<strong style="color:red;">注意: git 配置的地址需要是配置gitee項(xiàng)目的 ssh 項(xiàng)目地址负懦。</strong>

image-20220110095709615
image-20220110014309329
  • jenkins 第二次配置
image-20220110014405712

Extended Choice Paramter Name: RELEASE_VERSION

Basic Parameter Types: Single Select

Choose Source for Value: Groovy Script

源碼管理: 無

Post Steps: Run regardless of build result

Execute shell 命令: shell 腳本如下

Add post-build step: Send files or execute commands over SSH

SSH Server Name: 選擇配置的 Public Over SSH 服務(wù)器(即要部署該項(xiàng)目的服務(wù)器)

Transfer Set
Source files: **/*.jar,docker/**

  Remote directory: jenkins_test(項(xiàng)目名稱,主要是當(dāng)部署項(xiàng)目是柏腻,在部署目錄 /usr/local/deploy 下能夠根據(jù)項(xiàng)目名進(jìn)行區(qū)分)

  Exec command: linux 執(zhí)行命令如下

Groovy 腳本

def ver_keys = [ 'bash', '-c', 'cd /var/jenkins_home/workspace/jenkins_test;git pull>/dev/null; git remote prune origin >/dev/null; git tag -l|sort -r |head -10 ' ]
ver_keys.execute().text.tokenize('\n')

shell 腳本

echo $RELEASE_VERSION
cd /var/jenkins_home/workspace/jenkins_test
git checkout $RELEASE_VERSION
git pull origin $RELEASE_VERSION
mvn clean install

Linux 執(zhí)行命令

cd /usr/local/deploy/jenkins_test
cp target/jenkins_test-1.0.0-SNAPSHOT.jar docker
cd docker
docker build -t 192.168.40.129:5000/jenkins_test:v1.0.0 .
docker push 192.168.40.129:5000/jenkins_test:v1.0.0
docker-compose down
docker-compose up -d
docker image prune -f
image-20220110014449210
image-20220110014513041
image-20220109205123872
image-20220110014841070
image-20220110100357605

選擇前面配置的 Public Over SSH 服務(wù)器(即要部署的服務(wù)器)

Exec command

cd /usr/local/deploy/jenkins_test
cp target/jenkins_test-1.0.0-SNAPSHOT.jar docker
cd docker
docker build -t 192.168.40.129:5000/jenkins_test:v1.0.0 .
docker push 192.168.40.129:5000/jenkins_test:v1.0.0
docker-compose down
docker-compose up -d
docker image prune -f

進(jìn)行構(gòu)建: 點(diǎn)擊進(jìn)入項(xiàng)目 --》 Build with Paramters(參數(shù)化構(gòu)建)纸厉,我們就可以根據(jù) gitee 項(xiàng)目中配置的標(biāo)簽進(jìn)行版本發(fā)布與回滾。如五嫂,我現(xiàn)在有 v1.0.0 與 v1.0.1 兩個版本颗品,當(dāng) v1.0.1 有問題時肯尺,我可以回滾到 v1.0.0 版本

image-20220109205438120
image-20220109205452480
image-20220109205516987
image-20220110103153864
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市躯枢,隨后出現(xiàn)的幾起案子则吟,更是在濱河造成了極大的恐慌,老刑警劉巖锄蹂,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氓仲,死亡現(xiàn)場離奇詭異,居然都是意外死亡得糜,警方通過查閱死者的電腦和手機(jī)敬扛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來掀亩,“玉大人舔哪,你說我怎么就攤上這事欢顷〔酃鳎” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵抬驴,是天一觀的道長炼七。 經(jīng)常有香客問我,道長布持,這世上最難降的妖魔是什么豌拙? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮题暖,結(jié)果婚禮上按傅,老公的妹妹穿的比我還像新娘。我一直安慰自己胧卤,他們只是感情好唯绍,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著枝誊,像睡著了一般况芒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上叶撒,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天绝骚,我揣著相機(jī)與錄音,去河邊找鬼祠够。 笑死压汪,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的古瓤。 我是一名探鬼主播止剖,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了滴须?” 一聲冷哼從身側(cè)響起舌狗,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎扔水,沒想到半個月后痛侍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡魔市,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年主届,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片待德。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡君丁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出将宪,到底是詐尸還是另有隱情绘闷,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布较坛,位于F島的核電站印蔗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏丑勤。R本人自食惡果不足惜华嘹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望法竞。 院中可真熱鬧耙厚,春花似錦、人聲如沸岔霸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽秉剑。三九已至泛豪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間侦鹏,已是汗流浹背诡曙。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留略水,地道東北人价卤。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像渊涝,于是被迫代替她去往敵國和親慎璧。 傳聞我的和親對象是個殘疾皇子床嫌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容