国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

自動化部署實(shí)踐 (Jenkins+Git+Docker+阿里云k8s)

這篇具有很好參考價(jià)值的文章主要介紹了自動化部署實(shí)踐 (Jenkins+Git+Docker+阿里云k8s)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1 概述

項(xiàng)目前期部署都是手動部署,所以相關(guān)工具基本都已經(jīng)安裝,主要使用的工具有:

使用Gitlab管理代碼
使用Maven打包
使用Docker構(gòu)建鏡像(已經(jīng)有相關(guān)的DockerFile文件)
在阿里云kubernetes上部署。

所以,在這次自動化部署過程中,需要做的是安裝Jenkins并完成相關(guān)配置,然后通過流水線腳本(Pipeline Script)將整個(gè)部署過程粘合起來。

因此本文不涉及Maven和Docker等工具的安裝部署,僅記錄部署過程中Jenkins相關(guān)配置和流水線腳本設(shè)計(jì)。

2 部署Jenkins

1)安裝包下載:Jenkins下載地址:Download | Jenkins
自動化部署實(shí)踐 (Jenkins+Git+Docker+阿里云k8s)
2)將文件上傳到安裝目錄下,然后路徑切換到該目錄下,進(jìn)行安裝

rpm -ivh jenkins-2.386-1.1.noarch.rpm

3)在/etc/init.d/jenkins文件中配置JDK信息,保證有 $JAVA_HOME/bin/java信息即可自動化部署實(shí)踐 (Jenkins+Git+Docker+阿里云k8s)

3)啟動程序

systemctl start Jenkins

注意:Jenkins默認(rèn)的端口是8080,如果存在端口沖突,可以在啟動前修改 /etc/sysconfig/jenkins文件中JENKINS_PORT信息
自動化部署實(shí)踐 (Jenkins+Git+Docker+阿里云k8s)

4)在瀏覽器中訪問,可以正常打開即部署成功。然后通過提示信息,查看初始密碼,復(fù)制進(jìn)去即可登錄,然后選擇安裝推薦插件,或者自定義要安裝的插件,或者直接跳過插件安裝均可。本次安裝采用的是安裝推薦插件。

其他說明:

  • 注意根據(jù)不同的系統(tǒng)下載不同的版本,Linux版本查看和版本關(guān)系可網(wǎng)上搜索
  • 部署Jenkins也可以通過Docker方式,但在 RedHat 系列(RHEL、CentOS、Fedora 等)的 Linux 通過Docker部署Jenkins后,在Jenkins腳本中運(yùn)行 docker命令時(shí)會因?yàn)?SELinux 而報(bào)錯(cuò) docker: not found(有資料說可以通過安裝selinux-dockersock 【GitLab地址】解決,但是我安裝后還是報(bào)錯(cuò),因此就放棄了使用docker部署Jenkins)。另外使用Docker部署Jenkins,因?yàn)槿萜鲀?nèi)無法直接訪問本機(jī)的資源,需要提前規(guī)劃好資源掛載,然后在Docker中做好環(huán)境變量配置,或者在Docker容器內(nèi)重新部署新的工具,如Maven??傊褂肈ocker部署Jenkins會遇到較多問題,建議對Docker不熟悉的話,不要使用Docker進(jìn)行部署。
  • 在部署完成后,啟動Jenkins后沒有找到初始密碼文件,于是把Jenkins卸載后,重新進(jìn)行了部署?!究蓞⒖嘉恼隆俊?/li>
  • 本文的部署過程較為簡略,不同的環(huán)境部署中可能會遇到不同的問題,可以通過查閱其他的資料解決?!究蓞⒖嘉恼隆?/li>

3 配置Jenkins

3.1 配置Gitlab的免密訪問

1. 首先在Jenkins部署的服務(wù)器上生成密鑰:
因?yàn)閖enkins是使用jenkins用戶運(yùn)行的,使用root用戶生成ssh密鑰的話會可能會導(dǎo)致Jenkins沒有訪問權(quán)限導(dǎo)致出現(xiàn) stderr: Host key verification failed的問題,所以先切換到j(luò)enkins用戶下,生成ssh密鑰

su -s /bin/bash jenkins
ssh-keygen -t rsa

2. 復(fù)制生成的公鑰到Gitlab
使用命令cat .ssh/id_rsa.pub,查看公鑰內(nèi)容,并將內(nèi)容復(fù)制過去,點(diǎn)擊Add key完成新增。
自動化部署實(shí)踐 (Jenkins+Git+Docker+阿里云k8s)
3. 復(fù)制私鑰到Jenkins
使用命令cat .ssh/id_rsa,查看私鑰內(nèi)容,并將內(nèi)容復(fù)制到Jenkins的憑據(jù)中,見下圖。注意復(fù)制私鑰的內(nèi)容要完整,需要包含前后-------的兩行內(nèi)容
自動化部署實(shí)踐 (Jenkins+Git+Docker+阿里云k8s)
自動化部署實(shí)踐 (Jenkins+Git+Docker+阿里云k8s)

ID可手動填寫,也可不填寫,不填寫時(shí)系統(tǒng)會自動生成。
Username即憑據(jù)名稱,可手動填寫,也可不填寫,系統(tǒng)默認(rèn)是登錄用戶名。

4. 以上配置完成后,還需要一個(gè)步驟,避免Jenkins第一次訪問Gitlab失敗。這里有2個(gè)方法可以,選擇其一即可。

  • 第一個(gè)方法:
    在linux上手動訪問一下Gitlab,使用命令見下
git ls-remote -h git@####.git HEAD

注意:git@####.git為自己倉庫地址,第一次運(yùn)行時(shí)提示yes/no 輸入yes即可*

  • 第二個(gè)方法:

修改Jenkins的安全配置,在Manage Jenkins >> Configure Global Security 找到Git Host Key Verification Configuration,修改為No verification。保存
自動化部署實(shí)踐 (Jenkins+Git+Docker+阿里云k8s)

3.2 配置對阿里云k8s的訪問

1. 登錄阿里云,打開對應(yīng)集群詳情頁面,切到【連接信息】,復(fù)制憑證信息。在本地新建一個(gè)空txt文件,粘貼進(jìn)去,保存,修改文件名稱為kubectl.conf。
自動化部署實(shí)踐 (Jenkins+Git+Docker+阿里云k8s)
2. 在Jenkins中配置憑證。選擇上傳剛才的kubectl.conf文件,ID這里自定義了一個(gè)名稱。
自動化部署實(shí)踐 (Jenkins+Git+Docker+阿里云k8s)

3.3 添加Jenkins全局變量

1. 添加JAVA_HOME
自動化部署實(shí)踐 (Jenkins+Git+Docker+阿里云k8s)

2. 添加M2_HOME
自動化部署實(shí)踐 (Jenkins+Git+Docker+阿里云k8s)
3. 添加PATH+EXTRA
自動化部署實(shí)踐 (Jenkins+Git+Docker+阿里云k8s)

3.4 全局工具配置Maven

使用指定的settings.xml文件
自動化部署實(shí)踐 (Jenkins+Git+Docker+阿里云k8s)

4 創(chuàng)建Job和編寫腳本

4.1 創(chuàng)建Job

新建任務(wù)-填寫任務(wù)名稱,選擇流水線-點(diǎn)擊確認(rèn)
自動化部署實(shí)踐 (Jenkins+Git+Docker+阿里云k8s)

4.2 編寫腳本

1)腳本框架構(gòu)建

根據(jù)當(dāng)前項(xiàng)目部署過程,先把腳本基本框架寫好。每一個(gè)具體的項(xiàng)目可能不一樣,根據(jù)實(shí)際的情況寫。

pipeline {

	agent any

	stages {
		stage('0.前置構(gòu)建'){
			steps {
				script{
					echo "前置構(gòu)建"
				}
			}	
		}
			
		stage('1.拉取代碼'){
			steps {
				sh """
					echo "拉取代碼"
				"""			
			}
		}
		
		stage('2.編譯程序'){
			steps {
				sh """
					echo "編譯程序"
				"""
			}      
		}
		
		stage('3.鏡像打包上傳'){
			steps {
				script{
					sh """
						echo "鏡像打包上傳"
					"""
				}
			}
		}
		
		stage('4.發(fā)布'){
			steps {
				script{
					sh """
						echo "部署程序"
					"""
				}			
			}
		}
	}			
}
2)前置工作

一般項(xiàng)目設(shè)計(jì)合理,從拉取代碼開始就可以了,我們的這個(gè)項(xiàng)目因?yàn)橐恍┰?,需要有一個(gè)前置構(gòu)建,但是又不是每一次都是必須的,這里需要添加一個(gè)參數(shù),進(jìn)行控制,另外前置構(gòu)建,需要另建一個(gè)Job,完成拉取和編譯代碼工作。這里前置構(gòu)建我起名叫pre-build,依然采用流水線方式構(gòu)建。腳本結(jié)構(gòu)如下:

pipeline {

    agent any

    stages {
		
        stage('1.拉取代碼'){
            steps {
                cleanWs()
				checkout scmGit(branches: [[name: '*/master']], extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'parentProject']], userRemoteConfigs: [[credentialsId: 'Gitlab', url: 'git@git.***.com.cn:test/parentProject.git']])
				checkout scmGit(branches: [[name: '*/dev']], extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'childProject1']], userRemoteConfigs: [[credentialsId: 'Gitlab', url: 'git@git.***.com.cn:test/childProject1.git']])							
            }
        }
			
		stage('2.編譯程序'){
            steps {
				sh """
					cd ${WORKSPACE}/parentProject/
                    mvn clean install
                """
            }      
        }
    }
}

執(zhí)行一下構(gòu)建,成功。
自動化部署實(shí)踐 (Jenkins+Git+Docker+阿里云k8s)

3)stage0中配置的參數(shù)

返回當(dāng)前Job的配置頁面,完成stage0的配置項(xiàng),首選勾選【參數(shù)化構(gòu)建】,選擇布爾值參數(shù),然后填寫名稱,勾選指定默認(rèn)值,并進(jìn)行友好的描述說明,保存。
自動化部署實(shí)踐 (Jenkins+Git+Docker+阿里云k8s)
自動化部署實(shí)踐 (Jenkins+Git+Docker+阿里云k8s)

4)完善stage0的腳本
pipeline {

    agent any
	
	parameters {
        booleanParam(name:"pre-build", defaultValue:"true", description:"是否進(jìn)行前置構(gòu)建:勾選為是,不勾選為否,默認(rèn)為是")
    }
		
	stages {
		stage('0.前置構(gòu)建'){
			steps {
				script{
					if (pre-build){
						build job: "pre-build"
					}
				}	
			}	
		}
				
		stage('1.拉取代碼'){
			steps {
				sh """
					echo "拉取代碼"
				"""			
			}
		}
			
		stage('2.編譯程序'){
			steps {
				sh """
					echo "編譯程序"
				"""
			}      
		}
			
		stage('3.鏡像打包上傳'){
			steps {
				script{
					sh """
						echo "鏡像打包上傳"
					"""
				}
			}
		}
		
		stage('4.發(fā)布'){
			steps {
				script{
					sh """
						echo "部署程序"
					"""
				}			
			}
		}
	}			
}

構(gòu)建一下,成功。

5)完善stage1的腳本

首先是清空工作空間,然后拉取代碼

stage('1.拉取代碼'){
	steps {
		cleanWs()
		checkout scmGit(branches: [[name: '*/dev']], extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'childProject3']], userRemoteConfigs: [[credentialsId: 'Gitlab', url: 'git@git.***.com.cn:test/childProject3.git']])
	}
}

構(gòu)建一下,成功。

6)完善stage2的腳本

進(jìn)行編譯打包。

stage('2.編譯程序'){
	steps {
		sh '''
			cd ${WORKSPACE}/childProject3/
			mvn clean install
		'''
	}      
}
7)完善stage3的腳本。
stage('3.鏡像打包上傳'){
	steps {
		script{
			DateTime=sh(returnStdout: true, script: 'date "+%Y%m%d%H%M"').trim()
			sh """
				chmod 777 ${WORKSPACE}/childProject3/*
				./buildAndPush.sh dokerfileName tagName-${DateTime}
			"""
		}
	}
}

其中buildAndPush.sh完成Docker構(gòu)建和鏡像推送,文件內(nèi)容為

# bulid和push

docker build -f Dockerfile-$1 -t $1:$2 .

docker login -u 'robot' -p 'hjsafhjjjdkk' http://harbor.***.com.cn
docker tag $1:$2 harbor.***.com.cn/test/$1:$2
docker push harbor.***.com.cn/test/$1:$2

# 清理本地鏡像
docker rmi $1:$2
docker rmi harbor.***.com.cn/test/$1:$2

因?yàn)楸卷?xiàng)目之前已經(jīng)存在腳本和Dockerfile,所以直接沿用了,其他項(xiàng)目中,如果可以直接使用命令進(jìn)行鏡像打包和上傳,可采用如下命令:

docker  build   -t  harbor***.com.cn/test/imageName: tagName-${DateTime} .  && docker push  harbor.***.com.cn/test/ imageName: tagName-${DateTime}
8)完善stage4的腳本
stage('4.發(fā)布'){
	steps {
		script{
			withKubeConfig(caCertificate: '', clusterName: '', contextName: '', credentialsId: 'k8s-config', namespace: 'nameSpaceofchildProject3', restrictKubeConfigAccess: false, serverUrl: 'https://***:6443'){
			sh """
			kubectl set image deployment/childProject3 childProject3=harbor***.com.cn/test/imageName: tagName-${DateTime}  -n nameSpaceofchildProject3
			kubectl rollout status deployment/childProject3 -n nameSpaceofchildProject3
			"""
			}			
		}
	}
}

腳本中的 nameSpaceofchildProject3 可以從阿里云上【集群列表】-【應(yīng)用管理】,搜索相呼應(yīng)的名稱,查看命名空間
自動化部署實(shí)踐 (Jenkins+Git+Docker+阿里云k8s)

4.3 優(yōu)化腳本

通過添加一些參數(shù),把腳本變得更為通用一些,可以更為方便的復(fù)用到其他工程上。如

String server_name= env.JOB_NAME.toLowerCase()
String dockerbuild_filename = "###"
String tag_name = "###"

可根據(jù)項(xiàng)目的實(shí)際情況進(jìn)行設(shè)置。文章來源地址http://www.zghlxwxcb.cn/news/detail-448520.html

到了這里,關(guān)于自動化部署實(shí)踐 (Jenkins+Git+Docker+阿里云k8s)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • docker+jenkins自動化部署springboot項(xiàng)目

    docker+jenkins自動化部署springboot項(xiàng)目

    阿里云服務(wù)器1核2GB java 1.8.0._371 maven apache-maven3.8.8 git 1.8.3.1 docker和jenkins在一臺服務(wù)器上,環(huán)境的配置,對于java和maven可以自己下載對應(yīng)tar包進(jìn)行配置,記得配置環(huán)境,也可以使用yum進(jìn)行安裝。記得配置/etc/profile后source一下: source /etc/profile Maven記得修改鏡像?。?! 在本地創(chuàng)建

    2024年02月03日
    瀏覽(33)
  • Docker + Jenkins + Nginx實(shí)現(xiàn)前端自動化部署

    Docker + Jenkins + Nginx實(shí)現(xiàn)前端自動化部署

    文章有點(diǎn)長,如果你是以學(xué)習(xí)的態(tài)度來看這篇文章,建議收藏起來慢慢看。 前端自動化部署一直以來概念很清楚知道怎么回事,但是其中怎么操作沒怎么研究過,雖然之前環(huán)境都搭起來了,但是也只是Jenkins構(gòu)建項(xiàng)目成功,比如提交代碼之后怎么觸發(fā)自動構(gòu)建,打包后的文件

    2024年02月05日
    瀏覽(22)
  • Jenkins+Docker+Gitee搭建自動化部署平臺

    Jenkins+Docker+Gitee搭建自動化部署平臺

    目錄 服務(wù)器準(zhǔn)備 Docker安裝 yum 包更新到最新 設(shè)置yum源 安裝docker 啟動和開機(jī)啟動 驗(yàn)證安裝是否成功 Jenkins安裝 拉取鏡像 創(chuàng)建映射目錄 運(yùn)行鏡像 運(yùn)行出錯(cuò) 修正權(quán)限 重新運(yùn)行鏡像 新建安全組,放通8080端口 激活Jenkins Jenkins插件 Jenkins全局工具配置 自動構(gòu)建Springboot項(xiàng)目 準(zhǔn)備好

    2024年02月04日
    瀏覽(56)
  • Docker + Jenkins 自動化部署若依項(xiàng)目

    Docker + Jenkins 自動化部署若依項(xiàng)目

    前言 對著此文章操作之前,確保服務(wù)器上的Java環(huán)境(JDK、MySQL、Redis、Jenkins以及Linux安裝Maven)已經(jīng)裝好,如果沒有裝好,參考我之前的文章。 注意: 如果服務(wù)器上自己裝的又 Nginx ,需要手動停了,要不會導(dǎo)致80端口被占用 1:首先,到若依官網(wǎng)拉去若依分離版項(xiàng)目 2:拉完之后

    2024年04月16日
    瀏覽(39)
  • Docker 自動化部署(實(shí)踐)

    Docker 自動化部署(實(shí)踐)

    docker search jenkins查看需要的jenkins鏡像源 docker pull jenkins/jenkins 拉取jenkins鏡像 docker images查看下載的鏡像源 docker ps 查看包含啟動以及未啟動的容器 docker ps -a查看啟動的容器 docker rm 容器id/容器名稱 刪除容器 docker rm -f 容器id/容器名稱 刪除容器(強(qiáng)制刪除容器,運(yùn)行狀態(tài)也刪除

    2024年02月07日
    瀏覽(50)
  • Gitlab + Docker + Jenkins + Harbor實(shí)現(xiàn)自動化部署

    Gitlab + Docker + Jenkins + Harbor實(shí)現(xiàn)自動化部署

    目錄 文章目錄 前言 一、第一臺服務(wù)器--Jenkins 1、安裝前 2、安裝Jenkins 3、修改正在跑容器的端口 4、Jenkins內(nèi)部插件和配置? 二、第二臺服務(wù)器--Harbor 1、安裝docker-compose 2.安裝及配置 3、卸載Harbor? 4、Harbor啟動后操作 三、第三臺服務(wù)器--生產(chǎn)環(huán)境? 1、配置私服地址 四、Jenkin

    2024年02月14日
    瀏覽(23)
  • Docker+Jenkins+Gitee自動化部署maven項(xiàng)目

    Docker+Jenkins+Gitee自動化部署maven項(xiàng)目

    各位看官老爺,本文為Jenkins實(shí)戰(zhàn),注重實(shí)際過程,閱讀完會有以下收獲: 了解如何使用Docker安裝Jenkins 了解如何使用Jenkins部署maven項(xiàng)目 了解如何使用Jenkins+Gitee實(shí)現(xiàn)自動化部署 相信,正在讀這篇文章的你,對Jenkins應(yīng)該有或多或少的了解,就算沒有也應(yīng)該在某個(gè)地方聽說過。??

    2024年02月07日
    瀏覽(30)
  • jenkins+docker實(shí)現(xiàn)可持續(xù)自動化部署springboot項(xiàng)目

    目錄 一、前言 二、微服務(wù)帶來的挑戰(zhàn) 2.1 微服務(wù)有哪些問題

    2024年04月15日
    瀏覽(42)
  • Jenkins+GitLab+Docker搭建前端自動化構(gòu)建鏡像容器部署

    Jenkins+GitLab+Docker搭建前端自動化構(gòu)建鏡像容器部署

    前言 ?? 需提前安裝環(huán)境及知識點(diǎn): 1、Docker搭建及基礎(chǔ)操作 2、DockerFile文件描述 3、Jenkins搭建及基礎(chǔ)點(diǎn) ?? 目的: 將我們的前端項(xiàng)目打包成一個(gè)鏡像容器并自動發(fā)布部署,可供隨時(shí)pull訪問 1、在當(dāng)前項(xiàng)目的根目錄創(chuàng)建Dockerfile文件并寫入如下代碼: 代碼片段詳細(xì)描述: 注意

    2024年02月05日
    瀏覽(24)
  • Jenkins + Docker 一鍵自動化部署 SpringBoot 應(yīng)用最精簡流程

    Jenkins + Docker 一鍵自動化部署 SpringBoot 應(yīng)用最精簡流程

    本文章實(shí)現(xiàn)最簡單全面的 Jenkins + Docker + Spring Boot 一鍵自動部署項(xiàng)目。步驟齊全,少走坑路。 環(huán)境:CentOS7 + Git (Gitee) 實(shí)現(xiàn)步驟:在 Docker 安裝 Jenkins,配置 Jenkins 基本信息,利用 Dockerfile 和 Shell 腳本實(shí)現(xiàn)項(xiàng)目自動拉取打包并運(yùn)行。 1安裝 Docker 安裝社區(qū)版本 Docker CE 確保 yum 包

    2024年04月26日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包