Docker 安装配置请参考我的另一篇文章: https://juejin.im/post/5e839f2851882573ab44f1b4#heading-11
安装Jenkins
1 | docker run -d \ |
需要更多定制参数你可以参考 https://github.com/jenkinsci/docker
Nginx 反向代理
我没有域名,所以我的配置是基于端口的,你可以查看官方文档 获取更多方案:
1 | server { |
初始化jenkins
1、执行cat /var/lib/docker/volumes/jenkins_home/_data/secrets/initialAdminPassword
,获取管理员密码
2、启动完jenkins后通过浏览器输入地址http://部署jenkins主机IP:端口
3、选择安装插件方式,这里我是默认第一个:
4、进入插件安装界面,连网等待插件安装:
5、安装完插件后,进入创建管理员界面:
基于角色的认证策略
请确保在 系统管理 -> 插件管理 中安装了Role-based Authorization Strategy 插件!!
在 系统管理 -> 安全 -> 全局安全设置 中的 授权策略 配置项中选择 Role-Based Strategy
然后就可以在
Manage and Assign Roles
中管理角色
全局工具配置
JDK
自动安装请先到Oracle注册账号
Git
需要先执行
apt install git
安装git,然后通过which git
查看 git 安装位置!
NodeJS
需要先需要安装 NodeJS Plugin 插件
Android 打包环境
安装 android-sdk、sdkmagager
1 | apt update | apt install android-sdk |
复制android-sdk到 jenkins volume
1 | cp -R /usr/lib/android-sdk/ /var/lib/docker/volume/jenkins_home/_data/ |
android-sdk 的安装位置可以通过 adb --version
查看:
设置环境变量
将下面的的配置加入到 ~/.bash_profile
或 ~/.zshrc
中,并执行 srouce ~/.bash_profile
或 srouce ~/.zshrc
:
1 | export ANDROID_HOME=/var/lib/docker/volumes/jenkins_home/_data/android-sdk |
accepted licences
如果不授权会报错: Failed to install the following Android SDK packages as some licences have not been accepted.
1 | yes | sdkmanager --sdk_root=${ANDROID_HOME} --licenses |
如果不指定
--sdk_root=${ANDROID_HOME}
会报错:SDKmanager : Warning: Could not create setting. java.lang.IllegalArgumentException
设置 Jenkins ANDROID_HOME
进入 系统管理 -> 系统配置 -> 全局属性 新增环境变量 ANDROID_HOME
:
GitHub Plugin
这个插件的作用是集成 GitHub 到 Jenkins
获取 GitHub 的 Personal access token
GitHub 主页 -> Settings -> Developer settings -> Personal access tokens
添加Github服务器
系统管理 -> 系统设置 -> GitHub -> 添加Github服务器
这里的名称随便填,API URL 填写 https://api.github.com/
:
凭证类型选 Secret text
:
在凭据选上刚刚你添加的,勾上管理 Hook,点击“连接测试”,成功之后如下所示:
配置 GitHub 的 webhook 地址
webhook 是通知 Jenkins 时的请求地址,用来填写到 GitHub 上,这样 GitHub 就能通过该地址通知到 Jenkins
假设Jenkins所在服务器的地址是:192.168.0.1,端口为8080,那么webhook地址就是 http://192.168.0.1:8080/github-webhook/
在 Payload URL 位置填入 webhook 地址,再点击底部的 Add webhook 按钮,这样就完成 webhook 配置了,今后当前工程有代码提交,GitHub 就会向此 webhook 地址发请求,通知 Jenkins 构建:
任务配置
构造触发器选择:GitHub hook trigger for GITScm polling
构建环境和绑定
如下图所示,勾选 Use secret text(s) or file(s),下面的”凭据”选择我们之前配置过的凭证
常见问题
修改默认时区为上海时区
在 系统管理 -> 脚本命令行 里运行 System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Shanghai')