美文网首页
基于Docker构建企业Jenkins CI平台

基于Docker构建企业Jenkins CI平台

作者: 小李飞刀_lql | 来源:发表于2021-12-07 11:27 被阅读0次

    CI/CD概述

    001 持续集成(Continuous Integration,CI):代码合并、构建、部署、测试都在一起,不断地执行这个过程,并对结果反馈。
    002 持续部署(Continuous Deployment,CD):部署到测试环境、预生产环境、生产环境。
    003 持续交付(Continuous Delivery,CD):将最终产品发布到生产环境,给用户使用。
    

    CI工作流程设计

    1638841737250.png

    Gitlab

    root 12345678
    
    [root@es3 ~]# cd tomcat-java-demo-master
    git config --global user.email "lql_h@163.com"
    git config --global user.name "root"
    
    git init
    git remote add origin http://192.168.153.18/root/tomcat-java-demo2.git
    git add .
    git commit -m "Initial commit"
    git push -u origin master
    
    1638842465059.png

    jenkins

    准备JDK和Maven环境

    #将二进制包上传到服务器并解压到工作目录,用于让Jenkins容器挂载使用
    [root@es3 ~]# mv jdk1.8.0_45/ /usr/local/jdk
    [root@es3 ~]# mv apache-maven-3.5.0 /usr/local/maven
    

    修改Maven源

    [root@es3 conf]# vi /usr/local/maven/conf/settings.xml 
    
    <mirrors>
    
    <mirror>     
      <id>central</id>     
      <mirrorOf>central</mirrorOf>     
      <name>aliyun maven</name>
      <url>https://maven.aliyun.com/repository/public</url>     
    </mirror>
    
    </mirrors>
    

    运行jenkins

    docker run -d --name jenkins -p 81:8080 -p 50000:50000 -u root  \
       -v /opt/jenkins_home:/var/jenkins_home \
       -v /var/run/docker.sock:/var/run/docker.sock   \
       -v /usr/bin/docker:/usr/bin/docker \
       -v /usr/local/maven:/usr/local/maven \
       -v /usr/local/jdk:/usr/local/jdk \
       -v /etc/localtime:/etc/localtime \
       --restart=always \
       --name jenkins jenkins/jenkins
    -----------------------------------------------------------------------------------
    [root@es3 conf]# docker logs  jenkins -f
    Please use the following password to proceed to installation:
    8d0c4f351338468e8b62e292d3e42444  
       
    

    安装插件

    修改下载源

    [root@es3 conf]# cd /opt/jenkins_home/updates
    
    [root@es3 updates]# sed -i 's/http:\/\/updates.jenkins-ci.org\/download/https:\/\/mirrors.tuna.tsinghua.edu.cn\/jenkins/g' default.json
    
    [root@es3 updates]# sed -i 's/http:\/\/www.google.com/https:\/\/www.baidu.com/g' default.json
    

    重启生效

    [root@es3 updates]# docker restart jenkins
    

    安装git插件和pipeline插件并重启

    1638844277273.png

    发布测试

    在jenkins容器中验证登录

    [root@es3 updates]# docker exec -it jenkins bash
    
    root@238483a2c2d7:/# echo "192.168.153.27 reg.pcitc.com" >> /etc/hosts
    root@238483a2c2d7:/# docker login reg.pcitc.com
    Username: admin
    Password: 
    
    Login Succeeded
    

    参数设置

    def registry = "reg.pcitc.com"
    def project = "welcome"
    def app_name = "demo"
    def image_name = "${registry}/${project}/${app_name}:${Branch}-${BUILD_NUMBER}"
    def git_address = "http://192.168.153.18/root/tomcat-java-demo2.git"
    def docker_registry_auth = "1f782a60-8e66-49a8-b154-bd303a663302"
    def git_auth = "16932e0a-d8e8-4d6a-a07e-0adee8aa0dd6"
    

    project

    1638845206597.png
    1638846293491.png

    Branch

    New Item -> Pipeline -> This project is parameterized -> String Parameter
    
    - Name:Branch    # 变量名,下面脚本中调用 
    - Default Value:master   # 默认分支
    - Description:发布的代码分支  # 描述 
    
    1638845619414.png

    添加凭据

    管理Jenkins->安全-->管理凭据->Jnekins->添加凭据->Username with password
    
    - Username:用户名
    - Password:密码
    - ID:留空
    - Description:描述
    
    1638845883318.png

    Pipeline脚本

    #!/usr/bin/env groovy
    
    def registry = "reg.pcitc.com"
    def project = "welcome"
    def app_name = "demo"
    def image_name = "${registry}/${project}/${app_name}:${Branch}-${BUILD_NUMBER}"
    def git_address = "http://192.168.153.18/root/tomcat-java-demo2.git"
    def docker_registry_auth = "1f782a60-8e66-49a8-b154-bd303a663302"
    def git_auth = "16932e0a-d8e8-4d6a-a07e-0adee8aa0dd6"
    
    pipeline {
        agent any
        stages {
            stage('拉取代码'){
                steps {
                  checkout([$class: 'GitSCM', branches: [[name: '${Branch}']], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_address}"]]])
                }
            }
    
            stage('代码编译'){
               steps {
                 sh """
                    pwd
                    ls
                    JAVA_HOME=/usr/local/jdk
                    PATH=$JAVA_HOME/bin:/usr/local/maven/bin:$PATH
                    mvn clean package -Dmaven.test.skip=true
                    """ 
               }
            }
    
            stage('构建镜像'){
               steps {
                    withCredentials([usernamePassword(credentialsId: "${docker_registry_auth}", passwordVariable: 'password', usernameVariable: 'username')]) {
                    sh """
                      echo '
                        FROM ${registry}/library/tomcat:v1
                        LABEL maitainer lizhenliang
                        RUN rm -rf /usr/local/tomcat/webapps/*
                        ADD target/*.war /usr/local/tomcat/webapps/ROOT.war
                      ' > Dockerfile
                      docker build -t ${image_name} .
                      docker login -u ${username} -p '${password}' ${registry}
                      docker push ${image_name}
                    """
                    }
               } 
            }
    
            stage('部署到Docker'){
               steps {
                  sh """
                  docker rm -f tomcat-java-demo |true
                  docker container run -d --name tomcat-java-demo -p 88:8080 ${image_name}
                  """
                }
            }
        }
    }
    

    访问

    http://192.168.153.27:88/
    

    相关文章

      网友评论

          本文标题:基于Docker构建企业Jenkins CI平台

          本文链接:https://www.haomeiwen.com/subject/mawoxrtx.html