• Jenkins结合Gitlab,实现镜像构建及推送


    docker-compose

    jenkins的docker-compose目录为为/home/jenkins,这个后面写脚本的时候需要对应上

    version: '3'
    services:
      docker_jenkins:
        restart: always
        image: jenkins/jenkins:lts
        container_name: docker_jenkins
        privileged: true 
        ports:
          - '8080:8080'
          - '50000:50000'
        volumes:
          - ./data/:/var/jenkins_home
          - /var/run/docker.sock:/var/run/docker.sock
          - /usr/bin/docker:/usr/bin/docker
          - /usr/lib/x86_64-linux-gnu/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    授权目录

    1. chmod 777 ./data -R
    2. chmod 777 /var/run/docker.sock (设置宿主机可执行,因为进入jenkins容器还会使用宿主机docker)

    安装插件

    1. 搜索安装Git相关插件
    2. 搜索安装Gitlab相关插件
    3. 搜索安装Docker相关插件

    在这里插入图片描述
    在这里插入图片描述

    凭据管理

    1. Gitlab 用户名密码
    2. 推送到阿里云镜像容器,docker login 的用户名密码
      在这里插入图片描述
      在这里插入图片描述

    设置时区

    System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')
    
    • 1

    在这里插入图片描述
    在这里插入图片描述
    点击运行

    创建流水线

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    jenkins生成的webhook地址复制到gitlab中
    在这里插入图片描述

    流水线脚本

    在这里插入图片描述

    下面脚本的/home/jenkins目录,需要指定为宿主机的挂载目录
    需要修改credentialsId为自己的gitlab凭证、以及推送到镜像仓库的凭证
    需要修改url为项目实际gitlab地址

    java项目

    node('built-in') { 
    
    
    
    	 stage('Git Clone') {
            checkout([$class: 'GitSCM', branches: [[name: "origin/${env.gitlabSourceBranch}"]], extensions: [], userRemoteConfigs: [[credentialsId: 'ld-git', url: 'http://gitlab地址/asterism-back/aip-base.git']]])
    	}
    
    	
    	stage('DockerPush-ld') {     
    
    		globalDockerRegistry="registry.cn-hangzhou.aliyuncs.com" 
    		credentials = "ledison7"
    		imageStore="https://registry.cn-hangzhou.aliyuncs.com"
    		tenantCode="fireworks" 
    		docker.withRegistry(imageStore,credentials) {
    		    sh encoding: 'UTF-8', label: 'Maven 缓存构建',script:'''
    				docker run -i --rm  -v /home/jenkins/mavenRespo:/var/jenkins_home/mavenRespo  -v /home/jenkins/data/workspace/${JOB_NAME}:/usr/src/mymaven -w /usr/src/mymaven  maven:3.6.3  mvn clean package -DskipTests -s ./go_settings.xml
    				sleep 1
    		        '''
    		
    			commitId = "${env.gitlabMergeRequestLastCommit}".substring(0,8)
    			imageTag = "registry.cn-hangzhou.aliyuncs.com/fireworks/aip-base:latest"
    			sh encoding: 'UTF-8', label: '镜像构建',script:' docker build -t  '+imageTag+' -f Dockerfile . '
    			sh encoding: 'UTF-8', label: '镜像推送',script:' docker push '+imageTag 
    			sh encoding: 'UTF-8', label: '镜像清理',script:' docker rmi '+imageTag
    		} 
    	}
    
    	
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    java项目Dockerfile

    FROM openjdk:8
    
    LABEL maintainer="363192641@qq.com"
    
    COPY aip-base-core/target/*.jar /aip-base.jar
    RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
        && echo "Asia/Shanghai" > /etc/timezone
    
    EXPOSE 8181
    
    ENTRYPOINT java  -XX:+PrintFlagsFinal -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap $JAVA_OPTS -jar  /aip-base.jar --spring.profiles.active=prod
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
  • 相关阅读:
    1.77亿美元,安世被迫出售晶圆大厂NWF | 百能云芯
    【Linux】inittab系统启动时sysinit含义
    读书笔记:软件工程(12) - 传统方法学 – 软件建模-数据流图
    【计算机网络Part 1】概述+物理层
    PHP 或者linux 直播中hls m3u8 rtmp 截图封面识别色情
    fpga图像处理------常用算法(二)
    19、Flink 的Table API 和 SQL 中的内置函数及示例(1)
    springboot+小程序老年人健康保障管理系统毕业设计源码302303
    算法--找到和最大的长度为 K 的子序列(Kotlin)
    【LeetCode 130. 被围绕的区域】
  • 原文地址:https://blog.csdn.net/qq_36382225/article/details/133030905