zoukankan      html  css  js  c++  java
  • centos7.9环境基于docker和pipeline构建jenkins的ci平台

    image

    1、部署gitlab

    1.1 部署gitlab

    docker run -d 
      --name gitlab 
      -p 8443:443 
      -p 9999:80 
      -p 9998:22 
      -v /data/gitlab/config:/etc/gitlab 
      -v /data/gitlab/logs:/var/log/gitlab 
      -v /data/gitlab/data:/var/opt/gitlab 
      -v /etc/localtime:/etc/localtime 
      --restart=always 
      lizhenliang/gitlab-ce-zh:latest
    

    访问地址:http://IP:9999

    初次会先设置管理员密码 ,然后登陆,默认管理员用户名root,密码就是刚设置的。

    root:admin888

    1.2 创建项目,提交测试代码

    进入后先创建项目,提交代码,以便后面测试
    image
    image

    yum install -y git
    
    mkdir git_demoair
    cd git_demoair
    # 将代码解压,并且推送到git仓库中
    unzip tomcat-java-demo-master.zip 
    cd tomcat-java-demo-master
    git init
    git config --global user.email "admin@163.com"
    git config --global user.name "admin"
    git remote add origin http://10.11.0.232:9999/root/java-demo.git
    git add .
    git commit -m "init commit"
    git push -u origin master
    
    # git删除目录命令(保留目录:git rm -r --cached src db Dockerfile LICENSE pom.xml README.md)
    git rm -r xx目录
    git commit -m "delete xx目录"
    git push origin master
    
    

    2、部署Harbor镜像仓库

    2.1 安装docker与docker-compose

    # wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
    # yum install docker-ce -y
    # yum install docker-compose
    # systemctl start docker
    # systemctl enable docker
    

    2.2 解压离线包部署

    # tar zxvf harbor-offline-installer-v1.9.1.tgz
    # cd harbor
    # vi harbor.yml
    hostname: 10.11.0.150
    port: 8888
    # ./prepare
    # ./install.sh
    

    2.3 在Jenkins主机配置Docker可信任

    由于habor未配置https,还需要在docker配置可信任。

    # cat /etc/docker/daemon.json 
    {"registry-mirrors": ["http://qj4ewogx.mirror.aliyuncs.com"],
      "insecure-registries": ["10.11.0.150"]
    }
    # systemctl restart docker
    

    3、部署Jenkins

    3.1 准备JDK和Maven环境

    # tar xf jdk-8u261-linux-x64.tar.gz
    # mv jdk1.8.0_261 /usr/local/jdk
    # tar zxf apache-maven-3.6.1-bin.tar.gz
    # mv apache-maven-3.6.1 /usr/local/maven
    
    docker run -d --name jenkins -p 80:8080 -p 50000:50000 -u root  
       -v /data/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 
       --name jenkins jenkins/jenkins:lts
    

    密码: admin/admin888
    maven 的设置
    maven设置网络代理 和 源地址


    ccproxy
    true
    http
    10.11.0.150
    808
    127.0.0.1

    nexus-aliyun * Nexus aliyun http://maven.aliyun.com/nexus/content/groups/public ![image](https://img2020.cnblogs.com/blog/1087718/202108/1087718-20210810134052719-2074253109.png) 3.2 准备tomcat环境

    基于 centos:7 镜像制作自定义mycentos:v2

    # 交互式运行centos:7
    
    # docker run -it --name=mycentos
    
    # 在运行的mycentos容器中修改网络
    
    # vi /etc/profile
    
    export http_proxy=http://10.11.0.150:808
    export https_proxy="https://10.11.0.150:808"
    export ftp_proxy=http://10.11.0.150:808
    export socks_proxy="socks://10.11.0.150:808/"
    export http_proxy=http://10.11.0.150:808
    export https_proxy=https://10.11.0.150:808
    
    # echo "proxy=http://10.11.0.150:808" >> /etc/yum.conf
    # source /etc/profile
    # 替换yum源
    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
    
    # 安装常用工具
    yum install -y iproute net-tools telnet wget curl tree iftop htop iotop lrzsz
    
    # 提交镜像为 mycentos:v1
    # docker commit mycentos mycentos:v1
    

    编译安装tomcat

    下载地址:https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.43/bin/apache-tomcat-8.5.43.tar.gz

    编写Dockerfile

    FROM mycentos:v2
    LABEL maintainer www.chinasoft.com
    
    ENV VERSION=8.5.43
    
    RUN source /etc/profile && 
            yum install java-1.8.0-openjdk wget curl unzip iproute net-tools -y && 
    	yum clean all && 
    	rm -rf /var/cache/yum/*
    COPY apache-tomcat-${VERSION}.tar.gz /
    RUN source /etc/profile && 
        tar zxf apache-tomcat-${VERSION}.tar.gz && 
        mv apache-tomcat-${VERSION} /usr/local/tomcat && 
        rm -rf apache-tomcat-${VERSION}.tar.gz /usr/local/tomcat/webapps/* && 
        mkdir /usr/local/tomcat/webapps/test && 
        echo "ok" > /usr/local/tomcat/webapps/test/status.html && 
        sed -i '1a JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"' /usr/local/tomcat/bin/catalina.sh && 
        ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    
    ENV PATH $PATH:/usr/local/tomcat/bin
    
    WORKDIR /usr/local/tomcat
    
    EXPOSE 8080
    CMD ["catalina.sh", "run"]
    
    
    
    java包
    
    FROM java:8-jdk-alpine
    LABEL maintainer www.chinasoft.com
    
    ENV JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF8 -Duser.timezone=GMT+08"
    RUN apk add -U tzdata && 
        ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    COPY ./target/eureka-service.jar ./
    EXPOSE 8888
    CMD java-jar $JAVA_OPTS /eureka-service.jar
    

    3.3 安装插件

    如果安装慢,可以更新一下插件源地址

    cd /data/jenkins_home/updates
    sed -i 's/http://updates.jenkins-ci.org/download/https://mirrors.tuna.tsinghua.edu.cn/jenkins/g' default.json 
    sed -i 's/http://www.google.com/https://www.baidu.com/g' default.json
    

    系统管理-->插件管理-->Installed

    搜索git/pipeline,点击安装。

    4、发布测试

    4.1 添加参数化构建

    This project is parameterized -> String Parameter

    Name:Branch # 变量名,下面脚本中调用

    Default Value:master # 默认分支

    Description:发布的代码分支 # 描述

    4.2 Pipeline脚本

    def registry = "10.11.0.232"
    def project = "welcome"
    def app_name = "demo"
    def image_name = "${registry}/${project}/${app_name}:${Branch}-${BUILD_NUMBER}"
    def git_address = "http://10.11.0.232:9999/root/java-demo.git"
    def docker_registry_auth = "fb0e0bfe-7875-40a0-bc08-8898c6644cca"
    # jenkins凭证id
    def git_auth = "e7c91602-823f-484c-ad6f-d1497bf2d36c"
    
    pipeline {
        agent any
        stages {
            stage('拉取代码'){
                steps {
                  checkout([$class: 'GitSCM', branches: [[name: '${Branch}']], userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_address}"]]])
                }
            }
    
            stage('代码编译'){
               steps {
                 sh """
                    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 chinasoft
                        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 """
                  REPOSITORY=${image_name}
                  docker rm -f tomcat-java-demo |true
                  docker container run -d --name tomcat-java-demo -p 88:8080 ${image_name}
                  """
                }
            }
        }
    }
    

    4.3 添加凭据

    1、添加拉取git代码凭据,并获取id替换到上面git_auth变量值。
    image
    image

    2、添加拉取harbor镜像凭据,并获取id替换到上面docker_registry_auth变量值。

    harbor的jenkins凭据

    image

    4.4 通过jenkins进行代码的发布

    image
    image
    1、可以看到通过jenkins和pipeline能顺利编译并运行起项目

    2、模拟代码修改并提交gitlab,并且重新执行jenkins编译,可以看到成功修改

    [root@node01 git_demoair]# vim src/main/resources/templates/index.ftl
    [root@node01 git_demoair]# git add .
    [root@node01 git_demoair]# git commit -m "modify index.ftl"
    image

  • 相关阅读:
    JSP自定义标签_用简单标签控制标签体执行10次
    JSP自定义标签_用简单标签实现控制标签体是否执行
    eclipse 使用lombok 精简java bean
    转 :关于springmvc使用拦截器
    转: spring静态注入
    spring 4.0+quartz2.2 实现持久化
    排除maven jar冲突 maven tomcat插件启动报错 filter转换异常
    转 Quartz将Job持久化所需表的说明
    转 maven jetty 插件
    ORA-14300: 分区关键字映射到超出允许的最大分区数的分区
  • 原文地址:https://www.cnblogs.com/reblue520/p/15123057.html
Copyright © 2011-2022 走看看