• 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
  • 相关阅读:
    小学生python游戏编程2----飞机大战1
    rust 字符串字面量 - 字符串前缀
    服务网格和性能优化:介绍如何通过服务网格提高微服务架构的性能和可扩展性
    Java线程安全与对象头结构信息
    【21天学习挑战赛—经典算法】希尔排序
    Spring MVC入门2
    Mybatis源码学习笔记(三)之Mybatis接口的全局配置文件及*Mapper.xml文件扫描解析过程分析
    漏洞复现-phpmyadmin_SQL注入 (CVE-2020-5504)
    膜拜!清华大佬整理的史上最全面试题,征服美团面试官就靠它
    scratch班级成绩处理 电子学会图形化编程scratch等级考试四级真题和答案解析2022年9月
  • 原文地址:https://blog.csdn.net/qq_36382225/article/details/133030905