Jenkins+Git+Harbor使用pipeline部署應用到docker容器(Jenkins系列三)


一、准備工作

搭建jenkins
搭建git代碼倉庫
搭建harbor,做版本管理
應用服務器:安裝docker服務

二、配置jenkins構建需要用到的工具及憑證

安裝插件及工具

在jenkins頁面安裝插件:git、pipeline、gradle等

在jenkins服務器里安裝需要的工具,並在jenkins頁面配置:系統管理——全局工具配置——添加JDK、Git、Maven、Gradle

  JDK:跟項目使用的JDK版本一致

      

   Git:用來拉取git倉庫的代碼

    

   maven:編譯maven項目需要用

    

   gradle:編譯gradle項目需要用

    

添加憑證

  系統管理——憑據配置——新增harbor、git倉庫的用戶名 密碼

    

   #將創建的用戶唯一標識碼復制到pipeline腳本中,避免直接用用戶名密碼,暴露信息出現安全隱患。

三、創建流水線項目

     

進入項目進行配置:(項目是用gradle編譯的,所以用gradle工具編譯打包)

  #保存構建任務天數

  

   #構建的時候選擇構建代碼分支

  

   pipeline構建腳本:

#gradle編譯jar包
#!/usr/bin/env groovy

def h_registry = "10.48.14.50"    #harbor倉庫地址
def h_project = "dev"         #barbor項目名
def app_name = "eureka-service"    #java項目名
def jar_port = "8761"          #項目端口號 def jar_path = "build/libs"      #jar包路徑 def jar_name = "${app_name}-0.0.1-SNAPSHOT.jar"    #jar包名 def image_name = "${h_registry}/${h_project}/${app_name}:${Branch}-${BUILD_NUMBER}"  #鏡像保存在harbor倉庫的名稱 def git_address = "http://10.48.14.50:10080/001/leyitong.git"    #git倉庫保存的項目地址 def git_auth = "76c181e8-d11c-42a0-93c5-14d623437d1c"        #git倉庫憑證 def harbor_auth = "4102bab0-3376-465d-a47e-7a9d2822d21c"      #harbor憑證 def JAVA_OPTS = "-Xms128m -Xmx256m -Dfile.encoding=UTF8 -Duser.timezone=GMT+08 -Dspring.profiles.active=prod"  #設置JVM相關運行參數的變量 pipeline { agent any #注意:首次構建不會顯示此參數,構建完成后才會顯示 parameters { choice choices: ['eureka-service', 'gateway-service', 'user-consumer'], name: 'app_name' } stages { stage('拉取代碼') { steps { checkout([$class: 'GitSCM', branches: [[name: '$branch']], userRemoteConfigs: [[credentialsId: "$git_auth", url: "$git_address"]]]) } } stage('代碼編譯') { steps { sh """ pwd JAVA_HOME=/usr/local/jdk11 PATH=$JAVA_HOME/bin:/usr/local/gradle/bin:$PATH cd ${app_name} gradle -v gradle clean build -x test """ } } stage('構建鏡像') { steps { withCredentials([usernamePassword(credentialsId: "${harbor_auth}",passwordVariable: 'password',usernameVariable: 'username')]) { sh """ echo ' FROM java:11 MAINTAINER liang RUN apk add -U tzdata && \ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ADD ${jar_path}/${jar_name} / EXPOSE ${jar_port} CMD java -jar $JAVA_OPTS /${jar_name} '> ${app_name}/Dockerfile docker build -t ${image_name} ${app_name} docker login -u ${username} -p ${password} ${h_registry} docker push ${image_name} """ } } } stage('部署到docker') { steps { sh """
            ssh 10.48.14.100    #需要生成秘鑰,免密登錄應用服務器  
docker run --name ${app_name} -p ${jar_port}:${jar_port} -d ${image_name} """ } } } }

注意:可以添加多個選項參數(選擇項目代碼、代碼分支、應用服務器地址)

     

 然后生成指令,復制到pipeline腳本中,使用相應命令來調用此參數

四、查看構建結果

  

   登錄docker應用服務器查看容器運行情況

    docker ps -a 

    docker logs 容器名


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM