摘要: 一、场景: 开发者将代码提交(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
分享到:
相关推荐
md文件详细描述了从0到1构建CI/CD平台的步骤,从docker到Jenkins,在到gitlab,在到harbor等平台,并提供了pipeline的基本实例
持续集成(CI)和持续发布(CD)是软件开发中的一种实践,旨在提高软件的质量和交付速度。 在这个案例中,我们将使用 k8s、Docker、Jenkins 和 Git 来实现持续集成与持续发布。该案例将涵盖以下知识点: 1. k8s ...
linux课程设计报告,该课程设计报告是在学习linux的基础上进行的,实现了基于Docker构建企业Jenkins CI平台
docker-jenkins-fortran 依赖 请确保本机已经正常安装Docker。推荐Docker Engine版本不低于18.09.2。 使用 根据需要下载相应版本的Docker镜像 运行该镜像并命名容器为jenkins,这里我们将宿主机的目录与jenkins...
本次分享主要从 Jenkins+Docker+Kubernetes流程入手,通过实例演示为大家介绍我们的实践之路。 内容概览 使用 Jenkins和容器解决之前测试环境需要测试人员按照文档全手工命令行部署,流程复杂易出错,上线部署...
Jenkins 是一个开源软件项目,是基于 Java 开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins 可以自动化 Java 项目的编译、测试和发布过程。 ...
基于Docker版Jenkins的C++Fortran项目持续集成平台.zip
3. **CI/CD配置**: 在GitLab的`.gitlab-ci.yml`文件中编写持续集成/持续部署的脚本,定义不同的作业(job)和流水线(pipeline)。 4. **GitLab Runner**: 安装并配置GitLab Runner,Runner是执行`.gitlab-ci.yml`...
Jenkins+Gitlab的持续集成解决方案结合了Gitlab的版本控制功能和Jenkins的自动化构建能力,为软件开发团队提供了一套完整的DevOps流程。通过持续集成,团队可以更快地发现并修复问题,保证软件质量;而持续交付和...
基于 CentOS 7.0 平台搭建 GitLab+Jenkins 可持续集成环境 本文主要介绍了基于 CentOS 7.0 平台搭建 GitLab+Jenkins 可持续集成环境的过程,包括 JDK 安装、Jenkins 安装、GitLab 安装和配置、访问 GitLab 等步骤。...
在互联网应用快速更新迭代的大背景下,传统的人工手动或简单脚本已经不能适应此变化,此时Devops为我们提供了良好的解决方案,应用好CI/CD可以大大的方便我们的日常工作,自动化快速的持续集成/持续交付为我们带来了...
企业级CI/CD,项目自动化实战,从0到有,但不涉及相关原理。适合上手,建议实际操作之后再详细学习相关原理。
1、持续集成及Jenkins介绍 2、Jenkins安装和持续集成环境配置 3、Jenkins构建Maven项目 4、Jenkins+Docker+SpringCloud微服务持续集成 5、基于Kubernetes/K8S构建Jenkins微服务持续集成平台
利用pipelin脚本实现自动化CI/CD流程
7. **持续集成/持续部署(CI/CD)**:与常见的CI/CD工具如Jenkins、GitLab等集成,实现代码更新自动触发容器重建和部署。 8. **API接口**:提供RESTful API,使得与其他系统集成变得更加灵活,可以轻松构建自定义工作...
码头工人詹金斯Jenkins CI Docker 容器建造$ docker pull oreomitch/docker-jenkins-android 用法运行容器并将主机端口 8080 映射到容器端口 8080 $ docker run -d -p 8080:8080 oreomitch/docker-jenkins-android ...
iOS应用开发中,持续集成(CI)是一种软件开发实践,其核心在于团队成员频繁地集成他们的工作成果,通常每人每天至少集成一次,从而在开发过程中尽可能快地发现和解决错误。持续集成涉及自动化的构建、测试和集成...