Jenkins进行持续集成
仔细总结一下,我们会发现,除了编写代码,我们每天有相当一部分时间花在了编 译、运行单元测试、生成文档、打包和部署等烦琐且不起眼的工作上,这就是构建。如果我们现在还手工这样做,那成本也太高了,于是有人用软件的方法让这一系 列工作完全自动化,使得软件的构建可以像全自动流水线一样,只需要一条简单的命令,所有烦琐的步骤都能够自动完成,很快就能得到最终结果。
Maven真比自己的“规范化Ant”强大?其实他不知道自己只是在重新发明轮子,Maven已经有一大把现成的插件,全世界都在用,你自己不用写任何代码!
目录
常用CI/CD
最最流行的,也是使用最多的Jenkins 有着持续集成DNA的ThoughtWorks GO。理念:"Deployment as pipeline" (华为容器平台应该是基于GO做的二次开发实现) Atlassian工具链之一的Bamboo 与Gitlab紧密集成的Gitlab CI 专为开源打造的Travis CI,与Github紧密集成 使用Python语言实现的Buildbot,相信Pythoner看到会喜欢
安装
通过docker安装
普通安装
ip 192.168.0.16
docker pull jenkins [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE jenkins latest cd14cecfdb3a 2 weeks ago 696MB docker run --name=jenkins -it -u root -d -p 8080:8080 -p 50000:50000 -v /data/jenkins:/var/jenkins_home cd14cecfdb3a --name=jenkins 命名 -it 交互模式运行 -u root root权限 -d 后台运行 -p 8080:8080 映射端口 -p 50000:50000 映射端口 -v /data/jenkins:/var/jenkins_home 映射目录 3f08dc4f3f5d 本地镜像ID docker images name 命令可查看ID eg #docker images jenkins #官方 mkdir -p /data/jenkins-data docker run \ --name=jenkins \ -u root \ --rm \ -d \ -p 8080:8080 \ -p 50000:50000 \ -v /data/jenkins-data:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ jenkinsci/blueocean #在运行docker容器时可以加如下参数来保证每次docker服务重启后容器也自动重启: $docker run --restart=always #如果已经启动了则可以使用如下命令: $docker update --restart=always <CONTAINER ID> 登入容器: docker exec -it jenkins /bin/bash 同步容器时间 在Dockerfile中加入 RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && ntpdate cn.pool.ntp.org 或 容器运行后把容主机的/usr/share/zoneinfo/Asia/Shanghai 复制到容器的/etc/localtime #先cp 到 /data/jenkins cp /usr/share/zoneinfo/Asia/Shanghai /data/jenkins plubs Publish Over SSH Maven Integration Build clean install
http://cn.jenkins.io/doc/book/installing/
安装请见 Docker入门
jenkins使用
要先安装maven 什么的 Build Root POM pom.xml Goals and options clean install Post Steps Ex shell cd /var/jenkins_home/workspace/doll-api-test/target scp doll-api-test.jar [email protected]:/data/update/boot/doll-api sen build aritcle ex command #记得要要全局那加ssh server
gradle
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。 当前其支持的语言限于Java、Groovy和Scala,计划未来将支持更多的语言。
和maven同级,更简洁一些
https://docs.gradle.org/current/userguide/userguide.html
maven
Build->Goals and options ->clean install -Pbeta -Dmaven.test.skip=true
Jenkins部署Maven多环境项目(dev、beta、prod)的参数设置
snapshot快照仓库和release发布仓库
maven中的仓库分为两种,snapshot快照仓库和release发布仓库。snapshot快照仓库用于保存开发过程中的不稳定版 本,release正式仓库则是用来保存稳定的发行版本。定义一个组件/模块为快照版本,只需要在pom文件中在该模块的版本号后加上-SNAPSHOT即可(注意这里必须是大写)。release版本不允许修改,每次进行release版本修改,发布必须提升版本号。而snapshot一般是开发过程中的迭代版本,snapshot更新后,引用的项目可以不修改版本号自动下载构建。
MAVEN snapshot快照和release发布库的区别、作用
git branch
这里应该 填写上操作过程 在我的geany上
goodJenkins Git Parameter 插件配置过程
Jenkins:使用Git Parameter插件实现tag或分支的选择性构建
jenkins插件Git Parameter Plug-In分支构建项目
android
[ https://blog.csdn.net/youshi520000/article/details/81027940 Android 使用 Jenkins 实现自动化打包【流程】&【踩坑]
启动
supervisor
#配合supervisor,把Jenkins直接变成一个服务。 #可以在Linux上创建一个ci用户,然后,用supervisor启动并指定9090端口: # /etc/supervisor/conf.d/ci.conf [program:ci] command=java -jar /home/ci/jenkins.war --httpPort=9090 user=ci autostart=true autorestart=true startsecs=30 startretries=5
权限控制
Role-based Authorization Strategy
Role-based Authorization Strategy
超级用户 root root
other evan
group ops java admin
基于项目(job)
Project roles 创建一个 dev 只配置所以 dev开头的内网项目 Role to add dev Pattern dev.* #配置 选择【 Manage Roles】 在【Global roles】创建一个新的全局角色 anyone,该角色不开放系统权限,只读. 然后把你的号添加到 Global roles Item roles 里面 加入你的号 并勾上 dev 注意: Global roles 必要有,不登录了什么 都没提示全局没有读权限
权限see also
Jenkins教程四基于Role-based Authorization Strategy的用户权限管理
enkins教程四 基于【Role-based Authorization Strategy】的用户权限管理
插件
dashboard 插件
dashboard 插件 Dashboard View 用来自定义自己的主页,例如对下列的 jenkins 的主页
Wall display
用来将 jobs 的状态更加直观地显示在大屏幕上
ssh server
troubleshooting
jenkins.plugins.publish_over.BapPublisherException: Failed to connect and initialize SSH connection. Message: [Failed to connect session for config [win8r2]. Message [USERAUTH fail]] 在jenkins 上使用publish over ssh ,报上述错误, ssh server 1. 配置里面添加 jenkins pri key 2.远程被 jenkins 的远程那里添加jenkin的pub key
https://ask.csdn.net/questions/379784
jenkins
xk
dev 开发环境 beta 测试环境 release 正式环境
DB
磁盘处理
trouble shooting
WeChat.java:[266,43] 找不到符号
[ERROR] /root/.jenkins/workspace/release_read/xtwl_service/src/main/java/org/platform_service/universal/pay/WeChat.java:[266,43] 找不到符号 Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project xtwl_service: Compilation failure 原来是我用了 clean package -Prelease 之前还替换了配置文件 哈哈
offline
点击Continue,大部分人都会出现这个界面,毕竟在天朝,我们先选择跳过
Jenkins更多错误
进阶
参考
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具
Jenkins学习之自动构建部署maven项目 have emailetc
学习maven的使用,看到一篇很实用的入门教程(菜鸟级入门)
Jenkins 持续集成平台构建之使用nexus搭建maven私有仓库
Jenkins之配置Maven和JDK-yellowcong
基于Linux实现Jenkins+maven+git+tomcat的自动化构建部署项目
Linux平台搭建Jenkins+Maven+Shell实现自动化构建部署
docker
Jenkins Docker安装及Docker build step插件部署配置
原创:jenkins+github+docker+maven自动化构建部署
权限
Jenkins进阶系列之——14配置Jenkins用户和权限
maven
Jenkins部署Maven多环境项目(dev、beta、prod)的参数设置
通过Maven和Jenkins插件解决Java项目的配置管理