macOS/iOS自动化指南jenkins for AppTools

jenkins+xcode+svn+nginx+https自签名

2016-11-07  本文已影响503人  灰灰灰飞花

1.前言

也没什么原因就是想搭建来玩一下,所以就这样吧。如果非要找一个理由那就是:测试别老是催了😄。

2.主要实现功能

3.环境安装

homebrew安装【用来傻瓜式安装Jenkins 、nginx等等】

<pre><code>ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
</code></pre>

Jenkins安装

<pre><code>brew install jenkins
</code></pre>

jenkins (启动)httpProt端口号是8888,你可以修改成任意的🤔

<pre><code>jenkins --httpPort=8888
</code></pre>

nginx安装

<pre><code>brew install nginx
</code></pre>

9FEDF0F0-DFDC-4112-A829-9313B713E0CE.png

https自签名证书

11E8B0E2-8AFD-48E6-9ED8-380E4C847A80.png 3CA95A96-2060-460B-BEE4-350327E6809D.png

4.Jenkins配置

安装Jenkins插件

<code>
1.Subversion Plug-in(svn)
2.Xcode integration(Xcode)
3.Environment Injector Plugin(自定义全局变量)
4.Email Extension Plugin(邮件)
</code>

系统设置(系统管理–系统设置)##

109CDA8B-ED8E-4D12-8896-F8CD55645FE2.png C8BAC7F2-C981-4C61-8D5F-A06388EA0404.png

<code> <pre>
需填写的内容:

5B2895A7-9BBF-42EC-B395-A6080807796E.png

<pre><code>
需填写的内容:

F55B516C-AE68-4411-889F-D31CEBC5678D.png

<pre><code>
需填写的内容:
-把上面的选项按照自己的需要填写好,发送一下测试邮件,测试是否配置正确。
</pre></code>

5.新建项目

A789E158-6172-475F-AE4C-C7677A4CD45A.png

<pre><code>
需填写的内容:

0006F2C1-82C2-49E8-B696-9250028C2247.png

<pre><code>需填写的内容:

7DD1CEEA-276E-4D98-A21B-2B0A25FED0C2.png
725006B9-A25B-4F57-BAD5-1D89C412B717.png

<pre><code>需填写的内容:

8047EFA6-E702-4640-81C8-6473464AA070.png

<pre><code>需填写的内容:

83A65511-C705-44CF-B7F0-49DA6518AD14.png

<pre><code>需填写的内容:

export PlistURL=172.17.8.67 #该地址是生成给手机端安装plist文件的地址
export OUTPUT=/usr/local/Cellar/nginx/1.10.2_1/html/${PLIST_NAME}_${BUILD_NUMBER}#导出路径,打包完成后会拷贝相应的包到nginx的服务器目录上,供下载使用

cd "${WORKSPACE}/build/${BUILD_NUMBER}"

for file in "*.ipa"
do
PLIST_NAME=echo $file
done

PLIST_NAME=${PLIST_NAME%.*}

echo "[PLIST_NAME=======]:"$PLIST_NAME

cd "${WORKSPACE}/build"
echo "PLIST_NAME=$PLIST_NAME" > jenkinsUserGlobal.properties

##########生成plist
cat << EOF > ${WORKSPACE}/build/${BUILD_NUMBER}/$PLIST_NAME.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>https://${PlistURL}/${PLIST_NAME}_${BUILD_NUMBER}/${PLIST_NAME}.ipa</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>com.ucsmy.GZNSBank1</string>
<key>bundle-version</key>
<string>1</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>$PLIST_NAME</string>
</dict>
</dict>
</array>
</dict>
</plist>
EOF

cd /usr/local/Cellar/nginx/1.10.2_1/html

mkdir ${PLIST_NAME}_${BUILD_NUMBER}

cd "${WORKSPACE}/build/${BUILD_NUMBER}"

cp -r ${WORKSPACE}/build/${BUILD_NUMBER}/$PLIST_NAME.ipa $OUTPUT

cp -r ${WORKSPACE}/build/${BUILD_NUMBER}/$PLIST_NAME.plist $OUTPUT

echo "拷贝成功"

##########生成html
cat << EOF > $OUTPUT/$PLIST_NAME.html
<html>
<body>

<script>
    var url = "https://${PlistURL}/${PLIST_NAME}_${BUILD_NUMBER}/${PLIST_NAME}.plist";
    window.location = "itms-services://?action=download-manifest&url=" + url;
</script>
    <h1>${PLIST_NAME} 安装中...</h1>
</body>

<html>
EOF
</pre></code>

C5A90B21-29C4-413A-8104-53A1E0DA7574.png

<pre><code>需填写的内容:
【将在Execute shell中生成项目名称变量放入 Properties File Path中】
Properties File Path:${WORKSPACE}/build/jenkinsUserGlobal.properties
</pre></code>

FFB57A57-DE0F-4C7A-A290-1970C040E7F0.png 689F3431-9DB9-434E-98C9-15EEFDD6E8C9.png

<pre><code>需填写的内容:

<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
ffset="0">
<table width="95%" cellpadding="0" cellspacing="0"
style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
<tr>
<td><h2>
<font color="#0000FF">构建结果 - ${BUILD_STATUS}</font>
</h2></td>
</tr>
<tr>
<td><h2>
<font color="#FF0000">安装证书: <a href="https://${LOCAl_IP}/yanghui/ca.crt">安装https信任证书(首次需要)</a></font>
</h2></td>
</tr>
<tr>
<td><h2>
<font color="#FF0000">App下载链接: <a href="itms-services://?action=download-manifest&url=https://${LOCAl_IP}/${PLIST_NAME}${BUILD_NUMBER}/${PLIST_NAME}.plist">itms-services://?action=download-manifest&url=https://${LOCAl_IP}/${PLIST_NAME}${BUILD_NUMBER}/${PLIST_NAME}.plist</a></font>
</h2></td>
</tr>
<tr>
<td><h2>
<font color="#FF0000">App自动安装: <a href="https://${LOCAl_IP}/${PLIST_NAME}_${BUILD_NUMBER}/${PLIST_NAME}.html">请用原生浏览器打开</a></font>
</h2></td>
</tr>

    <tr>
           <td><h2>
                  <font color="#FF0000">二维码图片:</font>
           </h2></td>
    </tr>
    <tr>
            <td>
                ![](http://qr.liantu.com/api.php?text=https://${LOCAl_IP}/${PLIST_NAME}_${BUILD_NUMBER}/${PLIST_NAME}.html)
            </td>
    </tr>
    <tr>
        <td><br />
        <b><font color="#0B610B">构建信息</font></b>
        <hr size="2" width="100%" align="center" /></td>
    </tr>
    <tr>
        <td>
            <ul>
                <li>项目名称 : ${PROJECT_NAME}</li>
                <li>构建编号 : 第${BUILD_NUMBER}次构建</li>
                <li>SVN 版本: ${SVN_REVISION}</li>
                <li>触发原因: ${CAUSE}</li>
                <li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
                <li>构建  Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>
                <li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
                <li>项目  Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
                <li>App安装包目录 Url: <a href="https://${LOCAl_IP}/${PLIST_NAME}_${BUILD_NUMBER}/">https://${LOCAl_IP}/${PLIST_NAME}_${BUILD_NUMBER}/</a></li>
            </ul>
        </td>
    </tr>
    <tr>
        <td><b><font color="#0B610B">Changes Since Last
                    Successful Build:</font></b>
        <hr size="2" width="100%" align="center" /></td>
    </tr>
    <tr>
        <td>
            <ul>
                <li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
            </ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat="    %p"}
        </td>
    </tr>
    <tr>
        <td><b>Failed Test Results</b>
        <hr size="2" width="100%" align="center" /></td>
    </tr>
    <tr>
        <td><pre
                style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">$FAILED_TESTS</pre>
            <br /></td>
    </tr>
    <tr>
        <td><b><font color="#0B610B">构建日志 (最后 100行):</font></b>
        <hr size="2" width="100%" align="center" /></td>
    </tr>
    <tr>
        <td><textarea cols="80" rows="30" readonly="readonly"
                style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea>
        </td>
    </tr>
</table>

</body>
</html></code></pre>
</pre></code>

570BEEFD-B6D9-4CA8-BDDF-F7FE17A68DC7.png

2.在Xcode配置那里Target填写${Environment}或者Xcode Schema File:${Environment}
(xcode里面需要配置多schema或者多target)


B6B39EE5-3ADD-4EB0-A184-569621E37521.png

3.构建的时候选择相应的环境

A7D9DBB2-3636-4C89-ADF8-7CABB9EA4764.png 9E434653-ACDF-422D-8CD3-D548F64F55AB.png
上一篇下一篇

猜你喜欢

热点阅读