DevOps-jenkins

汤飞翮
2023-12-01


一、部署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 -v /etc/localtime:/etc/localtime jenkins/jenkins:lts

#若需要创建多个jenkins,重新创建目录,修改端口;
#docker run -d -p 9090:8080 -p 50001:50000 --name jenkins2 -v /app/docker_v/jenkins_home2:/var/jenkins_home -v /etc/localtime:/etc/localtime 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
    3420a8c86538409c9438dcce8c86cd15
exit

6、选择“Select plugins to install”

7、选择“None”,取消选择所有Plugin。

8、点击右下角“Install”按钮。

9、Create First Admin User
admin / admin

完成安装

2、插件管理(15分钟左右安装完成)
Localization: Chinese (Simplified)
Subversion
Publish Over SSH
Maven Integration
Role-Based Strategy


重启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

注意:maven安装完成后,需要找开发人员配置maven的配置文件,添加私服配置等(在jenkins_home里的maven安装目录里,如:/app/docker_v/jenkins_home/apache-maven-3.6.0/conf目录下的settings.xml文件)

12、凭据
增加SVN用户

13、系统设置

Publish over SSH
Passphrase: 
SSH Server
    Name: 124.70.167.38
    Hostname: 124.70.167.38
    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

注意:新建打版任务前,需要与开发人员确认项目打包模块,测试人员在如下路径添加打包pom文件;
http://119.3.15.151/svn/apple/88.NewProduct/05.SOURCE/build/pom


16、定时构建(每天早上3点自动构建)
    H 3 * * *

17、Build
17.1、调用顶层Maven目标
Maven Version:  apache-maven-3.6.0

Goals:
-U
clean
package
-P functional


18、Send build artifacts over SSH
    Name:  192.168.26.129
    #Source files:  projects/asd/target/asd-srm.war
    #Remove prefix:  projects/asd/target/
    #Remote directory:  /asd/
    Exec command:  

rm -rf /app/docker_v/qlled_test/qlled-project.war
cp /app/docker_v/jenkins_home/workspace/Qlled_Test/qlled/qlled-project/target/qlled-project.war /app/docker_v/qlled_test

rm -rf /app/docker_v/qlled_test/qlled.war
cp /app/docker_v/jenkins_home/workspace/Qlled_Test/qlled/qlled-project/target/qlled-project.war /app/docker_v/qlled_test
cd /app/docker_v/qlled_test/
docker stop qlled
mv qlled-project.war qlled.war
docker rm qlled
docker rmi qlled
cd /app/docker_v/qlled_test/
docker build -t qlled .
docker run --name qlled -v /app/docker_v/qlled_test/logs:/usr/local/tomcat/logs -v /app/docker_v/qlled_test/logs:/app/srm/logs -v /app/docker_v/qlled_test/logs:/usr/srm/logs -v /app/srm/file/template:/app/srm/file/template -v /app/srm/file/template/factoryinspect/score:/app/srm/file/template/factoryinspect/score -v /app/srm/file/upload:/app/srm/file/upload -d -p 9092:8080 qlled

19、创建文件夹
mkdir -p /opt/docker_v/asd/
mkdir -p /opt/docker_v/asd/logs
chmod -R 777 /opt/docker_v/asd/
chmod -R 777 /opt/docker_v/asd/logs/

备注:

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 asd-srm.war /usr/local/tomcat/webapps/
VOLUME "/usr/srm/logs"
CMD ["catalina.sh", "run"]
EXPOSE 8080

20:项目部署成功后,查看日至命令;
docker logs -f --tail="150" product

21:
#######20211211
设置登录用户启动docker

sudo gpasswd -a $USER docker     #将登陆用户加入到docker用户组中
newgrp docker     #更新用户组
docker ps -a    #测试docker命令是否可以使用sudo正常使用


22:迁移服务器,批量修改多个打版任务中的配置内容;

1:sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录`
如:cd */jenkins_home/jobs

sed -i "s/127.0.0.1/127.0.0.2/g"  `grep 127.0.0.1 -rl ./**/config.xml`
2:jenkins -> 系统管理 ->Tools and Actions->点击:读取设置;


 

 类似资料: