1. Jenkins 高级使用
1.1. ssh 远程
1.1.1. 安装插件
安装 SSH 插件。
1.1.2. 配置 SSH
Jenkins > 系统管理 > 系统设置 > SSH remote hosts
1.1.3. 使用 SSH
构建 > 添加构建步骤 > Execute shell script on remote host using ssh
1.2. Keychains 管理
参考 Keychains and Provisioning Profiles Plugin
允许访问密码: Keychains > 登录 > 密码 > 选择需要设置的密码 双击 > 访问控制 > 允许所有的应用程序访问此项目 > 存储更改
Release Code Signing 改为手动:
Xcode > Project > Build Settings > Code Signing Style > Release > Manual
Xcode > Project > Build Settings > Code Signing Identity > Release > iOS Distribution
1.3. curl 修改 build 信息
# 获取 build 信息
curl -s --user "$USER:$PASSWORD" --data-urlencode "tree=description" \
"$jenkins_url/job/$job_name/$build_number/api/json
# 修改
if curl -u $USER:$PASSWORD --data-urlencode "description=$new_description" \
--data-urlencode "Submit=Submit" \
"$jenkins_url/job/$job_name/$build_number/submitDescription"
then
echo "Description successfully changed on Build #$build_number in Jenkins job $job_name"
else
echo "WARNING: Description was not set. Manually change the descripiton of the build"
echo " for Build #$build_number in Jenkins job $job_name"
fi
1.4. Jenkins 命令行
1.5. 任务类型
1.5.1. 构建一个自由风格的软件项目
1.5.2. Pipeline 流水线|管道
Declarative Pipeline
相对简单,而且不需要学习groovy语法,对于日常的一般任务完全够用,Scripted Pipeline
可通过Groovy语言的强大特性做任何你想做的事情。
可以在 Jenkinsfile 中 clone 多个 repo 实现一个任务多仓库功能
1.5.3. MultiBranch Pipeline
MultiBranch Pipeline可以理解为是针对某个工程所有分支代码的pipeline集合,jenkins会自动发现源代码中的jenkinsfile配置文件生成对应的分支job。 而MultiBranch Pipeline要求jenkinsfile配置文件存放在源代码的方式,也是符合Pipeline as Code的理念。虽然这也会给一些没有代码提交权限的devops工程师带来困扰。
1.6. Pipeline
通过编写 Jenkinsfile 自动执行任务
1.7. Jenkinsfile
1.7.1. Git
Jenkinsfile 中实现 git clone
功能:
使用 checkout
命令参考 Pipeline: SCM Step
checkout([
$class: 'GitSCM',
branches: [[name: 'refs/heads/master']],
doGenerateSubmoduleConfigurations: false,
extensions: [[$class: 'CloneOption', timeout: 120]],
submoduleCfg: [],
userRemoteConfigs: [[credentialsId: '6463627-ab54-4e42-bc29-123458', url: 'https://github.com/AtlasBID/CalibrationResults.git']]
])
或者使用 git
命令参考 Pipeline Git plugin,只能使用 url,branch,changelog,credentialsId,poll 这几个参数
git(
url: 'git@git.shimo.im:shimo/baboon.git',
branch: "$master"
)