中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

武平縣網(wǎng)站建設(shè)搜索引擎競價廣告

武平縣網(wǎng)站建設(shè),搜索引擎競價廣告,軟件最全的應(yīng)用商店,慈利縣建設(shè)局網(wǎng)站目錄 一、實(shí)驗(yàn) 1.環(huán)境 2.GitLab 更新deployment文件 3.GitLab更新共享庫前端項(xiàng)目CI與CD流水線 4.K8S查看前端項(xiàng)目版本 5.Jenkins 構(gòu)建前端項(xiàng)目 6.Jenkins 再次構(gòu)建前端項(xiàng)目 二、問題 1. Jenkins 構(gòu)建CI 流水線報(bào)錯 2. Jenkins 構(gòu)建CI 流水線彈出腳本報(bào)錯 3. Jenkins…

目錄

一、實(shí)驗(yàn)

1.環(huán)境

2.GitLab 更新deployment文件

3.GitLab更新共享庫前端項(xiàng)目CI與CD流水線

4.K8S查看前端項(xiàng)目版本

5.Jenkins 構(gòu)建前端項(xiàng)目

6.Jenkins 再次構(gòu)建前端項(xiàng)目

二、問題

1. Jenkins 構(gòu)建CI 流水線報(bào)錯

2. Jenkins 構(gòu)建CI 流水線彈出腳本報(bào)錯

3. Jenkins 構(gòu)建CD 流水線報(bào)錯

4.URL中特殊字符實(shí)現(xiàn)哪些功能

5.sed如何實(shí)現(xiàn)替換特殊字符


?

?

一、實(shí)驗(yàn)

1.環(huán)境

(1)主機(jī)

表1 主機(jī)

主機(jī)架構(gòu)版本IP備注
master1K8S master節(jié)點(diǎn)1.20.6192.168.204.180

jenkins slave

(從節(jié)點(diǎn))

node1K8S node節(jié)點(diǎn)1.20.6192.168.204.181?
node2K8S node節(jié)點(diǎn)1.20.6192.168.204.182?
jenkins

?jenkins主節(jié)點(diǎn)? ? ??

2.414.2192.168.204.15:8080

?gitlab?runner

(從節(jié)點(diǎn))

?harbor私有倉庫1.2.2192.168.204.15?
gitlab

gitlab 主節(jié)點(diǎn)???????

12.10.14192.168.204.8:82

jenkins slave

(從節(jié)點(diǎn))

?sonarqube9.6192.168.204.8:9000?

?

2.GitLab 更新deployment文件

(1)項(xiàng)目新建目錄,用于存放上傳的deployment 替換文件

61c1cbe42f2d49a39e69240126b465b4.png0302eeaaa9314db0b00609479c98cf34.png

(2)準(zhǔn)備更新模板文件deployment.yaml

 __APPNAME__(應(yīng)用名稱)對應(yīng)Jenkins作業(yè)名稱__NAMESPACE__ (名稱空間)  對應(yīng)業(yè)務(wù)名稱__INAGENAME__(鏡像名稱) 

(3)更新完成

601bde8c1f414594be88b29fad1cd1b1.png

(4)項(xiàng)目目錄如下:

6a39dfb70567465d913ec49e65801f4f.png

?

3.GitLab更新共享庫前端項(xiàng)目CI與CD流水線

(1)查看項(xiàng)目架構(gòu)

623fb835973a495c830c9ec5b72a42f8.png

(2)更新K8S CI流水線 (k8sci.jenkinsfile)

@Library("mylib@master") _
import org.devops.*def checkout = new Checkout()
def build = new Build()
def unittest = new UnitTest()
def sonar = new Sonar()
def gitlabutil = new Gitlab()pipeline {agent { label "build"}options {skipDefaultCheckout true}stages{stage("Checkout"){steps{script {println("GetCode")checkout.GetCode("${env.srcUrl}","${env.branchName}")}}}stage("build"){steps{script{println("Build")build.CodeBuild("${env.buildTool}")}}}stage("UnitTest"){steps{script{println("Test")unittest.CodeTest("${env.buildTool}")}}}stage("SonarScan"){steps {script {groupName = "${JOB_NAME}".split("/")[0]projectName ="${JOB_NAME}".split("/")[-1].split("_")[0]sonar.CodeSonar("${env.buildTool}",projectName,groupName)}}}stage("PushImage"){steps {script {repoName = "${JOB_NAME}".split("/")[0]projectName ="${JOB_NAME}".split("/")[-1].split("_")[0]env.registry = "192.168.204.15"env.imageName = "${env.registry}/${repoName}/${projectName}:${env.branchName}"withCredentials([usernamePassword(credentialsId: '8c662308-4991-4576-9826-74a5417de685', passwordVariable: 'DOCKER_PASSWD', usernameVariable: 'DOCKER_USER')]) {sh """#重寫HTML首頁echo "${env.imageName}" > dist/index.html #構(gòu)建鏡像docker build -t ${env.imageName} .#登錄鏡像倉庫docker login -u ${DOCKER_USER} -p ${DOCKER_PASSWD} ${env.registry}#上傳鏡像docker push  ${env.imageName}#刪除鏡像sleep 2docker rmi ${env.imageName}"""}}}}stage("ReleaseFile"){steps{script{// 獲取模板文件fileData = gitlabutil.GetRepoFile(22,"deployment.yaml", "master")sh "rm -fr deployment.yaml"writeFile file: 'deployment.yaml', text: fileData// 替換模板文件內(nèi)容namespace = "${JOB_NAME}".split("/")[0]appName ="${JOB_NAME}".split("/")[-1].split("_")[0]sh """sed -i 's#__PORT__#${env.port}#g' deployment.yamlsed -i 's#__APPNAME__#${appName}#g' deployment.yamlsed -i 's#__NAMESPACE__#${namespace}#g' deployment.yamlsed -i 's#__IMAGENAME__#${env.imageName}#g' deployment.yaml"""// 上傳替換后的版本文件(新建文件或者更新文件)newYaml = sh returnStdout: true, script: 'cat deployment.yaml'println(newYaml)//更新gitlab文件內(nèi)容base64Content = newYaml.bytes.encodeBase64().toString()// 會有并行問題,同時更新報(bào)錯try {gitlabutil.UpdateRepoFile(22,"${appName}%2f${env.branchName}.yaml",base64Content, "master")} catch(e){gitlabutil.CreateRepoFile(22,"${appName}%2f${env.branchName}.yaml",base64Content, "master")}}}}}}

(3)更新K8S CD流水線 (k8scd.jenkinsfile)

@Library("mylib@master") _
import org.devops.*def gitlabbutil = new Gitlab()
env.groupName = "${JOB_NAME}".split("/")[0]
env.projectName ="${JOB_NAME}".split("/")[-1].split("_")[0]pipeline {agent { label "k8s"}options {skipDefaultCheckout true}stages{stage("GetDeployFile"){steps{script {env.appName = "${env.projectName}"env.deployFile = "${env.appName}/${env.branchName}.yaml"//println("GetCode")fileData = gitlabbutil.GetRepoFile(22,"${env.appName}%2f${env.branchName}.yaml", "master")//println(fileData)sh "rm -fr ${env.deployFile}"writeFile file: "${env.deployFile}", text: fileData//sh "ls -l; cat deployment.yaml"sh "ls -l "}}}stage("DeployAPP"){steps{script{env.namespace = "${env.groupName}"sh """## 發(fā)布應(yīng)用kubectl apply -f ${env.deployFile} -n ${env.namespace}"""// 獲取應(yīng)用狀態(tài)5.times{sh "sleep 2; kubectl -n ${env.namespace}  get pod | grep ${env.appName} "}}}}stage("RollOut"){input {message "是否進(jìn)行回滾"ok "提交"submitter "david,aa"parameters {choice(choices: ['yes','no'], name: 'opts')}}steps{script{switch ("${opts}"){case "yes":sh " kubectl rollout undo deployment/${env.appName} -n ${env.namespace}"breakcase "no":break}}}}}
}

4.K8S查看前端項(xiàng)目版本

(1)外部測試訪問(當(dāng)前版本為1.1.7)

# curl http://devops03-devops-ui.devops.com:31291

32d8f31c58604548bdd6cc611ab8295d.png

(2)??另開一個終端用watch命令觀察pod變化

# watch -n 1 "kubectl get pod -n devops03"

d96aae45ce34497591dc6de5697a69c5.png

47a29171ffd848509def7e5d120697d6.png

?

5.Jenkins 構(gòu)建前端項(xiàng)目

(1)Jenkins給前端項(xiàng)目CI流水線添加參數(shù)添加字符參數(shù)port

196fbfedc0c74af294f3ddba9543342e.png

(2)Jenkins給前端項(xiàng)目CD流水線添加參數(shù)添加字符參數(shù)branchNameab052818e67444dfaf556bb479cd11b4.png

?

(3) 構(gòu)建前端項(xiàng)目CI流水線

4e61d5320ba74b25a254f2b0788afe8d.png

(4)成功

657b576137aa4d3d8a6331d25eada137.png

5203e2aeeb5f4120bad2a3deb55945a2.png

?

(5)GitLab查看deployment部署文件已自動上傳(RELEASE-1.1.5.yaml)

434f94317f334b50a9796c0feabb9a4e.png

(6)?構(gòu)建前端項(xiàng)目CD流水線d1c81cb7941f44e5854bffaf7f6b2f64.png

(7) 觀察pod變化

8fdf0d54fe094e7fb1fb2982237a138d.pngca0e8e4c9e01415aae78c449fde74bd3.png45782720009a44cd85d92180f2f26bd6.png7e827018b4be476fb283aea9b6c353b1.png

(8)外部測試訪問(當(dāng)前版本為1.1.5)

# curl http://devops03-devops-ui.devops.com:31291

26984850e4ae42cb85ff70b1384dea00.png

(9)不進(jìn)行回滾

300eb1721dff471b8e6c1b6173b81891.png

(10)完成

4df8695a8cf14ac5be378553274eb472.png

?

6.Jenkins 再次構(gòu)建前端項(xiàng)目

(1)?構(gòu)建前端項(xiàng)目CI流水線

9fee5006590e468ca6e533cda043c8c6.png

(2)成功

7b527348e58943108ab98d44150c0e10.png4f64c6b568344c90adc1139a8714ba19.png

(3)GitLab查看deployment部署文件已自動上傳(RELEASE-1.1.6.yaml)

580bf6ea655c4bf3a44640955f355896.png

(4) 構(gòu)建前端項(xiàng)目CD流水線bce3be17b9234b3ab77ca4bd400d4919.png

(5) 觀察pod變化

1688804adfca4414ad42046457ddd287.png8fd04a1ced684c0a8a53da51b3a90468.pngd51cfaf94d5d4ee8aab483ce4555ed36.png

(6)外部測試訪問(當(dāng)前版本為1.1.6)

# curl http://devops03-devops-ui.devops.com:31291

d3f58ce4df0740eca5618712df063206.png

(7)不進(jìn)行回滾

e9b689b356944152a69688dbd0f8dbd8.png

(8)完成

654e375590794adf80c7af252b620e2b.png

?

二、問題

1. Jenkins 構(gòu)建CI 流水線報(bào)錯

(1)報(bào)錯

acdbe0abbb2448f69f539cf8f8bfc43f.png

(2)原因分析

函數(shù)名錯誤

(3)解決方法

修改函數(shù)名。

修改前:

c992530857914cc4b17c0812f0a39723.png

修改后:

b6b8a6fd3a634c7bbdbd28d7022b1b2e.png

?

?

2. Jenkins 構(gòu)建CI 流水線彈出腳本報(bào)錯

(1)報(bào)錯

dac675a89db84b22ba0cf1a0429db99a.png

(2)原因分析

script不允許使用靜態(tài)方法

(3)解決方法

運(yùn)行script使用靜態(tài)方法

根據(jù)彈出提示頁面,點(diǎn)擊進(jìn)入。

fc79c8d85a7f496ca4afdf809f215b5b.png

點(diǎn)擊Approve

8b9cd0905d99413db07ea1c0a35fe636.png

完成

91619c37d02244ee825946f230503240.png

重寫構(gòu)建項(xiàng)目成功

39907b913566440889afda475addf7a6.png

3. Jenkins 構(gòu)建CD 流水線報(bào)錯

(1) 報(bào)錯

f0191d23859141a59087d93bd2538cb7.png

(2)原因分析

yaml文件格式錯誤

(3)解決方法

修改deploymeny模板文件

修改前:

02616c8eeb1c4e1eada1e0e6423e5fa9.png

修改后:

841077c010824c1589c62e1ec3fa5d7c.png

成功:

be3873f0b9da4f7386c365cc8c36caf2.png

?

4.URL中特殊字符實(shí)現(xiàn)哪些功能

(1)URL特殊字符

?
有些符號在URL中是不能直接傳遞的,如果要在URL中傳遞這些特殊符號,那么就要使用他們的編碼了。
編碼的格式為:%加字符的ASCII碼,即一個百分號%,后面跟對應(yīng)字符的ASCII(16進(jìn)制)碼值。例如 空格的編碼值是"%20"。
如果不使用轉(zhuǎn)義字符,這些編碼就會當(dāng)URL中定義的特殊字符處理。?

(2)URL特殊符號及編碼 十六進(jìn)制值

1) + URL 中+號表示空格 %2B
2) 空格 URL中的空格可以用+號或者編碼 %20
3) / 分隔目錄和子目錄 %2F
4) ? 分隔實(shí)際的 URL 和參數(shù) %3F
5) % 指定特殊字符 %25
6) # 表示書簽 %23
7) & URL 中指定的參數(shù)間的分隔符 %26
8) = URL 中指定參數(shù)的值 %3D

5.sed如何實(shí)現(xiàn)替換特殊字符

(1)普通操作可以使用冒號(:)井號(#)正斜杠(/)來作為分隔符

sed -i 's#abc#def#g'  geng.file  ---將文件geng中的abc替換成defcat geng.file | sed  's/abc/def/g'   ---打印文件geng,并將其中的abc替換成def

(2)對于變量做替換

sed 若是單引號括起來的,變量上得再額外加個單引號才能引用生效;

? ? ? ?若是雙引號括起來的,可直接引用生效。

1)舉例
pa='127.0.0.1/32'; field='ip_allow=123'; \
echo $field | sed 's#^ip_allow=.*#ip_allow=${pa}#g' 結(jié)果:ip_allow=${pa}  --變量替換未生效2)更改
echo $field | sed 's#^ip_allow=.*#ip_allow='${pa}'#g'結(jié)果:ip_allow=127.0.0.1/323)更改
echo $field | sed "s#^ip_allow=.*#ip_allow=${pa}#g"結(jié)果:ip_allow=127.0.0.1/32

(3)?特殊字符替換,反斜杠、正斜杠、雙引號、$符

單個轉(zhuǎn)義:多加個反斜杠做轉(zhuǎn)義即可:反斜杠(\\)、正斜杠(\/)、雙引號(\")

單轉(zhuǎn)多個:參考如下列表

表2 特殊字符轉(zhuǎn)換

實(shí)現(xiàn)目標(biāo)方法能否用單引號還是雙引號括起來
單引號雙引號為什么
反斜杠(\)替換成兩個反斜杠(\\)

sed -i 's#\\#\\\\#g' file

或sed -i 's:\\:\\\\:g' file

×反斜杠用雙引號括起來會報(bào)錯
反斜杠(\)替換成正斜杠(/)sed -i 's#\\#\/#g' file×反斜杠用雙引號括起來會報(bào)錯
雙引號(")替換成兩個雙引號("")

sed -i 's#\"#\"\"#g' file

sed -i "s#\"#\"\"#g" file

?
單引號(')替換成兩個單引號('')sed -i "s#'#''#g" file×不能用單引號括起來,分不清了
($)替換成\$sed -i 's:\$:\\\$:g' file×不能用雙引號,否則會認(rèn)為是$(正則匹配結(jié)尾位置)行的結(jié)果追加字符呢

(4)curl時用的變量,sed轉(zhuǎn)化

curl -H 'Content-Type: application/json' -X POST -d?參數(shù)(參數(shù)中涉及到特殊字符都得轉(zhuǎn)義,而且要多轉(zhuǎn)一層,即$得轉(zhuǎn)成\\$,才能原封不動的供后續(xù)使用)
#值替換單引號、反斜杠、雙引號 curl的時候用,多一層轉(zhuǎn)義,所以\要用\\sed -i "s#'#''#g" ${file}      ---單引號要轉(zhuǎn)成兩個單引號sed -i 's#\\#\\\\\\\\#g' ${file}    ---反斜杠sed -i "s:\":\\\\\":g" ${file}      ---雙引號sed -i 's:\$:\\\\\$:g' ${file}    ---$符

curl引用參數(shù)的這種形式有兩種寫法:

1)直接引用單個參數(shù)變量
curl -H 'Content-Type: application/json' -X POST -d '{"type":"0","name":" ' ${pa_name} ' "}'
這種需要對變量額外加上一個單引號,才能引用生效。2)整個參數(shù)變量作為一個整體(推薦)
param="{\"type\":\"0\", \"name\":\"${pa_name}\"}"
curl -H 'Content-Type: application/json' -X POST -d "${param}"

?

?

http://www.risenshineclean.com/news/29238.html

相關(guān)文章:

  • seo優(yōu)化價格seo1搬到哪里去了
  • 樂清網(wǎng)站設(shè)計(jì)公司哪家好百度 營銷中心
  • 哈爾濱自助建站模板網(wǎng)站推廣軟件
  • 萊蕪金點(diǎn)子信息港最新招聘信息港南寧seo優(yōu)化公司
  • 山東濟(jì)南網(wǎng)站建設(shè)公司深圳公司網(wǎng)絡(luò)推廣該怎么做
  • 酒類網(wǎng)站建設(shè)方案百度推廣客戶端手機(jī)版
  • 網(wǎng)站推廣計(jì)劃怎么寫青島 google seo
  • 唐山網(wǎng)站建設(shè)哪家優(yōu)惠2000元代理微信朋友圈廣告
  • 單頁面網(wǎng)站制作視頻線上推廣方案怎么寫
  • 投訴做網(wǎng)站的電話長沙seo 優(yōu)化選智投未來no1
  • 網(wǎng)站建設(shè)與管理課程代碼寧波seo關(guān)鍵詞優(yōu)化方法
  • 安化建設(shè)局網(wǎng)站微信營銷策略有哪些
  • 知名電子商務(wù)網(wǎng)站英雄聯(lián)盟世界排名
  • 帶視頻的網(wǎng)站模板免費(fèi)數(shù)據(jù)分析網(wǎng)站
  • 安全達(dá)標(biāo)建設(shè)網(wǎng)站鄭州計(jì)算機(jī)培訓(xùn)機(jī)構(gòu)哪個最好
  • 燕郊建設(shè)局網(wǎng)站建網(wǎng)站專業(yè)
  • 展示型網(wǎng)站舉例seo專員崗位職責(zé)
  • 專業(yè)建站是什么百度2019舊版本下載
  • 前端seo主要優(yōu)化哪些seo優(yōu)化是什么
  • 如何做網(wǎng)站微信支付鄭州百度快照優(yōu)化
  • 電子商務(wù)系統(tǒng) 網(wǎng)站建設(shè)百度教育會員
  • 開源網(wǎng)站github最近一周國內(nèi)熱點(diǎn)新聞
  • 濰坊網(wǎng)站建設(shè)公司有哪些內(nèi)容網(wǎng)店培訓(xùn)教程
  • 個人興趣圖片集網(wǎng)站建設(shè)b站推廣鏈接
  • 網(wǎng)站頁面描述深圳網(wǎng)絡(luò)營銷推廣招聘網(wǎng)
  • 主流網(wǎng)站開發(fā)語言企業(yè)網(wǎng)站有哪些功能
  • 價錢網(wǎng)站建設(shè)百度官方網(wǎng)首頁
  • 做商城網(wǎng)站公司seo刷關(guān)鍵詞排名軟件
  • 網(wǎng)站建設(shè)歷史友情鏈接推廣平臺
  • 個人網(wǎng)站做電影網(wǎng)站南京seo排名優(yōu)化公司