Docker 结合Jenkins 构建持续集成环境
Jenkins : 一个开源的持续集成工具, 提供软件版本发布、自动测试等一系列流程及丰富的插件
Maven: 一个自动化构建工具, 通过一段描述来管理项目的构建, 比如编译、打包等逻辑流程
SVN/Git: 源代码版本管理工具
Docker: 容器化技术: 打包项目环境与快速部署
1、安装SVN服务器
yum 安装
yum -y install subversion
查看svn安装位置
rpm -ql subversion
编译安装
安装apr 包
yum install gcc-c++ -y
wget https://mirrors.cnnic.cn/apache/apr/apr-1.6.5.tar.gz
./configure --prefix=/usr/local/apr
安装 apr-util
wget https://mirrors.cnnic.cn/apache/apr/apr-util-1.6.1.tar.gz
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
下载subversion
wget http://apache.mirrors.tds.net/subversion/subversion-1.11.1.tar.gz
下载sqlite
wget https://www.sqlite.org/snapshot/sqlite-snapshot-201903021525.tar.gz
解压到
./subversion/sqlite-amalgamation
下载zlib
wget http://zlib.net/zlib-1.2.11.tar.gz
./configure --prefix=/usr/local/zlib
编译安装subversion
./configure --prefix=/usr/local/subversion --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
这里需要注意./configure命令,这个命令作为编译配置有很多选项,如果失败,需要添加合适的选项,错误如下:
错误1:configure: error: Subversion requires LZ4 >= r129, or use --with-lz4=internal
解决:./configure命令添加 --with-lz4=internal选项
错误2:configure: error: Subversion requires UTF8PROC
解决:./configure命令添加 --with-utf8proc=internal
./configure --prefix=/usr/local/subversion --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --with-zlib=/usr/local/zlib --with-lz4=internal --with-utf8proc=internal
make && make install
ln -s /usr/local/subversion/bin/* /usr/bin/
svnadmin --version
svnadmin, version 1.11.1 (r1850623)
compiled Mar 25 2019, 00:35:20 on x86_64-unknown-linux-gnu
Copyright (C) 2019 The Apache Software Foundation.
This software consists of contributions made by many people;
see the NOTICE file for more information.
Subversion is open source software, see http://subversion.apache.org/
The following repository back-end (FS) modules are available:
* fs_fs : Module for working with a plain file (FSFS) repository.
* fs_x : Module for working with an experimental (FSX) repository.
with an experimental (FSX) repository.
创建目录
mkdir /home/svn
svnadmin create /home/svn/repos
egrep -v "^$|^#" /home/svn/repos/conf/svnserve.conf [general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
[sasl]
egrep -v "^$|^#" /home/svn/repos/conf/passwd [users]
test=123456
egrep -v "^$|^#" /home/svn/repos/conf/authz [aliases]
[groups]
[respo: /]
test = rw
启动
svnserve -d -r /home/svn/
ps -ef | grep svn
root 18974 1 0 04:19 ? 00:00:00 svnserve -d -r /home/svn/
root 18977 18738 0 04:20 pts/0 00:00:00 grep --color=auto svn
连接
SVN 搭建完成
2、搭建docker 镜像仓库
version: '3.2'
services:
registry:
image: registry
ports:
- 5000:5000
restart: always
container_name: registry
volumes:
- ./registry:/var/lib/registry
docker-compose up -d
[root@jenkins registry]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
990c1f5a57ad registry "/entrypoint.sh /e..." 31 seconds ago Up 30 seconds 0.0.0.0:5000->5000/tcp registry
pre / prd 机器上设置docker镜像仓库
[root@pre ~]# cat /etc/docker/daemon.json
{"registry-mirrors": ["http://04be47cf.m.daocloud.io"],"insecure-registries":["192.168.1.15:5000"]}
3、构建lnmp镜像
[root@jenkins nginx]# pwd
/home/lnmp/nginx
[root@jenkins nginx]# ll
total 1000
-rw-r--r-- 1 root root 567 Mar 29 16:42 Dockerfile
-rw-r--r-- 1 root root 1015384 Mar 29 16:43 nginx-1.14.2.tar.gz
-rw-r--r-- 1 root root 335 Mar 29 16:53 nginx.conf
Nginx Dockerfile
FROM centos:7
MAINTAINER blog.51cto.com/ganbing
ENV TIME_ZOME Asia/Shanghai RUN yum -y install gcc gcc-c++ make openssl-devel pcre-devel
ADD nginx-1.14.2.tar.gz /tmp RUN cd /tmp/nginx-1.14.2 && \
./configure --prefix=/usr/local/nginx && \
make -j 2 && \
make install RUN rm -rf /tmp/nginx* && yum clean all && \
echo "${TIME_ZOME}" > /etc/timezone && \
ln -sf /usr/share/zoneinfo/${TIME_ZOME} /etc/localtime COPY nginx.conf /usr/local/nginx/conf/
WORKDIR /usr/local/nginx/
EXPOSE 80
CMD ["./sbin/nginx","-g","daemon off;"]
nginx.conf
server {
listen 80;
server_name localhost;
root html;
index index.html index.php; location ~ \.php$ {
root html;
fastcgi_pass php-cgi:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
[root@jenkins php]# pwd
/home/lnmp/php
[root@jenkins php]# ll
total 20516
-rw-r--r-- 1 root root 1328 Mar 30 10:45 Dockerfile
-rw-r--r-- 1 root root 1514966 Mar 12 21:18 libzip-1.2.0.tar.gz
-rw-r--r-- 1 root root 19421313 Mar 5 22:30 php-7.3.3.tar.gz
-rw-r--r-- 1 root root 64945 Mar 29 20:04 php.ini
php Dockerfile
FROM centos:7
MAINTAINER blog.51cto.com/ganbing
ENV TIME_ZOME Asia/Shanghai
RUN yum install -y gcc gcc-c++ make gd-devel libxml2-devel libcurl-devel libjpeg-devel libpng-devel openssl-devel zlib-devel perl
ADD php-7.3.3.tar.gz /tmp/
ADD libzip-1.2.0.tar.gz /tmp/ RUN cd /tmp/libzip-1.2.0 && \
./configure && \
make && \
make install RUN cp /usr/local/lib/libzip/include/zipconf.h /usr/local/include/zipconf.h RUN cd /tmp/php-7.3.3 && \
./configure --prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--with-mysql --with-mysqli \
--with-openssl --with-zlib --with-curl --with-gd \
--with-jpeg-dir --with-png-dir --with-iconv \
--enable-fpm --enable-zip --enable-mbstring && \
make -j 4 && \
make install RUN cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf && \
sed -i 's/127.0.0.1/0.0.0.0/g' /usr/local/php/etc/php-fpm.conf && \
sed -i "21a daemonize=no" /usr/local/php/etc/php-fpm.conf && \
echo "${TIME_ZOME}" > /etc/timezone && \
ln -sf /usr/share/zoneinfo/${TIME_ZOME} /etc/localtime COPY php.ini /usr/local/php/etc/
RUN rm -rf /tmp/php* && yum clean all
WORKDIR /usr/local/php/
EXPOSE 9000
CMD ["./sbin/php-fpm","-c","/usr/local/php/etc/php-fpm.conf"]
php.ini 为默认文件
构建镜像
docker build -t 192.168.1.15:5000/lnmp-nginx:base .
docker build -t 192.168.1.15:5000/lnmp-php:base . docker push 192.168.1.15:5000/lnmp-php:base
docker push 192.168.1.15:5000/lnmp-nginx:base
查看仓库镜像
[root@pre ~]# curl http://192.168.1.15:5000/v2/_catalog
{"repositories":["lnmp-nginx","lnmp-php"]}
Jenkins 安装
安装jdk
yum -y install java
安装 Ant Maven Tomcat
wget http://www.jpackage.org/jpackage50.repo -P /etc/yum.repos.d/
yum -y install ant maven tomcat
设置tomcat编码为UTF-8
vim /etc/tomcat/server.xml <Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
安装jenkins
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
rpm --import http://pkg.jenkins-ci.org/redhat-stable/jenkins-ci.org.key
yum install jenkins -y
chkconfig jenkins on
service jenkins start
http://ip:8080 访问jenkins, 安装推荐插件
全局工具配置
Docker 结合Jenkins 构建持续集成环境的更多相关文章
-
Docker结合Jenkins构建持续集成环境
1.环境说明: jenkins+svn:192.168.71.142 测试环境:192.168.71.145 生产环境:192.168.71.148 操作系统:centos7. Maven3. Tom ...
-
使用Jenkins构建持续集成环境
简介 Jenkins是一个开源的持续集成工具,提供了数百种插件供用户选择,能够完成整套持续集成环境的构建. 它具有如下的特点: 持续集成和持续发布 作为可扩展的自动服务器,Jenkins可以作为简单的 ...
-
用MSBuild和Jenkins搭建持续集成环境(2)
http://www.infoq.com/cn/articles/MSBuild-2 作者 Mustafa Saeed Haji Ali ,译者 李剑 发布于 2012年10月23日 | 注意: ...
-
RF+Jenkins构建持续集成
引入RF是为了能够快速的开展自动化验收测试,Jenkins而一种持续集成工具,用于监控持续重复的工作,持续的软件版本发布/测试项目,而通过RF+Jenkins可以有利的对RF构建的接口项目进行持续集成 ...
-
使用jenkins构建持续集成平台
jenkins + Maven + svn/git + tomcat 的持续集成平台 项目管理流程: 需求分析----原型设计----开发代码----提交测试-----内部测试-----确认上线( ...
-
使用Jenkins+Docker+Gitlab+Maven搭建持续集成环境
继使用Docker搭建Gitlab后 大致的步骤如下: 开发人员通过IDE工具(IntelliJ IDEA)将代码推送到gitlab. jenkins从gitlab中获取到源码,并使用maven编译. ...
-
Jenkins + svn + maven 构建持续集成环境搭建
Jenkins简介 Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能. Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: ...
-
用MSBuild和Jenkins搭建持续集成环境(1)
http://www.infoq.com/cn/articles/MSBuild-1 你或其他人刚刚写完了一段代码,提交到项目的版本仓库里面.但等一下,如果新提交的代码把构建搞坏了怎么办?万一出现编 ...
-
用MSBuild和Jenkins搭建持续集成环境(1)[收集]
你或其他人刚刚写完了一段代码,提交到项目的版本仓库里面.但等一下,如果新提交的代码把构建搞坏了怎么办?万一出现编译错误,或者有的测试失败了,或者代码不符合质量标准所要求的底限,你该怎么办? 最不靠谱的 ...
随机推荐
-
RHEL 6.4 64bit kettle5.01导入xlsx格式的excel时报错
环境:RHEL 6.4 64bit : kettle5.01:xlsx格式的excel 创建的job,在spoon里面运行都没有问题(Linux和windows) 在windows的命令行运行也没有问 ...
-
APP下载页面(支持微信扫一扫)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
-
Log4net 日志
Log4net 日志使用介绍 概述 Log4net 有三个主要组件:loggers,appenders 和 layouts.这三个组件一起工作使得开发者能够根据信息类型和等级(Level)记录信息,以 ...
-
【js数据结构】栈解决佩兹糖果盒问题
现实生活中栈的一个例子是佩兹糖果盒. 想象一下你有一盒佩兹糖果, 里面塞满了红色. 黄色和白色的糖果, 但是你不喜欢黄色的糖果. 使用栈( 有可能用到多个栈) 写一段程序, 在不改变盒内其他糖果叠放顺 ...
-
根据excel表格字段生成sql语句
根据excel表格字段生成sql语句 1.1 前言 根据excel表格字段生成sql语句主要是利用了excel的拼接函数 CONCATENATE .该实例主要以mysql脚本支持.实例需求如下:exc ...
-
Java EE开发技术课程
新的学期开始了,j2e已经上了两节课,接下来就是对该课程的一些作业以及相关的认识: 一.课程目标: Java EE是java的企业级应用,所以在我看来在学习这门课程之前肯定要对java有一个具体的认识 ...
-
GDI基础(3):绘制图片
1.CBitmap位图类封装了Windows GDI中的位图和操作位图的成员函数.CPen.CBrush.CFont.CBitmap是常用的Windows GDI对象,和CFont一样,CBitmap ...
-
《Ubuntu标准教程》学习总结
第6章 Shell Shell就是一个命令解释器,负责完成用户与内核之间的交互. 目前流行电Shell主要有:Bourne Shell( sh ).Bourne Again Shell( Bash ) ...
-
Django安装(第一个项目)
day60 从系统中选择已存在的解释器. 新建Django项目 命令行创建: django-admin startproject mysite ...
-
MFC中设置对话框/窗体大小固定
对话框:1.响应WM_GETMINMAXINFO消息(设置lpMMI->ptMinTrackSize和lpMMI->ptMaxTrackSize)2.响应消息WM_SYSCOMMAND,屏 ...