jenkins实现iOS CI/CD架构

作者: jamalping | 来源:发表于2018-08-16 18:31 被阅读505次

需要的环境

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.war,进行安装.

启动Jenkins

1、在终端执行命令jenkins
2、在浏览器打开:http://localhost:8080

D3D5636E-9997-4ED9-80F6-206238AA79E2.png

根据提示去上图目录中将密码拷贝出来贴上去。

可用cat命令直接输出文件内容:

➜  ~ cat /Users/jamalping/.jenkins/secrets/initialAdminPassword
bca154503c1843f8abf2c139bad97b6e

点击继续,出现下图:


C6659170-8CD3-4CDB-81AB-97068C0E0D82.png

点击安装推荐的插件

B7548FCF-697F-4C2D-B921-F40CD205089D.png

安装完成后,创建第一个管理员用户。

3608BC43-36E9-44E2-9B98-7DE1BDAB50F5.png

填写完用户名和密码,点击保存并完成。进入如下界面

EB9713A2-FBDF-408B-B85E-230676A2F5F1.png

重启jenkins并用管理员用户登录。
这里我遇到两个问题
1、在浏览器输入: http://localhost:8080/jenkins
报错如下:

8BFF03E2-0FEA-459C-8D91-89FDCC1A546D.png

应该是要先登录用户,

2、在浏览器输入 http://localhost:8080/
登录后出现空白页面。百度了一圈都说权限问题。然后后面按照解决办法改,确也没反应。

后面是重启了jenkins服务才正常了。

登录后如下图:

C7489501-6953-4D4D-927E-FC708D956CEA.png

点击“创建一个新任务”

BA98A088-BBDF-4CB6-8E3C-D212BB38BB08.png

按照图中提示:输入一个任务名,选择构建一个自由分割的软件项目,点击确定。
跳转到如下界面,在标题栏我们能清晰的看到我需要进行的配置项。

FFB34362-1C98-4160-8183-5A5A6D1F1FBC.png
  • general
    暂不多说
  • 源码管理
    我这里有两种源码管理方式:分别是Git和Subversion
EE60B1B5-A8AC-4EDB-803E-E8702F5B060D.png

如图:这是git源码管理的配置,图上对应的参数信息分别填上,仓库地址,获取仓库的凭证(git账号,或者SSH的凭证)以及分支名。
凭证是需要我们去添加的:点击add按钮即可添加。

747FB486-7EA3-4825-9AEC-314255BBFF92.png

如上图所示:

参数 说明
凭证类型 Username with password
SSH
Certificate
cecret filt
cecret text
...
范围 全局
系统

我这里选的是用户名和密码类型。将正确的用户名和密码填入,添加简单的描述,点击添加。就创建了一个凭证了。
我配置好如下图:

C5EBDD64-E93C-4294-93D8-FD41A6239834.png

出现红色,则说明配置有问题。

  • 构建触发器
    一个简单的触发器构建,如图:
    每天早上八点到晚上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的访问地址以及管理员邮箱

76B6121B-6A9E-499A-B57F-EA7BBC32931C.png

2、配置邮箱
如图:找到Extended E-mail Notification,按如下设置。

F9531BC1-2B76-487C-BE37-2F892AD355EF.png

注意: 这里补充下。需要开通QQ邮箱的SMTP服务。password并不是邮箱密码,而是开通SMTP服务后给的一个服务码
如图:找到邮件通知,并按如下设置。

754BD61E-2F0D-4387-8DBA-DA876EA00BEF.png

这里,我发送测试邮件进行邮件配置测试的时候有遇到几个错误:
535:因为我开通QQ邮箱的SMTP服务的时候,没保存设置。
550:我测试的时候点了太多下,检测到我的邮箱,短时间内收到了大量的邮件,为避免收到而已攻击,暂时禁止向该邮箱发邮件。
至此,邮箱的系统配置ok了。

接下来增加构建后操作
我的配置如下:

1 2 3

至此,一个简单的iOS CI/CD架构搭建完成。

相关文章

网友评论

    本文标题:jenkins实现iOS CI/CD架构

    本文链接:https://www.haomeiwen.com/subject/owbwbftx.html