jenkins在虛擬機(jī)中安裝
1.1 背景介紹
Jenkins 是一款流行的開源持續(xù)集成(Continuous Integration)工具,廣泛用于項(xiàng)目開發(fā),具有自動(dòng)化構(gòu)建、測試和部署等功能。
Jenkins官網(wǎng): http://jenkins-ci.org/
Jenkins 特征
- 開源的Java語言開發(fā)持續(xù)集成工具,支持持續(xù)集成,持續(xù)部署。
- 易于安裝部署配置:可通過yum安裝,或下載war包以及通過docker容器等快速實(shí)現(xiàn)安裝部署,可方便web界面配置管理。
- 消息通知及測試報(bào)告:集成RSS/E-mail通過RSS發(fā)布構(gòu)建結(jié)果或當(dāng)構(gòu)建完成時(shí)通過e-mail通知,生成JUnit/TestNG測試報(bào)告。
- 分布式構(gòu)建:支持Jenkins能夠讓多臺(tái)計(jì)算機(jī)一起構(gòu)建/測試。
- 文件識(shí)別:Jenkins能夠跟蹤哪次構(gòu)建生成哪些jar,哪次構(gòu)建使用哪個(gè)版本的jar等。
- 豐富的插件支持:支持?jǐn)U展插件,你可以開發(fā)適合自己團(tuán)隊(duì)使用的工具,如git,svn,maven,docker等。
1.2 安裝
普通虛擬機(jī)安裝參考: https://www.jianshu.com/p/400b4516b98e
docker化安裝參考: https://developer.aliyun.com/article/892646
1.3 使用
首先我們想實(shí)現(xiàn)的是flask一個(gè)后端服務(wù)的自動(dòng)化部署, 我的后端服務(wù)是部署在docker上的, 所以要先知道docker的一些簡單命令, 我這里就不細(xì)說了. 直接開用
flask 服務(wù) app.py 代碼如下
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
@app.route('/health')
def health_checking():
ret = {'status': 'UP'}
return jsonify(ret)
@app.route('/hello')
def hello_chen():
return 'Hello, chen!'
@app.route('/index')
def index():
return 'Index!'
@app.route('/ckk')
def ckk():
return 'Chenkeke'
DockerFile 文件如下, 意思就是用 gunicorn 啟動(dòng)flask 的 app 然后用5001端口進(jìn)行訪問
FROM python:3.8
RUN pip install --no-cache-dir -i http://mirrors.aliyun.com/pypi/simple/ \
--trusted-host mirrors.aliyun.com Flask gunicorn
ADD . /app
ENV GUNICORN_CMD_ARGS="--bind=0.0.0.0:5001 --chdir=./app/ --workers=4"
CMD ["gunicorn", "app:app"]
這兩個(gè)文件配置好之后, 需要上傳到gitlab上面, 如圖
配置好服務(wù)器的ssh在gitlab上面, 這樣可以直接通過ssh拉取(不過不配也沒關(guān)系, 我是通過http拉的項(xiàng)目)
配完之后可以試試能不能在服務(wù)器上把項(xiàng)目拉取下來, 然后通過DockDile起個(gè)任務(wù)看看能不能成功運(yùn)行這個(gè)項(xiàng)目, 直接進(jìn)到拉取的文件下編譯(注意是同一層)
docker build -t your_image_name .
成功之后會(huì)生成一個(gè)鏡像, 然后執(zhí)行鏡像
docker run -d --name test -p 5001:5001 your_image_name
打開網(wǎng)頁看看, 成功執(zhí)行
關(guān)閉容器,且刪除這個(gè)鏡像, 不然后面的時(shí)候會(huì)報(bào)錯(cuò)
可以了的話就進(jìn)行下一步配置Jenkins, Jenkins的端口安裝好了之后默認(rèn)是8080, 可以先觀察一下界面熟悉一下. 沒問題之后,我們點(diǎn)擊新建一個(gè)工作流
- 配置gitlab的賬號(hào)密碼, 拉取代碼的倉庫
- 選擇構(gòu)建后操作,執(zhí)行shell
執(zhí)行shell的步驟, 可以自行百度意思
#!/bin/bash
echo "hello chen"
# 關(guān)閉docker項(xiàng)目
IMAGE_NAME="company_flask"
CONTAINER_NAME="my_container"
PORT_MAPPING="5001:5001"
WORKSPACE_PATH="/var/lib/jenkins/workspace/demo"
# 檢查容器是否已經(jīng)在運(yùn)行中
if [ "$(docker ps -q -f name=$CONTAINER_NAME)" ]; then
echo "Stopping existing $CONTAINER_NAME container..."
docker stop $CONTAINER_NAME
fi
# 檢查是否存在名為 $IMAGE_NAME 的 Docker 鏡像
if docker images | awk '{print $1}' | grep -q "^$IMAGE_NAME$"; then
# 如果存在,則刪除該鏡像
echo "Deleting existing $IMAGE_NAME image..."
docker rmi $IMAGE_NAME
fi
# 檢查是否存在名為 $CONTAINER_NAME 的 Docker 容器
if docker ps -a | awk '{print $NF}' | grep -q "^$CONTAINER_NAME$"; then
# 如果存在,則刪除該容器
echo "Deleting existing $CONTAINER_NAME container..."
docker rm $CONTAINER_NAME
fi
# 進(jìn)入工作目錄并構(gòu)建新的 Docker 鏡像
cd $WORKSPACE_PATH
docker build -t $IMAGE_NAME .
# 啟動(dòng)新的 Docker 容器
echo "Starting new $CONTAINER_NAME container..."
docker run -d --name $CONTAINER_NAME -p $PORT_MAPPING $IMAGE_NAME
然后點(diǎn)擊保存, 這時(shí)候就應(yīng)該開始構(gòu)建了, 查看構(gòu)建的歷史
查看控制臺(tái)輸出
成功。然后在本文編輯文件中新增一個(gè)接口并推送到遠(yuǎn)端git, 然后重新構(gòu)建看一下。
上傳code
看看git有沒有上傳成功
然后登錄jenkins 重新構(gòu)建鏡像
查看構(gòu)建歷史
選擇最近的一次構(gòu)建
查看控制臺(tái)輸出,可以看到已經(jīng)將最新的代碼拉取下來了
看看能不能訪問到接口
文章來源:http://www.zghlxwxcb.cn/news/detail-438799.html
也是成功的?,F(xiàn)在已經(jīng)可以使用自動(dòng)部署了,但是是半自動(dòng)部署的.因?yàn)檫€需要登錄jenkins然后手動(dòng)構(gòu)建 目前還是不完善的.
因?yàn)閖enkins是本地的 git用的是網(wǎng)上的gitlab 所以不能形成一個(gè)閉環(huán). 所以下一次博客會(huì)將gitlab和jenkins都用docker部署起來.然后完成一個(gè)全自動(dòng)的自動(dòng)化部署.文章來源地址http://www.zghlxwxcb.cn/news/detail-438799.html
到了這里,關(guān)于jenkins的安裝和配置(flask結(jié)合jenkins半自動(dòng)化部署流程)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!