Docker學習(四)Docker結合jenkins實現CICD

以前我們編寫完代碼都需要專門的運維人員去部署到測試環境,有些小公司連測試環境都沒有,都是在本地直接測試,然後直接部署tomact,非常麻煩。現在我們藉助jenkins可以很方便的部署測試環境,開發人員只要提交代碼,之後點擊jenkins進行構建就好了。

安裝jenkins

  1. 將jenkins倉庫的祕鑰添加到本地
$ wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
  1. 將官方提供的軟件倉庫地址加入到本地的apt軟件源中,/etc/apt/sources.list
$ deb https://pkg.jenkins.io/debian-stable binary/
  1. 安裝jenkins
$ sudo apt-get update
$ sudo apt-get install jenkins
  1. 啓動
$ sudo /etc/init.d/jenkins [start|restart|stop]

補充:修改jenkins啓動端口

在 /etc/default/jenkins 文件中,修改HTTP_PORT=8090, 我本地是8090

瀏覽器設置jenkins

  1. 訪問 http://localhost:8090

    輸入初始化密碼,初始化密碼在啓動過程中,日誌中會打印

也可以在/var/lib/jenkins/secrets/initialAdminPassword文件中查看初始化密碼

  1. 安裝插件

    單擊“繼續”。 下一個屏幕提供安裝建議的插件或選擇特定插件的選項。

選擇銳減的插件安裝,安裝過程有點慢,後面可以自己安裝其他插件

  1. 創建新用戶,或者使用默認的admin

  2. 點擊“開始使用Jenkins”來訪問主要的Jenkins儀表板:

    創建我們的構建任務

    1. 新建任務

      創建

選擇流水線任務

  1. 寫流水線腳本

流水線

#!groovy
pipeline {
  agent any
  environment {
    GIT_REPO="https://gitee.com/xcmike/dker-sbt.git"
    DOCKER_SCRIPT="/home/mike/scripts/"
    PROJECT="hello"
  }
  
  stages {
    stage('獲取代碼') {
        steps {
            echo "start clone code from git:${GIT_REPO}"
            deleteDir()
            git credentialsId: 'httpdown', url: "${GIT_REPO}"
        }
    }
    
    stage('代碼靜態檢查') {
        steps {
            echo "start code check"
        }
    }
    
    stage('maven 編譯打包') {
        steps {
            echo "start compile code"
            sh "mvn clean package"
        }
    }

    stage('docker構建鏡像') {
        steps {
            echo "start docker build image"
            sh "${DOCKER_SCRIPT}/build.sh ${PROJECT}"
        }
    }    
    
    stage('啓動鏡像') {
        steps {
            echo "start docker run image"
            sh "${DOCKER_SCRIPT}/deploy.sh" 
        }
    }    
    
  }
}
  1. httpdown 憑據設置,就是代碼倉庫的用戶名和密碼

憑據

你可以新增一個

  1. 代碼倉庫推薦使用csdn的因爲github國內訪問比較慢
  2. docker構建鏡像腳本,build.sh, 這個是直接消耗放在服務器上的,當然你可以直接在流水線直接寫

    #!/bin/bash
    
    PROJECT_NAME=$1
    TIME=`date "+%Y%m%d%H%M"`
    IMAGE_NAME=${PROJECT_NAME}:${TIME}
    
    docker build -t ${IMAGE_NAME} .
    cd -
    echo "${IMAGE_NAME}" > IMAGE_NAME
    
  3. docker鏡像啓動腳本,deploy.sh,也在服務器上

    #!/bin/bash
    IMAGE=`cat IMAGE_NAME`
    docker run -d -p 80:8080 ${IMAGE}
  4. 開始構建

開始構建

訪問我們的服務

和上節課的應用一樣,只不過我用jenkins來實現了自動化。

訪問:http://服務器ip或域名/api/say... 返回:heelo,docker,這樣我們的CICD就實現了。

這裏我是用後端項目做得演示,前端項目一樣可以。pipeline中因爲我搭建的docker私有鏡像倉庫在jenkins中的授權問題,沒有搞定,所以跳過了發佈鏡像到私有倉庫,直接從本地啓動鏡像了。大家可以自己加一下。

歡迎關注我的公中號:mike啥都想搞,一起交流學習

mike啥都想搞

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章