Skip to content

Jenkins 部署Windows服务完成自动打包

1787字约6分钟

Jenkins

2021-11-18

安装Jenkins

确认安装环境

Jenkins要求安装 Java8-11, 其余Java版本暂不支持

java SDK安装后记得配置环境变量

环境变量配置

系统变量创建JAVA_HOME, 选择C:\Programe Files\jdk-11.0.9

Path变量添加%JAVA_HOME%\bin (如果不成功可以这个地方尝试使用绝对路径)

如果原先已经安装过jdk, 要先卸载, 然后把之前配置的环境变量删除干净

运行以下命令来确认java配置成功

java -version

安装Jenkins

Jenkins下载地址: https://jenkins.io/download/ , 下载war包, 命令行安装.

下载完成后, 进入命令行模式, 直接定位到jenkins.war所在的目录, 然后执行下面的命令:

java -jar jenkins.war

安装完成后打开浏览器, 输入

http://localhost:8080

等待之后出现

image-20211103151016174
image-20211103151016174

根据提示将标红地址中的密码复制粘贴到下面.

先不安装插件, 之后统一安装

image-20211103151119129
image-20211103151119129
image-20211103151141675
image-20211103151141675

之后创建一个管理员用户, 点击"保存并完成", Jenkins 就安装成功了

安装Jenkins的插件

Jenkins安装成功后, 可已经将它设置成Windows服务, 不用每次通过命令提示符输入命令启动了. 设置成服务的方法如下:

image-20211103151717046
image-20211103151717046

按照提示就可以配置成功了, 在Windows服务列表中就可以找到jenkins了

image-20211103151832514
image-20211103151832514

这时我们要配置Jenkins的用户, 以便之后在Jenkins上构建项目时运行的命令无法获取本地的环境变量配置. 右键Jenkins服务, 选择属性, 选择"登录"配置

image-20211103152024281
image-20211103152024281
image-20211103152120943
image-20211103152120943
image-20211103152211694
image-20211103152211694

之后点击确定, 在此账户中显示正确的用户之后填写正确的用户密码即可之后点击确定.

插件下载提速

下载插件太慢了, 默认插件下载是从Jenkins官网的地址下载, 太慢了. 将地址替换为以下地址:

https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
image-20211103152736079
image-20211103152736079

如图, 将URL替换为清华的源

image-20211103152857111
image-20211103152857111

打开Jenkins所在目录, 即安装的.war时的目录, 进入.jenkins/update文件夹, 找到default.json文件

替换 updates.jenkins-ci.org/download 为 mirrors.tuna.tsinghua.edu.cn/jenkins
替换 updates.jenkins.io/download 为 mirrors.tuna.tsinghua.edu.cn/jenkins
替换 www.google.com 为 www.baidu.com

然后找到Jenkins/hudson.model.UpdateCenter.xml文件

替换 url 为 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

如果还不行, 就离线下载Jenkins插件, 然后采用上传的方式.

Jenkins汉化

进入 系统管理->插件管理, 安装插件: Localization:Chinese, 之后重启Jenkins 服务, 能够部分汉化

Git和Gitlab插件安装

进入 系统管理->插件管理, 安装Git和Gitlab插件. Git插件有几个依赖, 如果安装不上就离线安装.

scm-api (1.0),
workflow-scm-step (1.14.2)
Git-client (1.19.6) 
workflow-setp-api.hpi(1.14.2)(貌似与workflow-scm-step保持一致)

配置Gitlab

进入管理->系统管理->Gitlab

image-20211104101126902
image-20211104101126902

Credentials为在Gitlab上面生成的API token, 具体生成方法见: GitLab获取tokenAPI凭据 - 简书 (jianshu.com)

TestConnection测试连接成功后保存退出

Jenkins创建项目

创建项目

image-20211104090454976
image-20211104090454976

配置项目名称和项目类型

image-20211104090535593
image-20211104090535593

选择Gitlab的连接

image-20211104090754518
image-20211104090754518

在源码管理中选择Git, 配置本次打包从哪个分支上拉取代码进行打包

image-20211104090904444
image-20211104090904444

配置Gitlab的token, 完成拉取的认证

image-20211104091006473
image-20211104091006473

配置构建的触发器(如果需要的话)

image-20211104093053300
image-20211104093053300

进行任务构建

image-20211104093243679
image-20211104093243679
image-20211104093413595
image-20211104093413595
image-20211104093648697
image-20211104093648697

完成之后点击保存即可

配置Shell executable

如果"增加构建步骤"中需要执行Git命令, 则需要配置Shell executable.

进入系统配置, 找到Shell, 将Shell executable配置为C:\Program Files\Git\bin\sh.exe

image-20211104093917312
image-20211104093917312

Jenkins的 Git Bash 中需要注意:

  1. 不能使用 conda activate xxx 来激活本地的虚拟环境, 会直接导致命令行运行结束. 需要替换为: call activate xxx
  2. Git Bash 中的地址与Windows的地址有所不同. Windows中 D:/Software 在 Git Bash 中为 /d/Software

配置Git的SSH密钥

为了保证本地对于Gitlab上面代码的拉取, 我们需要配置SSH密钥来保证可以通过ssh连接拉取和上传代码(使用Http连接会每次pull和push时输入用户名和密码, 不方便命令行操作)

随意选择一个文件夹, 右键之后选择Git Bash Here, 打开Git命令窗口

首先, 确认自己是否已经拥有密钥

cd ~/.ssh
ls

如果显示有 id_rsa 命名的文件, 其中一个带有 .pub 扩展名, 则说明已经拥有密钥. 你所要确保的是在 C:/User/xxxx/.ssh 这个文件夹底下和Git自己创建的 /z/.ssh 底下都分别有同样的一组 id_rsa 文件(否则只能pull不能push)

如果之前没有密钥, 则输入以下命令, 建立新的SSH公钥和密钥.

ssh-keygen

如果不希望更改密钥生成的位置, 则在提示 Enter file in which to save the key 时直接回车, 之后按照提示输入两次Git密码则可以在 /z/.ssh 底下看到新生成的密钥.

输入命令来获取公钥:

cd /z/.ssh
cat id_rsa.pub

Gitlab->Setting->SSH加密 中创建新密钥, 将公钥的全部内容(包括第一行的ssh)复制到其中, 点击确定即可.

开始打包

进入项目

image-20211104095726920
image-20211104095726920

触发打包

image-20211104095852134
image-20211104095852134

查看打包任务

可以在打包任务进行中或者结束后查看控制台的输出, 以保证任务的正常进行.

image-20211104095918155
image-20211104095918155
image-20211104095939720
image-20211104095939720

更改打包任务

如果打包过程中有任何的问题, 可以进入任务配置中更改

image-20211104100050638
image-20211104100050638
备注-Jenkins 打包配置命令行
windows
cd C:\Users\dingyq\.jenkins\workspace\ige_increment_qt
call activate ige_increment
rd /s/q dist
rd /s/q build
pyinstaller main.spec
echo d | xcopy C:\Users\dingyq\Anaconda3\envs\ige_increment\Lib\site-packages\jieba\* C:\Users\dingyq\.jenkins\workspace\ige_increment_qt\dist\main\jieba /s /f /h /y
cd extractor
mkdir ops
echo f | xcopy D:\dyqProjects\ige_increment\extractor\ops\feature_eng.py C:\Users\dingyq\.jenkins\workspace\ige_increment_qt\dist\main\extractor\ops\ /s /f /h /y
cd C:\Users\dingyq\.jenkins\workspace\ige_increment_qt\dist\main
mkdir Qt
echo d | xcopy D:\dyqProjects\ige_increment\Qt\dist C:\Users\dingyq\.jenkins\workspace\ige_increment_qt\dist\main\Qt\dist /s /f /h /y
echo f | xcopy D:\dyqProjects\ige_increment\Qt\dist\favicon.ico C:\Users\dingyq\.jenkins\workspace\ige_increment_qt\dist\main\Qt /s /f /h /y
echo f | xcopy C:\Users\dingyq\.jenkins\workspace\ige_increment_qt\dist\main\Pyside2\bin\QtWebEngineProcess.exe C:\Users\dingyq\.jenkins\workspace\ige_increment_qt\dist\main /s /f /h /y
xcopy C:\Users\dingyq\.jenkins\workspace\ige_increment_qt\dist\main\Pyside2\resources\* C:\Users\dingyq\.jenkins\workspace\ige_increment_qt\dist\main /s /f /h /y