关于Jenkins持续集成:

一、Gitea

1)https://git-scm.com/download/win下载Git并安装 https://gitea.io/zh-cn/ 下载Gitea私人仓库

2)Gitea放在想要安装的路径下,如图:

3)双击Gitea生成custom文件夹 //方便后面创建服务时配置config文件

4)使用sc create gitea start= auto binPath= ""E:\Gitea\gitea-master-windows-4.0-386.exe" web --config "E:\Gitea\custom\conf\app.ini"" //使用sc命令创建gitea服务 并配置config文件 记得把命令路径部分改为实际路径

5)通过“localhost:3000”访问Gitea(Gitea\custom\conf路径下的app.ini可修改访问端口号)

6)安装gitea如图 支持一下四种数据库,我们这里使用的是Mysql:

    mysql安装:mysql官网下载.msi安装文件 一直下一步安装(记下安装路径)在cd或直接在安装路径下打开命令行

    使用:mysqld --initialize --console初始化数据库,执行完成后,会输出 root 用户的初始默认密码 复制输出密码

    使用:mysqld install 安装数据库 后 使用:net start mysql启动数据库服务

    使用:mysql -h 主机名 -u 用户名 -p登陆数据库 用户名输入root 密码输入之前复制的默认密码

    最后使用:CREATE DATABASE gitea; 创建gitea的库

7)在一般设置中,设置站点名称/仓库根目录(最好自己建在工作目录里以防找不到)/SSH域名等。

8)最后可在 可选设置-管理员账号设置界面里创建管理员账号,用管理员账号登陆gitea。

9)在gitea中创建仓库:在gitea中点击右上角加号 点击创建仓库 (这里如果报500错误是因为数据库路径没有配对),输入仓库和其他信息创建仓库(注意要勾选这个选项)

10)若使用ssh上传代码则需要在仓库中配置部署密钥:打开想要设置的仓库-仓库设置-添加部署密钥:

    1.密钥的名字:随便输入 可不输入 会自动生成

    2.密钥的内容:找到ssh路径 默认在 C:\Users\<用户名>\.ssh 右键(看看有没有id_rsa.pub文件 没有进入下一步,如有进入第4步)使用git bash here(注意这里需要先安装git 在官网下载 安装即可)

    3.使用 ssh-keygen -t rsa -C "<your email address>" 生成公钥和私钥 一直回车即可

    4.此处生成的 id_rsa.pub即是公钥 全部复制 粘贴即可

    5.若出现如下提示,则需要配置ssh环境变量 C:\Program Files\Git\usr\bin(我这里是git安装的默认路径 改为你git安装的路径然后加\usr\bin):

    

二、安装jenkins

1)Jenkins的安装:https://jenkins.io/zh/download/下载jenkins直接安装即可,默认安装路径为 C:\Program Files (x86)\Jenkins,默认端口为8080 若修改端口号则打开Jenkins.xml在<arguments>标签中修改

2)登录localhost:8080 安装jenkins (需要java,正常安装即可,安装完成就行)

3)Jenkins的全局配置 点击Manage Jenkins-Global Tool Configuration进入全局配置:

    1.在这里我们需要配置需要用的的环境 主要是运行主环境:JDK、打包程序:Maven、上传于下载代码:Git

    2.JDK配置:Name就是给JDK起个名字,JAVA_HOME就是JDK的路径了(注意这里不要配置成jre,是java.exe的路径 最好与电脑中配置的java环境变量相同)若出现新增安装点击删除安装即可

    3.Maven配置:需先下载Maven过程略,配置内容与java相同 不过需在Maven配置项中指向Maven的setting.xml

    

    

    4.Git配置:指向Git.exe的路径与Java/Maven配置基本相同

4)Jenkins创建工程:创建工程需与仓库(gitea)工程名称保持一致(不然后面会遇坑),创建Freestyle project的工程 其他工程均有格式限制 用起来很不方便

5)Jenkins描述:描述可输入对该项目的介绍等信息 此项为可选项

6)Jenkins源码管理:源码管理的主要作用是从仓库中拷贝代码到jenkins,源码管理选项若使用的是svn则勾选svbversion选项,我这里使用的是Git(Git类仓库均选Git,如Gitea/gitlab/github) RepositoriesURL填写项目克隆路径

这里需要使用http不能使用ssh。Credentials选项填写git仓库的身份凭证 最好是root用户 其他选项不变。

7)Jenkins构建触发器:构建触发器其实就是钩子,作用就是配置一个验证,使其作为Jenkins的一个通道,在其他仓库中可通过此通道上传代码到Jenkins,这里我们选择第一个,这里身份验证令牌个随便输入,输入后则得到远程令牌为:Jenkins的地址/job/项目名称/build?token=上面输入的东西,如图所示,(我这里就是:http://localhost:8080/job/dasd/build?token=ZZMTOKEN),每次访问这个路径都会触发一次构建,若直接复制到浏览器地址栏也会触发一次空构建,后面我们配置到Gitea后每次上传代码都可同步到Jenkins并触发一次构建:

8)Jenkins构建:构建主要是进行打包和清理打包文件:选择Invoke top-level Maven targets来使用Maven进行Clean和Package

    1.选择Maven版本,直接使用全局配置中已经配置的Maven,目标直接输入要使用的命令,mvn clean则数据clean即可,可创建多个步骤,可以先clean再package。

      (忽略测试脚本打包:package -Dmaven.test.skip=true)

9)Jenkins构建后操作:构建后操作主要是进行部署:这里分为两种项目说第一种:搭建网页项目发布到tomcat,第二种搭建springboot项目或可执行项目

    1.搭建web项目(非常简单):使用Deploy war/ear to acontainer插件

      

    2.搭建stringboot项目,可使用Post build task插件,这个插件的作用是可调出windows的命令行 可以执行dos命令

     

     例如:启动java的jar则可使用java -jar 加项目路径即可启动项目 这里网上好多人因为Jenkins会自动结束启动的进程而发愁,有很多解决方案是使用 set BUILD_ID=dontKillMe 命令来临时修改进程id,

      这里方法我不是太赞成因为你就算使用如下代码成功启动项目,不被Jenkins杀掉进程 但是问题依然存在:下一次构建项目如何来结束这个进程呢?如果不结束这个进行那么mvn clean命令必然会失败。

set BUILD_ID=dontKillMe
start java -jar "C:\Program Files (x86)\Jenkins\workspace\testjar\ace-center\target\ace-center.jar" --server.port=

     不过这个问题确实也有解决方案 仔细想了一下 确实可以在启动时给jar一个端口 然后每次构建前先查找端口对应的PID然后结束此PID 在进行mvn clean即可 但是过程实在繁琐 我在这里也贴出来

set BUILD_ID=dontKillMe
start java -jar "C:\Program Files (x86)\Jenkins\workspace\testjar\center\target\bookcenter.jar" --server.port= 增加到构建前
@echo off
for /f "tokens=5" %%i in ('netstat -aon ^| findstr ":9000"') do (
set n=%%i
)
taskkill /f /pid %n%

这里我有一个更好的办法:可先把java复制一份到另外的路径 然后java.exe进行重命名 改为cava.exe 然后在电脑中配置cava.exe的环境变量,然后每次启动使用,start cava -jar 加项目路径即可(start会打开一个新的命令行窗口 不会被jenkins杀掉 并且使用start命令可打开多个jar 比如我们的项目就需要启动7个jar)。如图jenkins 使用的java而自己的项目使用的是cava,这样我们现在只用结束所有进程名为cava的进程即可结束。

首先贴下启动jar程序的代码:

start  cava -jar "C:\Program Files (x86)\Jenkins\workspace\Server\auth\auth-server\target\auth.jar" 

接着 我们在构建前 只需要按照名称杀进程即可:

taskkill /im cava.exe /f /t
exit

注:若要查看生成的日志 使用start /b 命令 再重定向到某个目录下即可保存和查看日志

10)再gitea中配置HOOK(钩子)

    1.打开gitea中项目的仓库,点击添加web钩子,选择gitea。

    2.在目标url位置粘贴刚才触发构建器保存的网址即可,步骤7.(我这里是http://localhost:8080/job/dasd/build?token=ZZMTOKEN)

    3.添加后可使用测试推送来验证连接的正确性:

三、使用Jenkins

整个配置完成了 现在我们只要上传代码到git就可以直接完成整个流程

1)使用git上传代码:如图位置复制仓库地址 使用http或ssh都可以 记得把localhost改为ip

2)git命令记录:

. git init //初始化仓库

. git add .(文件name) //添加文件到本地仓库

. git commit -m "first commit" //添加文件描述信息

. git remote add origin + 远程仓库地址 //链接远程仓库,创建主分支

. git pull origin master // 把本地仓库的变化连接到远程仓库主分支

. git push -u origin master //把本地仓库的文件推送到远程仓库 

注:git push -u origin master –f  //强制push

3)上传代码到gitea后就会gitea就会推送到jenkins 何时推送取决于刚才配置钩子时触发条件的设置

4)Jenkins可在这里查看构建日志:

windows下使用Jenkins+Gitea持续集成的更多相关文章

  1. 全陷阱破解:在Linux环境下的Jenkins中持续集成Androidproject

    本方案以 RHEL / Centos 64位Linux操作系统为例,由于这是眼下最常见的server环境. 一.安装Java SDK. 建议,不要使用诸如yum之类的玩意自己主动安装,由于openJD ...

  2. ARTS-S gitlab与jenkins实现持续集成

    jenkins配制 系统管理->管理插件->可选插件->选择安装 Gitlab Hook Plugin和Build Authorization Token Root Plugin插件 ...

  3. Jenkins持续集成(上)-Windows下安装Jenkins

    环境:Windows 2008 R2.Jenkins2.235.1: 概要 前面写过一篇文章,<自动发布-asp.net自动发布.IIS站点自动发布(集成SLB.配置管理.Jenkins)> ...

  4. 用MSBuild和Jenkins搭建持续集成环境(2)

    http://www.infoq.com/cn/articles/MSBuild-2   作者 Mustafa Saeed Haji Ali ,译者 李剑 发布于 2012年10月23日 | 注意:  ...

  5. RF+Jenkins构建持续集成

    引入RF是为了能够快速的开展自动化验收测试,Jenkins而一种持续集成工具,用于监控持续重复的工作,持续的软件版本发布/测试项目,而通过RF+Jenkins可以有利的对RF构建的接口项目进行持续集成 ...

  6. 使用Jenkins进行持续集成ionic3项目

    Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能.  网上大多数是关于.net web网站以及 ...

  7. 在windows下使用jenkins部署docker容器

    在windows下使用jenkins部署docker容器最近在学习jenkins,docker部署来实现集成部署,所以想在windows下面实现测试,但是发现在windows下docker支持不是很好 ...

  8. Windows下 安装Jenkins 并发布至docker 实战

    网上的教程基本都是Linux系统下安装Jenkins,并且发布到Linux系统下的docker中, 于是打算在全部windows的环境中,完成Jenkins的持续集成功能. 环境: 服务器环境: wi ...

  9. 【iOS】Jenkins Gitlab持续集成打包平台搭建

    Jenkins Gitlab持续集成打包平台搭建 SkySeraph July. 18th 2016 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点: ...

随机推荐

  1. WS的发布与调用

    WebService—CXF整合Spring实现接口发布和调用过程  https://www.cnblogs.com/domi22/p/8094517.html   spring 集成cxf 第二弹( ...

  2. 机器学习Label Encoder和One Hot Encoder

    标签编码(Label Encoder) 在本例中第一列是Country, 如果我们要运行任何模型, 数据中不能包含文本 所以要对文本进行处理 接下来,我们从sklearn库中导入LabelEncode ...

  3. 开源导入导出通用库Magicodes.ExporterAndImporter发布

    导入导出通用库 Magicodes.ExporterAndImporter为心莱团队封装的导入导出通用库,并且仍在跟随项目不断地打磨. GitHub地址: https://github.com/xin ...

  4. 注解@Async解决异步调用问题

    序言:Spring中@Async 根据Spring的文档说明,默认采用的是单线程的模式的.所以在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的. 那么当多个任务的执行势必会相互影响. ...

  5. Linux 笔记 - 第二十一章 配置 NFS 服务

    一.前言 NFS(Network File System,网络文件系统),主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录.NFS 客户端(一般为应用服务器,例如web)可以通 ...

  6. 论文阅读 | DeepDrawing: A Deep Learning Approach to Graph Drawing

    作者:Yong Wang, Zhihua Jin, Qianwen Wang, Weiwei Cui, Tengfei Ma and Huamin Qu 本文发表于VIS2019, 来自于香港科技大学 ...

  7. Windows Docker 部署 Spring Boot 项目

    目录 Docker Configuration Config IDEA Plugin Create Spring Boot Project Containerize It Use Dockerfile ...

  8. Decorator:从原理到实践

    前言 原文链接:Nealyang/personalBlog ES6 已经不必在过多介绍,在 ES6 之前,装饰器可能并没有那么重要,因为你只需要加一层 wrapper 就好了,但是现在,由于语法糖 c ...

  9. 微信小程序中scoll-view的一个小坑

    在微信小程序开发中,有时候swiper-view会出现显示不全的问题,我们可以用scoll-view来把它包裹下,但是要用scoll-view就一定要设置height,而我们经常是在页面中加的这个组件 ...

  10. UnicodeDecodeError: 'gbk' codec can't decode byte 0xb0 in position 279: illegal multibyte sequence

    with open(r'E:\yy\mysql.txt') as wk: print(wk.readlines()) Traceback (most recent call last): File & ...