大家好,我是技術(shù)UP主小傅哥。
2c2g 云服務(wù)器,你占用了83%的內(nèi)存空間!傅哥!Jenkins 用不起呀!我好不容易找對(duì)象要50塊買(mǎi)的一年服務(wù)器,要學(xué)你的項(xiàng)目。現(xiàn)在都被 Jenkins 吃了!


哈哈哈,最近一段時(shí)間跟 CI&CD
工具杠上了,一路調(diào)研和嘗試體驗(yàn)了 Jenkins、GitLab、Drone、CircleCI、TeamCity、Bamboo、Travis CI、Codeship、GoCD、Wercker、Semaphore、Nevercode、Spinnaker、Buildbot... 等十多款風(fēng)格迥異的構(gòu)建部署工具。可以說(shuō) Jenkins 依舊是當(dāng)家老大。所以小傅哥的第一篇 CI&CD
文章則是《用上了 Jenkins,個(gè)人部署項(xiàng)目是真方便!》 但這貨也確實(shí)是嘎嘎占內(nèi)存!
為此,小傅哥今天分享另外一款,輕量、簡(jiǎn)單、好用,還好看的在線(xiàn) CI&CD
工具。直接點(diǎn)點(diǎn)點(diǎn),配置下就能使用了。

咋樣,這款工具看著不錯(cuò)吧。它叫 s 是一款付費(fèi)軟件,但提供了免費(fèi)白皮襖的額度。足夠我們個(gè)人用戶(hù)使用。
本文會(huì)向小伙伴介紹這塊工具的使用操作,方便小白們快速上手。在文末還提供了Java項(xiàng)目學(xué)習(xí),讓小白從實(shí)戰(zhàn)中積累變成經(jīng)驗(yàn)。
一、工具相關(guān)
這款工具號(hào)稱(chēng) 「最易用的CI/CD沒(méi)有之一」,體驗(yàn)過(guò)后我表示,他說(shuō)的對(duì)??!
二、注冊(cè)賬戶(hù)
地址:https://s/sign-up?locale=cn&utm_campaign=

三、添加項(xiàng)目
地址:https://app.s/

- 首先,需要在首頁(yè)選擇【添加項(xiàng)目】,并根據(jù)步驟選擇你的倉(cāng)庫(kù)。
- 之后,這里小傅哥選擇了專(zhuān)用服務(wù)器,填寫(xiě)我的Gitcode倉(cāng)庫(kù)地址。「Gitcode的賬密就是CSDN的賬密」
- 提示:你可以Fork代碼到自己的倉(cāng)庫(kù)進(jìn)行使用 https:///KnowledgePlanet/road-map/xfg-dev-tech-jenkins
四、添加流水線(xiàn)
流水線(xiàn),就跟它的名字一樣,用于構(gòu)建項(xiàng)目所需的一條鏈路流程。如;Maven 構(gòu)建、鏡像打包&發(fā)布、SSH 基本驅(qū)動(dòng)容器啟動(dòng)。也可以是 Maven 構(gòu)建后直接通過(guò) SFTP 把Jar傳遞到 Linux 服務(wù)器,在通過(guò) SSH 鏈接執(zhí)行 Shell 腳本完成 Jar 的鏡像打包和部署。
所以,接下來(lái)我們先來(lái)完成一個(gè)流水線(xiàn)的最基礎(chǔ) Maven 構(gòu)建,之后再分別添加不同類(lèi)型的流水線(xiàn)操作。「Buddy提供了各種插件,你可以分別組合他們進(jìn)行使用,完成項(xiàng)目的部署。」
注意??:流水線(xiàn)上的節(jié)點(diǎn),你可以在右側(cè)的綠色按鈕進(jìn)行關(guān)閉,只執(zhí)行你需要的節(jié)點(diǎn)。比如現(xiàn)在你已經(jīng)知道 Maven 構(gòu)建成功了,只需要推送鏡像。那么可以去掉上一個(gè)節(jié)點(diǎn),這樣速度更快。

1. Docker 流水線(xiàn)
- 說(shuō)明:這條流水線(xiàn)的步驟為;Maven 構(gòu)建、構(gòu)建Docker鏡像、推送Docker鏡像、SSH連接服務(wù)器拉取鏡像和部署。
- 步驟:你可以點(diǎn)擊**小加號(hào)+**,選擇添加不同的流水線(xiàn)節(jié)點(diǎn)。

1.1 構(gòu)建Docker鏡像

1.2 推送Docker鏡像

- 注意??:你已經(jīng)在 https://hub./ 創(chuàng)建了自己的鏡像,比如我的是;fuzhengwei/xfg-dev-tech-jenkins 這樣你的鏡像才能PUSH進(jìn)去。
1.3 SSH連接服務(wù)器拉取鏡像和部署

# 先刪除之前的容器和鏡像文件
if [ "$(docker ps -a | grep xfg-dev-tech-jenkins)" ]; then
docker stop xfg-dev-tech-jenkins
docker rm xfg-dev-tech-jenkins
fi
if [ "$(docker images -q xfg-dev-tech-jenkins)" ]; then
docker rmi xfg-dev-tech-jenkins
fi
docker pull fuzhengwei/xfg-dev-tech-jenkins:2.0
docker run -itd -p 8091:8091 --name xfg-dev-tech-jenkins fuzhengwei/xfg-dev-tech-jenkins:2.0
- 注意:拉取鏡像的速度取決于你的服務(wù)器所在的地區(qū),有時(shí)候會(huì)拉取失敗。如果你的云服務(wù)器拉取鏡像總是失敗?,可以選擇第二個(gè)方式 SSH 流水線(xiàn)。它不需要走到DockerHub,能減少網(wǎng)絡(luò)操作。
2. SSH 流水線(xiàn)
說(shuō)明:這條流水線(xiàn)的步驟為;Maven構(gòu)建、通過(guò) SFTP 上傳構(gòu)建的Jar到云服務(wù)器。之后通過(guò) SSH 執(zhí)行 Shell 腳本,在云服務(wù)器創(chuàng)建出 Dockerfile 「注意路徑」,這樣 Docker鏡像就直接在云服務(wù)器的 Docker上了,不需要在通過(guò) DockerHub 拉取鏡像。最后通過(guò) SSH 執(zhí)行 Shell 腳本啟動(dòng)服務(wù)即可。

2.1 SFTP 上傳Jar

- 配置好傳輸?shù)刂贰⒛繕?biāo)地址,通過(guò) SSH 連接云服務(wù)器進(jìn)行傳輸。
/dev-ops
這個(gè)是云服務(wù)器的地址,你可以自己定義任何的地址。如果文件夾不存在,也會(huì)自動(dòng)創(chuàng)建。
2.2 創(chuàng)建Dockerfile

#!/bin/bash
cd /dev-ops
# 定義Dockerfile的路徑
DOCKERFILE_PATH="https:///images/roadmap/tutorial/Dockerfile"
# 創(chuàng)建Dockerfile并寫(xiě)入內(nèi)容
cat > $DOCKERFILE_PATH << 'EOF'
# 基礎(chǔ)鏡像 openjdk:8-jre-slim
FROM openjdk:8-jre-slim
# 作者
MAINTAINER xiaofuge
# 配置
ENV PARAMS=""
# 時(shí)區(qū)
ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 添加應(yīng)用
ADD target/xfg-dev-tech-app.jar /xfg-dev-tech-app.jar
## 在鏡像運(yùn)行為容器后執(zhí)行的命令
ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /xfg-dev-tech-app.jar $PARAMS"]
EOF
echo "Dockerfile has been created."
- 因?yàn)槲覀儼?Maven 構(gòu)建的 Jar 傳到了云服務(wù)器。所以需要在 Jar 對(duì)應(yīng)的目錄下,創(chuàng)建出 Dockerfile 這樣就可以通過(guò)執(zhí)行 Dockerfile 完成鏡像的構(gòu)建了。
- 此外如果你的代碼庫(kù)配置有 Dockerfile,也可以通過(guò) SFTP 的方式把 Dockerfile 上傳到云服務(wù)器對(duì)應(yīng) Jar 的位置。「我只是幫你選擇了一個(gè)更穩(wěn)的方式」
2.3 運(yùn)行服務(wù)

# 先刪除之前的容器和鏡像文件
if [ "$(docker ps -a | grep xfg-dev-tech-jenkins)" ]; then
docker stop xfg-dev-tech-jenkins
docker rm xfg-dev-tech-jenkins
fi
if [ "$(docker images -q xfg-dev-tech-jenkins)" ]; then
docker rmi xfg-dev-tech-jenkins
fi
cd /dev-ops
docker build -t xiaofuge/xfg-dev-tech-jenkins:1.3 .
docker run -itd -p 8091:8091 --name xfg-dev-tech-jenkins xiaofuge/xfg-dev-tech-jenkins:1.3
cd /dev-ops
進(jìn)入到文件路徑。之后構(gòu)建鏡像和部署。
五、運(yùn)行流水線(xiàn)

- 點(diǎn)擊運(yùn)行,就可以順序的執(zhí)行你的配置的流水線(xiàn)了。如果某個(gè)執(zhí)行失敗也可以重試。
- 如果你執(zhí)行完成3個(gè)節(jié)點(diǎn),最后一個(gè)失敗。那么是可以把前面的流程關(guān)閉,只去驗(yàn)證最后一個(gè)流程。這樣會(huì)更快。
怎么樣,是不是很方便。但要注意,https://app.s - 賬單中,會(huì)記錄你的免費(fèi)額度。
六、更多學(xué)習(xí)
Ci&CD、鏈路監(jiān)控、日志采集、中間件設(shè)計(jì)實(shí)現(xiàn)、分布式技術(shù)棧運(yùn)用,等等這些內(nèi)容都是形成自己技術(shù)棧體系非常重要的一個(gè)個(gè)知識(shí)節(jié)點(diǎn)。只要非常清楚的這些全流程,個(gè)人的技術(shù)之路才會(huì)走的更遠(yuǎn)。