一、部署Jenkins
1、拉取Jenkins镜像
docker pull jenkins/jenkins:lts
2、查看端口占用情况
列出所有端口
netstat -ntlp
查看8080端口占用情况
lsof -i tcp:8080
3、创建并启动一个Jenkins容器
mkdir -p /app/docker_v/jenkins_home
chown -R 1000:1000 /app/docker_v/jenkins_home
docker run -d -p 8080:8080 -p 50000:50000 --name jenkins -v /app/docker_v/jenkins_home:/var/jenkins_home jenkins/jenkins:lts
说明:映射本地数据卷时,先修改下目录权限,因为/app/docker/jenkins_home目录的拥有者为root用户,而容器中jenkins user的uid为1000
4、从浏览器进入Jenkins
http://119.3.48.17:8080
5、进入jenkins容器
docker exec -it jenkins /bin/bash
cat /var/jenkins_home/secrets/initialAdminPassword
c936d800de174f2a82bab8e4d656017e
exit
6、选择“Select plugins to install”
7、选择“None”,取消选择所有Plugin。
8、点击右下角“Install”按钮。
9、Create First Admin User
admin / admin
完成安装
10、插件管理(15分钟左右安装完成)
Subversion
Publish Over SSH
Maven Integration
重启jenkins
http://192.168.26.129:8080/restart
11、全局工具配置
下载
chmod -R 777 /app/docker_v/jenkins_home/
cd /app/docker_v/jenkins_home/
jdk-8u111-linux-x64.tar.gz(提前下载好)
apache-maven-3.6.0-bin.tar.gz(提前下载好)
解压
tar -xzvf jdk-8u111-linux-x64.tar.gz
tar -xzvf apache-maven-3.6.0-bin.tar.gz
说明:全局工具配置前需要将JDK和Maven的压缩包上传到/app/docker_v/jenkins_home路径下并解压。
进入容器配置JDK
docker exec -it jenkins /bin/bash
export JAVA_HOME=/var/jenkins_home/jdk1.8.0_111
export JRE_HOME=/var/jenkins_home/jdk1.8.0_111/jre
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
source /etc/profile
exit
Global Tool Configuration
JDK
Name: jdk1.8.0_111
JAVA_HOME: /var/jenkins_home/jdk1.8.0_111
Maven
Name: apache-maven-3.6.0
MAVEN_HOME: /var/jenkins_home/apache-maven-3.6.0
12、凭据
增加SVN用户(拉取代码的账号密码)
13、系统设置
Publish over SSH
Passphrase:
SSH Server
Name: 119.3.48.***
Hostname: 119.3.48.***
Username: root
Remote Directory: /app/docker_v/
勾选Use password authentication, or use a different key
Passphrase / Password
14、NEW 任务
ASD_TEST
构建一个自由风格的软件项目
15、Source Code Management
Subversion
http://elementspeed.com/svn/apple/88.NewProduct/05.SOURCE/branches/asd@HEAD
16、定时构建(每天早上3点自动构建)
H 3 * * *
17、Build
17.1、调用顶层Maven目标
Maven Version: apache-maven-3.6.0
Goals:
-U
clean
package
-P functional(production生产)
18、Send build artifacts over SSH
Name: 192.168.26.***
Source files: projects/testproject/target/testproject.war
Remove prefix: projects/testproject/target/
Remote directory: /testproject/
Exec command:
cp /app/docker_v/jenkins_home/workspace/testproject/Dockerfile /app/docker_v/testproject/
docker stop testproject
docker rm testproject
docker rmi testproject
cd /app/docker_v/testproject/
docker build -t testproject .
docker run --name testproject -v /apt/docker_v/testproject/logs:/usr/srm/logs -d -p 8088:8080 testproject
19、创建文件夹
mkdir -p /app/docker_v/testproject/
mkdir -p /app/docker_v/testproject/logs
chmod -R 777 /app/docker_v/testproject/
chmod -R 777 /app/docker_v/asd/testproject/
备注:
1、更改Docker容器内时区
# apt-get update
# apt-get install vim
# apt install tzdata
# rm /etc/localtime
# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# date
# echo "Asia/Shanghai" > /etc/timezone
# cat /etc/timezone
最后重启容器
2、Dockerfile文件示例
FROM tomcat:latest
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ADD testproject.war /usr/local/tomcat/webapps/
VOLUME "/usr/srm/logs"
CMD ["catalina.sh", "run"]
EXPOSE 8080