Gitlab+Nexus+Jenkins打造一站式发布
mvn clean deploy
mvn release:clean
mvn release:prepre
mvn release:rollback
mvn release:perform
配置 ssh 免密登录
https://github.com/qintianjie/documents/wiki/Linux-%E5%B0%8F%E6%8A%80%E5%B7%A7
安装 nexus
下载 nexus, 解压,执行:
/opt/dev/service/nexus/bin/nexus start
具体 settings.xml 参考: settings.xml
可选配置(出错修改):
./bin/nexus
# 启动用户
RUN_AS_USER=qtj
./bin/jsw/conf/wrapper.conf
# 改成绝对路径
wrapper.java.command=/opt/service/jdk/bin/java
./conf/nexus.properties
# 修改启动端口
application-port=9992
添加到 service 启动 (可选)
vi /etc/init.d/nexus
NEXUS_HOME="/opt/service/nexus"
RUN_AS_USER=qtj
cp ./bin/nexus /etc/init.d/
chown -R qtj.qtj /opt/service/nexus
###自启动
chkconfig --add nexus
chkconfig --list|grep nexus
service nexus start
安装 gitlab
参考 https://about.gitlab.com/installation/#centos-7 mvn 项目 pom 文件参考 pom.xml
修改启动端口号:
vim /var/opt/gitlab/nginx/conf/gitlab-http.conf
修改初始密码
su - git
gitlab-rails console production
user = User.where(id:1).first // or user=User.find_by(email:'xxx@mail.com')
user.password='rootroot'
user.save!
安装 jenkins
通过 rpm 包安装
https://wiki.jenkins.io/display/JENKINS/Installing+Jenkins+on+Red+Hat+distributions
修改 /etc/sysconfig/jenkins --> JENKINS_JAVA_CMD , JENKINS_PORT 等
service jenkins start
通过 war 启动
1. download jenkins.war
2. BUILD_ID=dontKillMe nohup java -Dhudson.util.ProcessTree.disable=true -jar /opt/service/jenkins.war --httpPort=9993 > /opt/service/jenkins.log 2>&1 &
这里可以 alias 如下:
alias jenkinsstart='BUILD_ID=dontKillMe nohup java -Dhudson.util.ProcessTree.disable=true -jar /opt/service/jenkins.war --httpPort=9993 > /opt/service/jenkins.log 2>&1 &'
操作:
1. login by default pasword & create admin user
2. 用户 --> 选择用户名 --> 设置 --> 查看 API token --> set SSH public key
---- 配置 ----
- 系统管理设置里面设置: java, maven
- create build, execute shell: #!/bin/bash scp target/webim*.jar qtj@aly001:/opt/qtj/project echo "scp to aly001" ```
配置gitlab 提交自动触发
1. 打开 jenkins
2. 选择 build-project
3. 构建触发器 --> URL: http://192.168.56.20:8880/project/webim-demo-dev-build , 拷贝
-----
4. 打开 gitlab , http://192.168.56.20
5. 选择对应 project
6. setting --> integrations --> 将 3 得到的URL填到 webhooks 对应的 URL, 点击 "Add Webhook" 完成
git@192.168.56.200:common-tools/base-springboot-parent.git/
SCM 配置
<scm>
<connection>scm:git:git@192.168.56.200:common-tools/base-springboot-parent.git</connection>
<developerConnection>scm:git:git@192.168.56.200:common-tools/base-springboot-parent.git</developerConnection>
<url>git@192.168.56.200:common-tools/base-springboot-parent/tree/master</url>
<tag>HEAD</tag>
</scm>
Nexus 配置
<distributionManagement>
<repository>
<id>releasesdeploy</id>
<name>Nexus Release Repository</name>
<url>http://192.168.56.200:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>snapshotsdeploy</id>
<name>Nexus Snapshot Repository</name>
<url>http://192.168.56.200:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
1. Jenkins 创建 base-springboot-parent
2. 选择项目 --> 配置 --> 源码管理 --> Git --> Repositories
Repository URL: git@192.168.56.200:common-tools/base-springboot-parent.git
Credentials: ssh 配置
3. --> 构建触发器
勾选: Build when a change is pushed to GitLab. GitLab CI Service URL: http://192.168.56.200:8880/project/base-springboot-parent
如需安全码,可:
---> 高级 ---> Secret token ---> Generate --> 得到 Secret Token 【150553a19b0047af31d2f87d497e8938】
勾选: Poll SCM
如有问题,在 2 中选择:
---> 高级 ----> RefSpec:
+refs/tags/*:refs/remotes/origin/tags/*
---> Branch Specifier (blank for 'any')
*/master
1. 根据上述 3 得到 【URL】http://192.168.56.200:8880/project/base-springboot-parent
【Secret Token】 150553a19b0047af31d2f87d497e8938
2. Gitlab --> project --> base-springboot-parent --> Settings --> Integration
将 1 的URL和Secret Token 分别填入对应输入框
3. Trigger 勾选:
Tag push events
1. 修改源码,通过 git 提交,观察 jenkins 无自动触发
2. 执行 mvn release 相关命令
mvn release:clean
mvn release:prepare ----> jenkins 触发新的构建
mvn release:perform ----> 发布并 deploy 到 nexus 上去
相关文章
- redis-setnx-实现原理
setGenericCommand 方法实现 //setGenericCommand()函数是以下命令: SET, SETEX, PSETEX, SETNX.的最底层实现 //flags 可以是NX
- Linux安装redis并配置成service系统服务
前言 写作这一篇文章纯粹的目的就是快速上手redis,人的精力有限,将你的精力花在学习知识上,而不是安装。 我就是喜欢简单的命令管理 Linux 上的程序,信奉傻瓜式操作是流行的前提。当你希望弄懂为什
- Zookeeper、Redis及其它各种中间件的集群方式
Zookeeper 1、Server分成Leader、Follower和Observer三种角色,Leader通过选举产生,Observer不参与投票。2、客户端可以连接任何一个Zookeeper实例
- redis集群配置教程
Redis集群 说明 redis支持集群最小的单位为6个实例,3个主节点,3个从节点 假设两台机器:192.168.0.1, 192.168.0.2, 每台机器安装3个结点 redis使用源码安装方
- Redis源码阅读笔记之链表
链表结构 链表在Redis中应用广泛,其中列表键的底层实现之一为链表,当列表键包含的元素太多或者其值为较长的内容时会使用链表来实现,比如范围查询: LRANGE nums 0 100。 除了列表键,r
随机推荐
- redis-setnx-实现原理
setGenericCommand 方法实现 //setGenericCommand()函数是以下命令: SET, SETEX, PSETEX, SETNX.的最底层实现 //flags 可以是NX
- Linux安装redis并配置成service系统服务
前言 写作这一篇文章纯粹的目的就是快速上手redis,人的精力有限,将你的精力花在学习知识上,而不是安装。 我就是喜欢简单的命令管理 Linux 上的程序,信奉傻瓜式操作是流行的前提。当你希望弄懂为什
- Zookeeper、Redis及其它各种中间件的集群方式
Zookeeper 1、Server分成Leader、Follower和Observer三种角色,Leader通过选举产生,Observer不参与投票。2、客户端可以连接任何一个Zookeeper实例
- redis集群配置教程
Redis集群 说明 redis支持集群最小的单位为6个实例,3个主节点,3个从节点 假设两台机器:192.168.0.1, 192.168.0.2, 每台机器安装3个结点 redis使用源码安装方
- Redis源码阅读笔记之链表
链表结构 链表在Redis中应用广泛,其中列表键的底层实现之一为链表,当列表键包含的元素太多或者其值为较长的内容时会使用链表来实现,比如范围查询: LRANGE nums 0 100。 除了列表键,r