需要的环境
1、homebrew
安装命令:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2、JDK
安装命令:
brew cask install java
3、Jenkins
安装命令:
brew install jenkins
更新Jenkins命令:
brew upgrade jenkins
我这安装报错了,报错信息如下:
➜ ~ brew install jenkins
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 2 taps (homebrew/core, homebrew/cask).
==> Updated Formulae
openssl ✔ harfbuzz openapi-generator
azure-cli imagemagick openssl@1.1
babl imagemagick@6 prest
beast influxdb protobuf-c
cquery ios-webkit-debug-proxy sleuthkit
firebase-cli libical swift-protobuf
fortio linkerd sysdig
fselect lxc terragrunt
geoipupdate mkdocs wtf
groovy neo4j
groovysdk ocrmypdf
jenkins: Java 1.8 is required to install this formula.
JavaRequirement unsatisfied!
You can install with Homebrew-Cask:
brew cask install homebrew/cask-versions/java8
You can download from:
https://www.oracle.com/technetwork/java/javase/downloads/index.html
Error: An unsatisfied requirement failed this build.
按照提示运行命令
brew cask install homebrew/cask-versions/java8
结果如下:
Error: An unsatisfied requirement failed this build.
➜ ~ brew cask install homebrew/cask-versions/java8
==> Tapping homebrew/cask-versions
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask-versions'...
remote: Counting objects: 212, done.
remote: Compressing objects: 100% (206/206), done.
remote: Total 212 (delta 15), reused 41 (delta 5), pack-reused 0
Receiving objects: 100% (212/212), 85.29 KiB | 10.00 KiB/s, done.
Resolving deltas: 100% (15/15), done.
Tapped 192 casks (231 files, 318.0KB).
==> Caveats
This Cask makes minor modifications to the JRE to prevent issues with
packaged applications, as discussed here:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=411361
If your Java application still asks for JRE installation, you might need
to reboot or logout/login.
Installing java8 means you have AGREED to the license at
https://www.oracle.com/technetwork/java/javase/terms/license/index.html
==> Satisfying dependencies
==> Downloading http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-macosx-x64.dmg
######################################################################## 100.0%
==> Verifying checksum for Cask java8
==> Installing Cask java8
==> Running installer for java8; your password may be necessary.
==> Package installers may write to any location; options such as --appdir are ignored.
Password:
installer: Package name is JDK 8 Update 181
installer: Installing at base path /
installer: The install was successful.
🍺 java8 was successfully installed!
之后安装jenkins:
➜ ~ brew install jenkins
Updating Homebrew...
==> Downloading http://mirrors.jenkins.io/war/2.137/jenkins.war
==> Downloading from http://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.137/jenkins.war
######################################################################## 100.0%
==> jar xvf jenkins.war
==> Caveats
Note: When using launchctl the port will be 8080.
To have launchd start jenkins now and restart at login:
brew services start jenkins
Or, if you don't want/need a background service you can just run:
jenkins
==> Summary
🍺 /usr/local/Cellar/jenkins/2.137: 7 files, 75.4MB, built in 2 minutes
至此jenkins算是已经安装完成了,接下来把jenkins的配置完成。
补充:当然还有另外的安装方式.
- 去官网下载最新的pkg安装包.
- 也可以下载
jenkins.war
, 然后运行Java -jar jenkins.wa
r,进行安装.
启动Jenkins
1、在终端执行命令jenkins
2、在浏览器打开:http://localhost:8080
根据提示去上图目录中将密码拷贝出来贴上去。
可用cat
命令直接输出文件内容:
➜ ~ cat /Users/jamalping/.jenkins/secrets/initialAdminPassword
bca154503c1843f8abf2c139bad97b6e
点击继续,出现下图:
C6659170-8CD3-4CDB-81AB-97068C0E0D82.png
点击安装推荐的插件
安装完成后,创建第一个管理员用户。
3608BC43-36E9-44E2-9B98-7DE1BDAB50F5.png填写完用户名和密码,点击保存并完成。进入如下界面
EB9713A2-FBDF-408B-B85E-230676A2F5F1.png重启jenkins并用管理员用户登录。
这里我遇到两个问题
1、在浏览器输入: http://localhost:8080/jenkins
报错如下:
应该是要先登录用户,
2、在浏览器输入 http://localhost:8080/
登录后出现空白页面。百度了一圈都说权限问题。然后后面按照解决办法改,确也没反应。
后面是重启了jenkins服务才正常了。
登录后如下图:
C7489501-6953-4D4D-927E-FC708D956CEA.png点击“创建一个新任务”
BA98A088-BBDF-4CB6-8E3C-D212BB38BB08.png按照图中提示:输入一个任务名
,选择构建一个自由分割的软件项目
,点击确定。
跳转到如下界面,在标题栏我们能清晰的看到我需要进行的配置项。
- general
暂不多说 - 源码管理
我这里有两种源码管理方式:分别是Git和Subversion
如图:这是git源码管理的配置,图上对应的参数信息分别填上,仓库地址,获取仓库的凭证(git账号,或者SSH的凭证)以及分支名。
凭证是需要我们去添加的:点击add按钮即可添加。
如上图所示:
参数 | 说明 |
---|---|
凭证类型 | Username with password SSH Certificate cecret filt cecret text ... |
范围 | 全局 系统 |
我这里选的是用户名和密码类型。将正确的用户名和密码填入,添加简单的描述,点击添加。就创建了一个凭证了。
我配置好如下图:
出现红色,则说明配置有问题。
-
构建触发器
一个简单的触发器构建,如图:
每天早上八点到晚上6点,每三个小时,检查一遍,发现代码有更新就触发一次构建。
2ABB2D62-E619-4815-952A-09A20B13AA6F.png
查看更多关于触发器的构建的信息,请点击
- 构建环境
这里我只勾选了
Add timestamps to the Console Output
- 构建
选择执行shell构建
我的构建脚本如下
##!/bin/sh
## 项目名
TARGET_NAME=hdproject
## Scheme名
SCHEME=hdproject_test
## 编译类型
BUILD_TYPE=Debug
##当前目录
SORCEPATH=$( cd "$( dirname $0 )" & pwd )
## workspace名
WORKSPACE=$SORCEPATH/../${TARGET_NAME}.xcworkspace
##xcarchive文件的存放路径
ARCHIVEPATH=$SORCEPATH/$TARGET_NAME.xcarchive
## ipa文件的存放路径
EXPORTPATH=$SORCEPATH/$TARGET_NAME.ipa
## ExportOptions.plist文件的存放路径
EXPORTOPTIONSPLIST=$SORCEPATH/ExportOptions.plist
# 清理缓存
xcodebuild clean -workspace $WORKSPACE -scheme ${SCHEME} -configuration ${BUILD_TYPE}
# 输出关键信息
echo -e " TARGET_NAME : ${TARGET_NAME}"
echo -e " BUILD_TYPE : ${BUILD_TYPE}"
echo -e " SORCEPATH : ${SORCEPATH}"
echo -e " ARCHIVEPATH : ${ARCHIVEPATH}"
echo -e " EXPORTPATH : ${EXPORTPATH}"
echo -e " EXPORTOPTIONSPLIST : ${EXPORTOPTIONSPLIST}"
# 导出archive包
xcodebuild archive -workspace ${WORKSPACE} -scheme ${SCHEME} -archivePath $ARCHIVEPATH
#导出IPA包
xcodebuild -exportArchive -archivePath $ARCHIVEPATH -exportPath ${EXPORTPATH} -exportOptionsPlist ${EXPORTOPTIONSPLIST}
路径信息有疑问的可以结合项目目录结构来件,我的项目目录结构如下
项目根目录
├── ***.xcworkspace
├── ***.xcodeproj
├── build
├── ExportOptions.plist
├── build.sh
- 构建后操作
邮箱配置
一般构建后,需要发送一个邮件到相关人员邮箱,比如,成功后发送给测试、产品。失败后发送给相关的开发人员等。
进入系统管理--系统设置
1、首选设置jenkins的访问地址以及管理员邮箱
2、配置邮箱
如图:找到Extended E-mail Notification
,按如下设置。
注意: 这里补充下。需要开通QQ邮箱的SMTP服务。password
并不是邮箱密码,而是开通SMTP服务后给的一个服务码
如图:找到邮件通知
,并按如下设置。
这里,我发送测试邮件进行邮件配置测试的时候有遇到几个错误:
535:因为我开通QQ邮箱的SMTP服务的时候,没保存设置。
550:我测试的时候点了太多下,检测到我的邮箱,短时间内收到了大量的邮件,为避免收到而已攻击,暂时禁止向该邮箱发邮件。
至此,邮箱的系统配置ok了。
接下来增加构建后操作
我的配置如下:
至此,一个简单的iOS CI/CD架构搭建完成。
网友评论