一、Jenkins參數構建詳解
1、創建job
1.1 點擊配置,勾選參數化構建
1.2、點擊添加參數,有下面這些參數
2 、文本參數
2.1 構建參數
2.2、構建
2.3、輸出結果
其余參數的使用都差不多...
3、分支列表參數
3.1、添加參數
可以根據版本或者其他類型構建,可以部署對應的分支
if(NUMBER1.equals("上海市")){
return ["徐匯區","青浦區","浦東區"]
}else {
return ["朝陽區","海淀區","昌平區"]
}
4、級聯參數
4.1、第一個參數
先寫上級聯第一個參數
4.2、第二個參數
根據Referenced parameters:NUMBER1設置返回什么
達成的效果,可以根據參數1那兒下面的參數
5、憑據類型
5.1、添加憑據
5.2、使用憑據
之后直接構建即可,去[root@jenkins ~]# cd /var/lib/jenkins/workspace/Django 目錄中查看是否拉取代碼
二、構建觸發器
1、推送分支時構建
並且下面的秘密令牌也要添加到gitlab
2、在gitlab中添加
但是會報錯需要設置一個東西,選中下面的
最后gitlab一點測試提交,Jenkins都會構建
三、部署Django
需要准備一個服務器
1、准備環境
1、安裝python3和uwsgi
yum install python3 python3-devel -y
pip3 install django==2.2.2
pip3 install uwsgi
2、創建用戶
[root@k8s-node-01 opt]# groupadd www -g 666
[root@k8s-node-01 opt]# useradd www -u 666 -g 666 -r -M -s /sbin/nologin
3、創建目錄
mkdir /opt/linux
4、並且項目配置文件修改
ALLOWED_HOSTS = ['*']
DATABASES = {
}
2、遠程鏈接
1、在Jenkins服務器上配置私鑰
[root@jenkins Django]# ssh-keygen
2、把私鑰添加到圖形化界面里的私鑰,添加如下
3、給測試服務器做免密,不然鏈接不上
[root@jenkins Django]# ssh-copy-id root@192.168.15.102
在系統配置最下方設置
4、配置構件化操作
5、上傳配置文件:myweb.ini
[uwsgi]
# 端口號
socket = :8000
# 指定項目的目錄
chdir = /opt/linux
# wsgi文件路徑
wsgi-file = linux/wsgi.py
# 模塊wsgi路徑
module = linux.wsgi
# 是否開啟master進程
master = true
# 工作進程的最大數目
processes = 4
# 結束后是否清理文件
vacuum = true
# 指定PID文件路徑
pidfile = /var/run/linux.pid
# 以守護進程方式運行的日志路徑
daemonize = /var/log/uwsgi.log
# 服務停止時自動移除unix Socket和pid文件
vacuum = true
5、構建
6、構建成功安裝nginx代理
1、安裝nginx
yum install nginx -y
2、修改nginx配置
[root@k8s-node-01 linux]# vim /etc/nginx/conf.d/django.conf
server {
# 監聽的端口
listen 80;
# 配置域名
server_name bbs.test.com;
# 配置路徑
location / {
# 加載Nginx代理uwsgi的配置項
include uwsgi_params;
# 指定uwsgi的訪問地址
uwsgi_pass 127.0.0.1:8000;
# 連接uwsgi的超時時間
uwsgi_read_timeout 2;
# 自定義uwsgi代理項目的路徑及配置項
uwsgi_param UWSGI_SCRIPT linux.wsgi;
# 指定python項目的路徑
uwsgi_param UWSGI_CHDIR /opt/linux;
# 索引文件
index index.html index.htm;
# 客戶端上傳文件的最大值
client_max_body_size 35m;
}
}
3、測試
[root@k8s-node-01 linux]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@k8s-node-01 linux]# systemctl restart nginx
成功代理
四、流水線
1、創建流水線
2、流水線語法
# 流水線
pipeline {
agent any # 在當前環境運行,any:當前環境
# 階段
stages {
# 步驟
stage('Hello') {
steps {
echo 'Hello World'
}
}
}
}
3、創建環境
創建標簽
4、拉取代碼
把下面生成的腳本添加到上邊里面
5、切換分支
6、構建后操作
7、最后構建腳本
pipeline {
agent any
stages {
stage('拉取代碼') {
steps {
git credentialsId: '581c633b-5bba-4f2c-aa03-162f887dcef7', url: 'git@192.168.15.104:linux/linux.git'
}
}
stage('切換分支') {
steps {
sh '''#!/bin/bash
git checkout $GIT_TAG'''
}
}
stage('部署代碼') {
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: 'k8s-node-01', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''#!/bin/bash
cd /opt/linux
if [ -f /var/run/linux.pid ];then
/usr/local/bin/uwsgi --reload /var/run/linux.pid
else
/usr/local/bin/uwsgi --uid 666 --gid 666 myweb.ini
fi''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '**/**')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
}
}
}
}
部署成功
8、測試
五、流水線的賦值
1、先創建一個倉庫
2、復制鏈接到Jenkins並且創建流水線
把秘鑰添加到下面
3、創建流水線之拉取代碼
4、切換分支
5、編譯
6、部署完畢