Gitlab+Nexus+Jenkins打造一站式发布

技术文档网 2021-05-13
相关命令

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

---- 配置 ----

  1. 系统管理设置里面设置: java, maven
  2. 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" 完成
===========================
以下述例子演示基于 Tag 提交的自动CI/CD 流程

git@192.168.56.200:common-tools/base-springboot-parent.git/

1. Pom 配置

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>
2. Jenkins 配置
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
3. Gitlab 配置
  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
4. 测试
 1.  修改源码,通过 git 提交,观察 jenkins 无自动触发
 2.  执行 mvn release 相关命令
     mvn release:clean
     mvn release:prepare   ----> jenkins 触发新的构建
     mvn release:perform   ----> 发布并 deploy 到 nexus 上去

相关文章

  1. redis-setnx-实现原理

    setGenericCommand 方法实现 //setGenericCommand()函数是以下命令: SET, SETEX, PSETEX, SETNX.的最底层实现 //flags 可以是NX

  2. Linux安装redis并配置成service系统服务

    前言 写作这一篇文章纯粹的目的就是快速上手redis,人的精力有限,将你的精力花在学习知识上,而不是安装。 我就是喜欢简单的命令管理 Linux 上的程序,信奉傻瓜式操作是流行的前提。当你希望弄懂为什

  3. Zookeeper、Redis及其它各种中间件的集群方式

    Zookeeper 1、Server分成Leader、Follower和Observer三种角色,Leader通过选举产生,Observer不参与投票。2、客户端可以连接任何一个Zookeeper实例

  4. redis集群配置教程

    Redis集群 说明 redis支持集群最小的单位为6个实例,3个主节点,3个从节点 假设两台机器:192.168.0.1, 192.168.0.2, 每台机器安装3个结点 redis使用源码安装方

  5. Redis源码阅读笔记之链表

    链表结构 链表在Redis中应用广泛,其中列表键的底层实现之一为链表,当列表键包含的元素太多或者其值为较长的内容时会使用链表来实现,比如范围查询: LRANGE nums 0 100。 除了列表键,r

随机推荐

  1. redis-setnx-实现原理

    setGenericCommand 方法实现 //setGenericCommand()函数是以下命令: SET, SETEX, PSETEX, SETNX.的最底层实现 //flags 可以是NX

  2. Linux安装redis并配置成service系统服务

    前言 写作这一篇文章纯粹的目的就是快速上手redis,人的精力有限,将你的精力花在学习知识上,而不是安装。 我就是喜欢简单的命令管理 Linux 上的程序,信奉傻瓜式操作是流行的前提。当你希望弄懂为什

  3. Zookeeper、Redis及其它各种中间件的集群方式

    Zookeeper 1、Server分成Leader、Follower和Observer三种角色,Leader通过选举产生,Observer不参与投票。2、客户端可以连接任何一个Zookeeper实例

  4. redis集群配置教程

    Redis集群 说明 redis支持集群最小的单位为6个实例,3个主节点,3个从节点 假设两台机器:192.168.0.1, 192.168.0.2, 每台机器安装3个结点 redis使用源码安装方

  5. Redis源码阅读笔记之链表

    链表结构 链表在Redis中应用广泛,其中列表键的底层实现之一为链表,当列表键包含的元素太多或者其值为较长的内容时会使用链表来实现,比如范围查询: LRANGE nums 0 100。 除了列表键,r