Jenkins 持续集成工具
相关文章:Docker安装GitLab
安装 JDK
tar -zxvf jdk-8u181-linux-x64.tar.gz -C /usr/local/
安装Maven
tar -zxvf apache-maven-3.9.5-bin.tar.gz -C /usr/local/
给文件夹改个名字
cd /usr/local/
mv jdk1.8.0_181/ jdk
mv apache-maven-3.9.5/ maven
配置Maven
vim /usr/local/maven/conf/setting.xml
<mirrors></mirrors>
标签加上:
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<profiles></profiles>
标签加上:
<profile>
<id>jdk18</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
<settings></settings>
标签加上:
<activeProfiles>
<activeProfile>jdk8</activeProfile>
</activeProfiles>
Jenkins
拉取 Jenkins 镜像
低版本Jenkins插件容易安装失败!!!
docker pull jenkins/jenkins
编写 docker-compse
/usr/local/docker/jenkins_docker/docker-compose.yml
:
version: '3.1'
services:
gitlab:
image: 'jenkins/jenkins'
container_name: jenkins
restart: always
ports:
- '8080:8080'
- '50000:50000'
volumes:
- './data/:/var/jenkins_home'
创建容器
docker-compose up -d
跟踪日志
docker logs -f jenkins
报错显示权限不足:
加上权限
chmod -R 777 data
重启
docker-compose restart
得到密码
docker logs -f jenkins
测试访问:
http://192.168.31.102:8080/
输入上一步得到的密码 > 选择插件来安装(默认) > 安装 > 继续…
插件安装失败
1)可以尝试切换国内镜像站
修改
/usr/local/docker/jenkins_docker/data/hudson.model.UpdateCenter.xml
<?xml version='1.1' encoding='UTF-8'?> <sites> <site> <id>default</id> <url>https://mirror.esuni.jp/jenkins/updates/update-center.json</url> </site> </sites>
2)如果还不能解决请使用最新版本Jenkins
安装 Jenkins 插件
安装Git Parameter和Publish Over SSH插件
配置 Jenkins
将JDK和Maven移动到Jenkins的data目录下
mv /usr/local/jdk/ /usr/local/docker/jenkins_docker/data/
mv /usr/local/maven/ /usr/local/docker/jenkins_docker/data/
进入容器
docker exec -it jenkins bash
得到容器内JDK、Maven路径
cd ~
ls # 查看jdk,maven是否在该目录下
pwd # 得到路径/var/jenkins_home
Jenkins指定JDK、Maven
用于让Jenkins拉取和构建代码
Jenkins指定Publish over SSH
用于让Jenkins将构建好的jar包推送目标服务器,并且通知目标服务器
提前在192.168.31.102服务器下创建好目录:/usr/local/test
测试Jenkins
在GitLab上创建测试项目mytest
相关参考:Docker安装GitLab
Jenkins上创建测试任务
1)配置Git拉取代码
拉取成功会在容器内workspace下创建mytest目录: docker exec -it jenkins bash cd /var/jenkins_home/workspace
2)配置Maven构建jar包
mvn clean package -DskipTests
清除之前的构建文件,然后编译、测试和打包项目,但在这个过程中跳过运行测试
3)配置SSH,将构建后的jar包放到目标服务器
构建成功会在容器内/var/jenkins_home/workspace/mytest目录下target中存在jar包
mytest项目构建自定义镜像
docker/pom.xml
<build>
标签中增加,固定Jar包名称
<finalName>mytest</finalName>
docker/Dockerfile:
FROM daocloud.io/library/java:8u40-jdk
COPY mytest.jar /usr/local/
WORKDIR /usr/local
CMD java -jar mytest.jar
docker/docker-compose.yml:
version: '3.1'
services:
mytest:
build:
context: ./
dockerfile: Dockerfile
image: mytest:v2.0.0
container_name: mytest
ports:
- 8081:8080
测试构建成功
构建成功进入192.168.31.102查看Docker中是否以及存在mytest
docker ps
测试访问:
http://192.168.31.102:8081/test
配置 Jenkins 根据 tag 构建
配置好后构建如图:
测试:
- 在GitLab中创建标签 v1.0.0
- 修改 mytest 项目
docker-compose.yml
对应的image
版本号为 v2.0.0 - 提交推送GItLab
- 在GitLab中创建标签 v2.0.0
- 在Jenkins中选择 v2.0.0 执行 Build
- 测试访问 http://192.168.31.102:8081/test
Jenkins密码忘记后的解决方法
- 首先我们找到 Jenkins 专用的用户数据存放路径
find / -name config.xml
- 编辑此路径下的文件
vim /var/lib/jenkins/users/admin_3428504826518777999/config.xml
- 将密码换成6个1
111111
#jbcrypt:$2a$10$DdaWzN64JgUtLdvxWIflcuQu2fgrrMSAMabF5TSrGK5nXitqK9ZMS
4. 重启服务
docker restart jenkins/jenkins
5. 重新登录
文档信息
- 本文作者:carpe
- 本文链接:https://carpedx.com/wiki/docker-jenkins/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)