本篇主要针对的是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 | mvn --version |
假设settings.xml
文件的位置在/etc/maven/
路径下。
编辑该文件内容:
1 | vi /etc/maven/settings.xml |
我们首先需要在<profiles>
和</profiles>
之间添加私有仓库地址(包括仓库和插件仓库):
1 | <profile> |
然后在最后的</settings>
上添加当前活跃的profile:
1 | <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
配置gitPath to Git executable
可以填git
或usr/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