容器 之搭建 jenkins ci 平台

1 部署 gitlab

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

访问地址: http://ip

用户名 root  密码 刚设置的

2 创建项目 提交测试代码

gitlab 创建一个仓库地址

# 克隆仓库地址

git clone http://10.0.0.70/root/java-demo.git

# 解压测试代码

#提交代码

3 部署 Harbor

https://www.cnblogs.com/augustyang/p/11912688.html

4 jenkins 安装

# 安装jdk

# tar zxvf jdk-8u45-linux-x64.tar.gz
ln -s /usr/local/jdk1.8.0_45/   /usr/local/jdk

#安装maven

# tar zxf apache-maven-3.5.0-bin.tar.gz
ln -s /usr/local/apache-maven-3.5.0/   /usr/local/maven

docker run -d --name jenkins -p 80: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/apache-maven-3.5.0:/usr/local/maven 
-v /usr/local/jdk1.8.0_45:/usr/local/jdk 
-v /etc/localtime:/etc/localtime 
--name jenkins jenkins/jenkins:lts

#使用/root/.ssh中私钥访问gitlab

ssh-keygen -t rsa
cat .ssh/id_rsa.pub

#安装 git pipeline 插件

# 配置国内镜像地址 

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

5 jenkins 发布

① Pipline 脚本

#!/usr/bin/env groovy

def registry = "10.0.0.60"
def project = "dev"
def app_name = "java-demo"
def image_name = "${registry}/${project}/${app_name}:${Branch}-${BUILD_NUMBER}"
def git_address = "http://10.0.0.70/root/java-demo.git"
def docker_registry_auth = "5f86fdc6-dc2f-4cd5-9740-a7bbf6b9b1f9"
def git_auth = "db953d02-d4f3-4acc-837b-ee580e71901b"

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 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 """
              REPOSITORY=${image_name}
              docker rm -f tomcat-java-demo |true
              docker container run -d --name tomcat-java-demo -p 88:8080 ${image_name}
              """
            }
        }
    }
}

添加选择的   This project is parameterized -->  String  parameter

② 添加凭据

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

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

原文地址:https://www.cnblogs.com/augustyang/p/11913523.html