zoukankan      html  css  js  c++  java
  • jenkins实现git钩子

    tip:不需要generic webhook插件了,trigger选择GitHub hook trigger for GITScm polling就行了,其他正常进行

    在windows下 http服务器nginx时,访问web目录提示403 Forbidden,首先需要了解nginx出现403错误是什么意思:

      403 Forbidden表示你在请求一个资源文件但是nginx不允许你查看,403 Forbidden 只是一个HTTP状态码,像404,200一样不是技术上的错误。

          找到nginx.conf:

      将user nobody 改为user root;重启ng,仍无效果。

          后发现nginx默认是不支持浏览目录的。

          找到 autoindex  off 更改为on。 重启ng,正常访问。

      ./nginx -s reload

    实现git钩子功能

    首先我们要实现一个git钩子功能,就是我们向github/码云等远程仓库push我们的代码时,jenkins能知道我们提交了代码,这是自动构建自动部署的前提,钩子的实现原理是在远端仓库上配置一个Jenkins服务器的接口地址,当本地向远端仓库发起push时,远端仓库会向配置的Jenkins服务器的接口地址发起一个带参数的请求,jenkins收到后开始工作。

    1. 打开刚创建的任务,选择配置,添加远程仓库地址,配置登录名及密码及分支。
      添加仓库地址
    2. 安装Generic Webhook Trigger Plugin插件(系统管理-插件管理-搜索Generic Webhook Trigger Plugin)如果可选插件列表为空,点击高级标签页,替换升级站点的URL为:http://mirror.xmission.com/jenkins/updates/update-center.json并且点击提交和立即获取。
    3. 添加触发器
      第2步安装的触发器插件功能很强大,可以根据不同的触发参数触发不同的构建操作,比如我向远程仓库提交的是master分支的代码,就执行代码部署工作,我向远程仓库提交的是某个feature分支,就执行单元测试,单元测试通过后合并至dev分支。灵活性很高,可以自定义配置适合自己公司的方案,这里方便演示我们不做任何条件判断,只要有提交就触发。在任务配置里勾选Generic Webhook Trigger即可
      添加触发器
    4. 仓库配置钩子 此处以码云为例,因为公司用的是码云,github的配置基本一致,进入码云项目主页后,点击管理-webhooks-添加,会跳出一个这样的框来。
      仓库配置钩子 URL格式为 http://<User ID>:<API Token>@<Jenkins IP地址>:端口/generic-webhook-trigger/invoke userid和api token在jenkins的系统管理-管理用户-admin-设置里,这是我的 URL格式 Jenkins IP地址和端口是你部署jenkins服务器的ip地址,端口号没改过的话就是8080。
      密码填你和上面userid对应的密码,我这里是root。
      下面的几个选项是你在仓库执行什么操作的时候触发钩子,这里默认用push。
      点击提交完成配置。
    5. 测试钩子
      测试钩子 点击测试,如果配置是成功的,你的Jenkins左侧栏构建执行状态里将会出现一个任务。
    测试钩子 另外,你也可以试下本地提交代码,提交代码后,jenkins也会开始一个任务,目前我们没有配置任务开始后让它做什么,所以默认它只会在你提交新代码后,将新代码拉取到jenkins服务器上。到此为止,git钩子我们配置完成。

    gif效果图:

    完整效果图

    实现自动化构建

    git push触发钩子后,jenkins就要开始工作了,自动化的构建任务可以有很多种,比如说安装升级依赖包,单元测试,e2e测试,压缩静态资源,批量重命名等等,无论是npm script还是webpack,gulp之类的工作流,你之前在本地能做的,在这里同样可以做。
    作为演示,这里只演示三个基本常用的工作流程,安装依赖包->单元测试->打包,也就是下面这三个命令。

    npm install
    npm run test
    npm run build
    
    1. 首先,和本地运行npm script一样,我们要想在jenkins里面执行npm命令,先要在jenkins里面配置node的环境,可以通过配置环境变量的方式引入node,也可以通过安装插件的方式,这里使用了插件的方式,安装一下nvm wrapper这个插件。
    2. 打开刚刚的jenkins任务,点击配置里面的构建环境,勾选这个,并指定一个node版本。
      构建环境
    3. 点击构建,把要执行的命令输进去,多个命令使用&&分开。
    执行的命令 4. 保存。
    5. 此时本地修改一下代码push测试一下(也可以点击立即构建测试),点击本次触发的那个任务,选择控制台输出,将会看到Jenkins在云端执行的过程。 云端执行的过程 命令行最后一行是Finished状态的如果是SUCCESS(蓝色)则证明执行的任务都顺利进行,是FAILURE(红色)则证明中间有重大错误导致任务失败,UNSTABLE(黄色)代表有虽然有些小问题,但不阻碍任务进行,黄色或者红色可以去命令行看下错误输出,看下哪里出了问题。 状态 6. 如果上一步是SUCCESS,点击项目的工作空间,将会发现多了dist和node_modules两个文件夹。 文件夹

    至此,我们已经搭建了一个简易的构建工作流程,构建完成了,我们需要自动化部署。

  • 相关阅读:
    [转载]c,c++及数据结构笔试题2(转)
    [转载]C,C++及数据结构笔试题1(转)
    C++指针详细解析
    [转载]转载一篇好文章:《海量数据处理常用思路和方法》
    [转载]c,c++及数据结构笔试题2(转)
    [转载]C++ 面试
    [转载]转载一篇好文章:《海量数据处理常用思路和方法》
    [转载]C,C++及数据结构笔试题1(转)
    BizTalk手动清除MessageBox数据库
    Linux中的时间和时间管理
  • 原文地址:https://www.cnblogs.com/xuzishuai/p/8873004.html
Copyright © 2011-2022 走看看