持续集成-Jenkins离线安装与配置

本篇主要针对的是Jenkins服务器处在局域网中,无法连上互联网的情况下如何做自动化部署。
本文对网络的架设是:有内部的git服务器,yum私有仓库,nexus Repository OSS私有仓库和npm私有仓库。如果这些条件都没有,可能你们还是本地开发机上打包稍微快一些。

1. 安装

1.1 安装必要依赖

Jenkins的必要依赖是JDK。后续自动化部署的必要依赖是git,Maven和Node.js。
具体的安装步骤就不详述了。rpm安装(针对JDK)或私有YUM仓库安装都可以。
例如私有YUM仓库中openjdk,直接运行yum install java-1.8.0-openjdk.x86_64 即可。

Maven私有仓库配置
Maven打包的时候默认会从公网的仓库拉取依赖的第三方库。我们需要将其改为指向私有仓库。
首先可以通过如下两条命令之一获得配置文件地址:

1
2
mvn --version
mvn -e -X

假设settings.xml文件的位置在/etc/maven/路径下。
编辑该文件内容:

1
vi /etc/maven/settings.xml

我们首先需要在<profiles></profiles>之间添加私有仓库地址(包括仓库和插件仓库):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<profile>
<id>dev</id>
<repositories>
<repository>
<id>local-nexus</id>
<url>http://10.16.34.197:8081/repository/maven-central/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<name>Internal Mirror of Central Plugins Repository</name>
<url>http://10.16.34.197:8081/repository/maven-central/</url>
</pluginRepository>
</pluginRepositories>
</profile>

然后在最后的</settings>上添加当前活跃的profile:

1
2
3
<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>

npm私有仓库配置
npm配置私有仓库就简单多了,一条命令搞定:

1
npm set registry http://10.16.34.197:8081/repository/npm-central

1.2 安装Jenkins

Jenkins离线rpm安装包下载地址:https://jenkins.io/zh/download/
然后rpm安装jenkins(根据你下载的具体rpm包名更新命令):

1
rpm -ivh jenkins-2.176.2-1.1.noarch.rpm

然后启动jenkins:

1
systemctl start jenkins

确保防火墙已关闭或开放端口8080,然后就可以访问http://ip:8080/来访问jenkins首页了。
万一没有成功启动,可以通过systemctl status jenkins来确认失败的原因。

2. 配置

2.1 启动配置

在启动Jenkins后,首先需要解锁。
在服务器上执行:

1
cat /var/lib/jenkins/secrets/initialAdminPassword

然后输入到Unlock Jenkins的Administrator password框。
由于我们是离线模式安装,Jenkins会提醒“This Jenkins instance appears to be offline”。我们先点击“Skip Plugin Installations”跳过插件安装。
然后创建管理员用户,点击下一步。
如果有域名的话,在当前步骤的“Jenkins URL”中填写域名。我们这里直接点击“Save and Finish”。
Welcome to Jenkins:)

2.2 插件配置

在左侧菜单点击Manage Jenkins,然后点击Manage Plugins->Advanced。我们可以在这边上传所需插件的hpi文件。hpi文件可以从https://plugins.jenkins.io下载。
需要注意有一些包具有依赖。
我们需要的几个插件:

  • Publish Over SSH
  • build-pipeline-plugin
  • cron_column
  • git
  • nodejs

插件安装先后顺序如下:

  • structs
  • credentials
  • ssh-credentials
  • publish-over
  • publish-over-ssh
  • jquery
  • scm-api
  • workflow-step-api
  • workflow-api
  • junit
  • javadoc
  • display-url-api
  • mailer
  • apache-httpcomponents-client-4-api
  • maven-plugin
  • matrix-project
  • token-macro
  • run-condition
  • conditional-buildstep
  • parameterized-trigger
  • build-pipeline-plugin
  • cron_column
  • git-client
  • workflow-scm-step
  • git
  • config-file-provider
  • nodejs

当中根据提示可能需要重启数次Jenkins,也可以等所有插件都安装完再重启Jenkins。

2.3 配置工具

在左侧菜单点击Manage Jenkins,然后点击Global Tool Configuration,配置JDK、Maven和NodeJS(Git默认已配置)。
注意配置的时候取消“Install Automatically”。

配置JDK
执行

1
alternatives --config java

如果是OpenJDK,Command那列括号里/jre/bin/java之前的内容就是JAVA_HOME

配置git
Path to Git executable可以填gitusr/bin/git都可以。

配置Maven
执行如下命令

1
mvn --version

返回的结果里取Maven home即可。

配置node
可以通过npm config list命令查看当前的npm配置。node bin location后的就是node的位置。

至此Jenkins的安装和基本配置就完成了。

3. 参考资料

这篇整理完才发现Nexus Repository Manager真强大,除了maven之外,docker/npm/pypi/yum都可以proxy。
虽然也有单独npm代理的方案,比如:使用verdaccio搭建npm私有仓库 - Better’s study fairyland

本文永久链接 [ https://galaxyyao.github.io/2019/08/14/持续集成-Jenkins离线安装与配置/ ]