`
jzy996492849
  • 浏览: 128188 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

基于Docker容器的,Jenkins、GitLab构建持续集成CI 之一 Jenkins容器构建

 
阅读更多
摘要: 一、场景: 开发者将代码提交(push)到GitLab后,GitLab通过Hook通知jenkins,jenkins自动从GitLab中获取项目最新的源码进行集成和发布。 二、准备: 基于Docker,创建一个私有GitLab的容器,创建一个jenkins的容器 三、步骤 1、构建Jenkins容器 Jenkins容器安装Jenkins的rpm包,Jenkins依赖 JDK,所以需要在Jenkins的容器中安装配置jdk,本人使用jdk1.8,同时需要Jenkins的容器调用maven的打包命令,所以也需要配置安装maven,本人使用maven 3.3.9。

一、场景:
开发者将代码提交(push)到GitLab后,GitLab通过Hook通知jenkins,jenkins自动从GitLab中获取项目最新的源码进行集成和发布。

二、准备:
基于Docker,创建一个私有GitLab的容器,创建一个jenkins的容器

三、步骤
1、构建Jenkins容器
Jenkins容器安装Jenkins的rpm包,Jenkins依赖 JDK,所以需要在Jenkins的容器中安装配置jdk,本人使用jdk1.8,同时需要Jenkins的容器调用maven的打包命令,所以也需要配置安装maven,本人使用maven 3.3.9。

a.通过Dockerfile构建一个jenkins容器,基于centos7的镜像。

这里不推荐将一个基础镜像一次性打包成完整的应用镜像,建议构建三层镜像模型。
所谓三层镜像就是,基础镜像,中间件镜像,应用镜像。例如我要构建一个Jenkins 的镜像,打包一个基于Centos7 和一些常用工具的镜像就是基础镜像,例如叫Centos7-base。然后这里Jenkins依赖Java和Maven,所以在基于Centos7-base的基础上安装配置java及maven后,再打包的镜像为中间件镜像,例如叫Centos7-jdk8-mvn3,这层中间件的镜像我们为来的复用会很高,以后只要有基于java1.8和maven3的,就可以直接使用这个镜像进行构建。最后我们再在Centos7-jdk8-mvn3的基础上安装配置jenkins,最后打包运用在生产环境。
b.构建基础镜像,整合jdk及mvn。配置PATH ,安装所需要的工具,Dockerfile如下:

#base on centos 7 image

FROM daocloud.io/centos:7
MAINTAINER hoewon
LABEL JDK \ 1.8

COPY jdk1.8 /usr/local/jdk1.8/  \
             maven /usr/local/maven/

RUN yum install -y openssh-server openssh-clients git

RUN yum install -y iproute  net-tools

ENV JAVA_HOME /usr/local/jdk1.8


ENV PATH $JAVA_HOME/bin:$PATH

EXPOSE 8080


ENTRYPOINT /bin/bash
将要复制进镜像里的jdk和maven文件放到与Dockerfile相同的目录下
执行命令打包镜像

#最后 . 是当前目录的意思,不可省略,或自定义Dockerfile所在目录

docker build -t repo/name:tag  . 

#成功后查看本地镜像

docker images
c.通过基础镜像安装jenkins,也是通过Dockerfile

#A jenkins 2.7.4 on centos 7 image
#基于刚才做好的基础镜像
FROM 127.0.0.1:5000/env/centos7-jdk8-mvn:1.3
MAINTAINER hoewon
LABEL JDK1.8 \ Jenkins-2.7.4
#复制jenkins rpm至镜像
COPY jenkins.rpm /usr/local/

#创建jenkins用户,并更改密码

RUN useradd jenkins && echo "jenkins password"  > passwd jenkins --stdin

#安装jenkins

RUN rpm -ivh /usr/local/jenkins.rpm

#更改jenkins安装文件的所有者

RUN rpm -ql jenkins | xargs chown -R jenkins:jenkins

#创建jenkins日志文件

RUN touch /usr/lib/jenkins/jenkins-logs

#更改日志文件所有者

RUN chown jenkins:jenkins /usr/lib/jenkins/jenkins-logs

#曝光8080端口

EXPOSE 8080

#启动容器时使用jenkins用户

USER jenkins

#定义用户空间为工作空间

WORKDIR /home/jenkins

#启动容器时启动jenkins

ENTRYPOINT java -jar /usr/lib/jenkins/jenkins.war &> /usr/lib/jenkins/jenkins-logs
d.运行jenkins容器,这里需要将container的网络设置跟GtiLab同网络的环境下

查看
# --net 指定docker的网桥,
docker run -idt --name jenkins -p 8888:8080 --net mygitlib_default repo/jenkins_img:tag  /bin/bash
分享到:
评论

相关推荐

    基于Docker构建Jenkins+CI平台.md

    md文件详细描述了从0到1构建CI/CD平台的步骤,从docker到Jenkins,在到gitlab,在到harbor等平台,并提供了pipeline的基本实例

    k8s+docker+Jenkins+git持续集成与持续发布

    持续集成(CI)和持续发布(CD)是软件开发中的一种实践,旨在提高软件的质量和交付速度。 在这个案例中,我们将使用 k8s、Docker、Jenkins 和 Git 来实现持续集成与持续发布。该案例将涵盖以下知识点: 1. k8s ...

    基于Docker构建企业Jenkins CI平台

    linux课程设计报告,该课程设计报告是在学习linux的基础上进行的,实现了基于Docker构建企业Jenkins CI平台

    基于Docker版Jenkins的C++/Fortran项目持续集成平台

    docker-jenkins-fortran 依赖 请确保本机已经正常安装Docker。推荐Docker Engine版本不低于18.09.2。 使用 根据需要下载相应版本的Docker镜像 运行该镜像并命名容器为jenkins,这里我们将宿主机的目录与jenkins...

    Jenkins docker Kubernetes持续集成(CI)持续部署(CD) (1).png

    本次分享主要从 Jenkins+Docker+Kubernetes流程入手,通过实例演示为大家介绍我们的实践之路。 内容概览 使用 Jenkins和容器解决之前测试环境需要测试人员按照文档全手工命令行部署,流程复杂易出错,上线部署...

    实战Docker+Jenkins+Git+Registry构建持续集成环境

    Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins 可以自动化 Java 项目的编译、测试和发布过程。 ...

    基于Docker版Jenkins的C++Fortran项目持续集成平台.zip

    基于Docker版Jenkins的C++Fortran项目持续集成平台.zip

    Jenkins和gitlab.zip

    3. **CI/CD配置**: 在GitLab的`.gitlab-ci.yml`文件中编写持续集成/持续部署的脚本,定义不同的作业(job)和流水线(pipeline)。 4. **GitLab Runner**: 安装并配置GitLab Runner,Runner是执行`.gitlab-ci.yml`...

    Jenkins+Gitlab持续集成综合实战1

    Jenkins+Gitlab的持续集成解决方案结合了Gitlab的版本控制功能和Jenkins的自动化构建能力,为软件开发团队提供了一套完整的DevOps流程。通过持续集成,团队可以更快地发现并修复问题,保证软件质量;而持续交付和...

    centos7平台集成Jenkins+gitlab

    基于 CentOS 7.0 平台搭建 GitLab+Jenkins 可持续集成环境 本文主要介绍了基于 CentOS 7.0 平台搭建 GitLab+Jenkins 可持续集成环境的过程,包括 JDK 安装、Jenkins 安装、GitLab 安装和配置、访问 GitLab 等步骤。...

    详解Docker+Jenkins+Gitlab+Django应用部署实践

    在互联网应用快速更新迭代的大背景下,传统的人工手动或简单脚本已经不能适应此变化,此时Devops为我们提供了良好的解决方案,应用好CI/CD可以大大的方便我们的日常工作,自动化快速的持续集成/持续交付为我们带来了...

    Docker+Jenkins+Harbor+GitLab.pdf

    企业级CI/CD,项目自动化实战,从0到有,但不涉及相关原理。适合上手,建议实际操作之后再详细学习相关原理。

    Jenkins持续集成从入门到精通.pdf

    1、持续集成及Jenkins介绍 2、Jenkins安装和持续集成环境配置 3、Jenkins构建Maven项目 4、Jenkins+Docker+SpringCloud微服务持续集成 5、基于Kubernetes/K8S构建Jenkins微服务持续集成平台

    基于Docker构建Jenkins CI平台.md

    利用pipelin脚本实现自动化CI/CD流程

    Go-opendcp基于Docker容器的云服务运维平台

    7. **持续集成/持续部署(CI/CD)**:与常见的CI/CD工具如Jenkins、GitLab等集成,实现代码更新自动触发容器重建和部署。 8. **API接口**:提供RESTful API,使得与其他系统集成变得更加灵活,可以轻松构建自定义工作...

    docker-jenkins-android:适用于 Android 的 Jenkins CI Docker 容器

    码头工人詹金斯Jenkins CI Docker 容器建造$ docker pull oreomitch/docker-jenkins-android 用法运行容器并将主机端口 8080 映射到容器端口 8080 $ docker run -d -p 8080:8080 oreomitch/docker-jenkins-android ...

    iOS中配置Jenkins集成打包测试发布CI系统

    iOS应用开发中,持续集成(CI)是一种软件开发实践,其核心在于团队成员频繁地集成他们的工作成果,通常每人每天至少集成一次,从而在开发过程中尽可能快地发现和解决错误。持续集成涉及自动化的构建、测试和集成...

Global site tag (gtag.js) - Google Analytics