zoukankan      html  css  js  c++  java
  • [12] Jenkins

    1. 简介

    略...

    2. 安装 Jenkins

    (1) RPM 安装

    # a. 如果手头没有 RPM 包,就在清华源挑一个
    wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat-stable/jenkins-2.249.3-1.1.noarch.rpm
    yum install jenkins-2.249.3-1.1.noarch.rpm
    
    # b. 如果已有有合适的 RPM 包(特指手头还有与版本相对应的一堆插件时嘿嘿)
    rpm -ivh jenkins-2.99-1.1.noarch.rpm
    

    (2) rpm -ql jenkins 看装了哪些

    /etc/init.d/jenkins
    /etc/logrotate.d/jenkins
    /etc/sysconfig/jenkins         # 配置文件,我在这里面把端口改成10240
    /usr/lib/jenkins
    /usr/lib/jenkins/jenkins.war
    /usr/sbin/rcjenkins
    /var/cache/jenkins
    /var/lib/jenkins
    /var/log/jenkins
    

    (3) http://虚机IP:10240 访问 Jenkins

    admin/admin

    (4)cd /var/lib/jenkins/plugins → 把常用插件的压缩包拉过去 → tar -xzvf plugins.tar.gzmv 解压目录/* .systemctl restart jenkins

    (5)系统管理 → 管理插件 → 已安装

    3. 集成 GitLab

    3.1 example

    (1)创建一个任务,在配置详情中的【构建】中输入一个简单 Shell 命令(如 pwd)以查看构建效果;

    (2)GitLab 上新建一个项目

    (3)在码云上找一个开源监控项目,用 HTTPS 方式下载后解压

    (4)因为是在 win 下的码云上的项目,所以我拿普通用户(root 用户的操作在虚机中)进行了 Existing folder 中的这串操作,遇到了两个问题(我可能和 Git 相克看来)

    ① push 的时候输入密码问题,看到这种就知道我咋输都不会对的。改成 HTTP 方式,这时再 push 会弹框提示输入账号密码,这时候把你的 GitLab 账号密码输入即可。

    ② 怎么都 push 不上去(没做任何分支保护)!最后让 root 用户随便 push 个文件上去(开光行为?),我才 push 上去的。

    (5)在 freestyle-job 的「源码管理」中关联 monitor 项目

    (6)保存配置,点击“立即构建”,然后查看控制台输出:

    (7)vi /server/scripts/deploy.sh 写一个发布脚本

    #!/bin/bash
    
    CODE_DIR=/var/lib/jenkins/workspace/freestyle-job/
    TIMESTAMP=`date +%F-%H-%M-%S`
    NGINX_LOCATION=/usr/local/nginx
    
    # 打包
    cd $CODE_DIR && tar -zcf /tmp/web-${TIMESTAMP}.tar.gz ./*
    
    # 拷贝
    cp /tmp/web-${TIMESTAMP}.tar.gz $NGINX_LOCATION
    
    # 解压
    cd $NGINX_LOCATION && mkdir web-${TIMESTAMP}
    tar -xf web-${TIMESTAMP}.tar.gz -C web-${TIMESTAMP} && rm -rf web-${TIMESTAMP}.tar.gz
    
    # 软链接: %NGINX_HOME% / html ~> web-${TIMESTAMP}
    cd $NGINX_LOCATION && rm -rf html && rm -rf html && ln -s web-${TIMESTAMP} html
    

    安装 Jenkins 过程中,默认创建了一个 jenkins:jenkins 用户,【构建】的执行者就是这个用户(配置文件有提到)。所以,记得给脚本文件增加 other 的可执行权限,还要再查看下 other 是否对 Nginx 目录可写。

    (8)配置 freestyle-job 的构建脚本,然后点击“立即构建”

    【btw】如果上一步没给执行脚本或者操作目录相应的权限,点击“立即构建”你将会看到:

    (9)最终,访问 192.168.206.130:8888(Nginx 监听端口)

    3.2 WebHooks

    GitLab → Jenkins

    (1)Jenkins

    (2)GitLab

    (3)Test-触发构建

    3.3 构建结果通知

    Jenkins → GitLab

    (1)GitLab

    (2)Jenkins

    (3)Test

    ① 希望哪个项目的构建结构返回 GitLab,就配置对应的任务,这里就配置 freestyle-job 的「构建后操作」了:

    ② 保存之后点击“立即构建”,然后查看 GitLab:

    ③ 点击绿色小勾,查看详细内容:

    4. 搭建 Maven 私服

    4.1 下载/安装

    [Maven] https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.3.9/binaries/

    tar -zxvf apache-maven-3.3.9-bin.tar.gz
    mv apache-maven-3.3.9 /usr/local/
    ln -s apache-maven-3.3.9/ maven
    

    [nexus] http://www.sonatype.com/download-oss-sonatype 同理,然后对这俩都整个软链接方便操作。

    nexus 目录结构:

    vim /usr/local/nexus/etc/nexus-default.properties 知道了默认端口是 8081:

    4.2 访问 Nexus

    (1)访问 http://192.168.206.130:8081,可以看到如下界面(so Cool~):

    (2)右上角 Sign In,用户名 admin 密码 admin123;登录成功后,进行如下操作:

    (3)修改 maven/conf/settings.xml:

    <!-- 找到 <servers> 标签,添加 Nexus 默认认证信息 -->
    <server>
      <id>nexus-6x7-releases</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
    <server>
      <id>nexus-6x7-snapshot</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
    
    <!-- 找到 <mirrors> 标签,添加镜像 -->
    <mirror>
      <id>myMirror</id>
      <name>6x7 maven</name>
      <url>http://192.168.206.130:8081/repository/maven-public/</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
    
    <!-- 找到 <profiles> 标签,添加仓库信息 -->
    <profile>
      <id>nexus-6x7</id>
      <repositories>
        <repository>
          <id>central</id>
          <url>http://192.168.206.130:8081/repository/maven-public/</url>
          <releases><enabled>true</enabled><releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>
      <repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>central</id>
          <url>http://192.168.206.130:8081/repository/maven-public/</url>
          <releases><enabled>true</enabled><releases>
          <snapshots><enabled>true</enabled></snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
    
    <!-- 文件末尾,激活仓库 -->
    <activeProfiles>
      <activeProfile>nexus-6x7</activeProfile>
    </activeProfiles>
    

    4.3 关联 Jenkins

    可以先去码云找个 Maven 项目放到 GitLab 上,然后在 Jenkins 上创建一个任务(如下),再然后 ... 就没然后了,我不想测了我要去洗澡了。

    5. Pipeline

    5.1 概述

    Jenkins 2.0 的精髓是“Pipeline as Code”,是帮助 Jenkins 实现 CI 到 CD 转变的重要角色。什么是 Pipeline,简单来说,就是一套运行于 Jenkins 上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂发布流程。Pipeline 的实现方式是一套 Groovy DSL,任何发布流程都可以表述为一段 Groovy 脚本,并且 Jenkins 支持从代码库直接读取脚本,从而实现了“Pipeline as Code”的理念。

    Pipeline:是一个用户定义的 CD 流水线模式。Pipeline 代码定义了通常包含构建、测试和发布步骤的完整的构建过程。

    • Node 是一个机器,它是 Jenkins 环境的一部分,并且能够执行 Pipeline。同时,node 代码块也是脚本式 Pipeline 语法的关键特性。
    • Stage 块定义了在整个 Pipeline 中执行的概念上不同的任务子集(例如“构建”、“测试”和“部署”阶段),许多插件使用它来可视化或呈现 Jenkins 管道状态/进度。
    • Step 是一项任务。从根本上讲,一个步骤告诉 Jenkins 在特定时间点(或过程中的“步骤”)要做什么。例如,使用 sh step: sh 'make' 可以执行 make 这个 Shell 命令。

    5.2 example

    (1)创建一个 Pipeline,通过「Definition=Pipeline script」直接在 Jenkins 中写好 Pipeline 流程:

    (2)点击“立即构建”,点击那三个“带有 ms 值的绿块”,可以查看 Logs:


    (3)还可以把 JenkinsFile 写在项目中,然后在 Jenkins 中配置 JenkinsFile 的位置来完成。

    1. 先在 GitLab 中创建 JenkinsFile;
    2. 配置 「Definition=Pipeline script from SCM」,填写相关配置;
    3. 点击“立即构建”

    (4)再看个有点实际意义的 Pipeline:

  • 相关阅读:
    典型的 C++ 程序员成长经历
    C语言中的常用文件操作
    sscanf与正则表达式
    黑莓8700 常用快捷键
    [分享]《张靓颖个人资源汇集.九月二日更新》
    [分享]【★超级女声★】【★张靓颖★】【推荐】
    [原创]根据TreeView中节点的不同,来绑定不同的dropdownlist
    [转贴]用Vs.net制作安装程序,在安装包中自动为客户创建数据库
    [转贴]在Asp.Net中的几种事务处理的方法
    冻结DataGrid中的列的比较简单的实现方法!
  • 原文地址:https://www.cnblogs.com/liujiaqi1101/p/15316368.html
Copyright © 2011-2022 走看看