GitLab使用及iOS持集成

一彤敛、目的

Git代碼管理工具碍庵,通過Gitlab-runner實(shí)現(xiàn)CI/CD的相關(guān)功能。解決開發(fā)人員打包問題割按,也可以讓測試同事更清楚的知道測試的是那一個(gè)版本走哺。

二、適用范圍

適用于通過Git管理的相關(guān)項(xiàng)目哲虾,需要實(shí)現(xiàn)CI/CD的功能丙躏,如App,前端代碼打包并上傳到對應(yīng)的環(huán)境束凑。

三晒旅、環(huán)境配置

3.1 brew安裝

Mac安裝GitLab-Runner需要依賴于brew的安裝,檢查brew安裝汪诉,如果沒有安裝废恋,執(zhí)行命令如下:

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

3.2 GitLab-Runner安裝

homebrew進(jìn)行安裝,在命令行中直接執(zhí)行扒寄,執(zhí)行命令如下:

brew install gitlab-runner

四鱼鼓、GitLab-Runner注冊

4.1 查看Git參數(shù)

打開Settings->CI/CD頁面,選擇Runners Settings该编,左側(cè)會(huì)顯示與當(dāng)前項(xiàng)目相關(guān)的參數(shù)迄本。

image-20211230172028742.png

4.2 客戶端注冊runner

打開MAC應(yīng)用Terminal,輸入注冊命令课竣,如下:

gitlab-runner register

指定gitURL(輸入圖一里面URL地址嘉赎,私有git的路徑)

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):

指定gitlab-runnertoken(輸入圖一里面token,項(xiàng)目的token于樟,用于關(guān)聯(lián)runner和項(xiàng)目)

Please enter the gitlab-ci token for this runner:

tag的描述(輸入一個(gè)描述公条,runner的名字,用于區(qū)分runner

Please enter the gitlab-ci description for this runner:

關(guān)聯(lián)gitrunnertag(輸入這個(gè)runner需要執(zhí)行的Tag標(biāo)簽迂曲,用于匹配任務(wù)(jobs)和執(zhí)行任務(wù)的設(shè)備(runners))

Please enter the gitlab-ci tags for this runner (comma separated):

選擇runner的執(zhí)行環(huán)境(shell(Mac可以在本機(jī)器上運(yùn)行)靶橱,執(zhí)行環(huán)境)

Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:

注冊成功提示

Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!

4.3 查看runner配置

當(dāng)我們完成設(shè)置后,可通過vi ~/.gitlab-runner/config.toml打開runner 的配置文件看到之前配置的內(nèi)容路捧。

配置完成后可以在GitLab中查看到對應(yīng)配置的Rurnner关霸,如圖:

image-20211230173411671.png

點(diǎn)擊Runner編號(hào)時(shí)(如:ee42d138)可以查看到當(dāng)前Runner的詳細(xì)信息,設(shè)置成如下顯示:
激活

  • Runners 暫停后將不能接受新jobs

被保護(hù)

  • 這個(gè) runner 只能運(yùn)行被保護(hù)分支上觸發(fā)的的流水線

運(yùn)行沒有標(biāo)簽的作業(yè)

  • 表示此 Runner 可以運(yùn)行沒有任何標(biāo)簽的作業(yè)

鎖定到當(dāng)前項(xiàng)目

  • Runner 一旦被鎖定鬓长,將不能被指派給其它的項(xiàng)目

五谒拴、啟動(dòng)GitLab-Runner

當(dāng)所有不是執(zhí)行后尝江,在Runners settings會(huì)顯示runner的狀態(tài)涉波,顯示為綠色,則runner配置成功。

cd ~
gitlab-runner install
gitlab-runner start

另外還有一些其他的GitLab-Runner的相關(guān)命令啤覆,如:

gitlab-runner stop
gitlab-runner restart

六苍日、iOS項(xiàng)目文件配置

所有持續(xù)打包的項(xiàng)目里面需要加入.gitlab-ci.ymlgit push后會(huì)自動(dòng)識(shí)別.gitlab-ci.yml文件中的配置窗声,在CI/CD -> Pipeline(流水線)中就會(huì)顯示一條記錄相恃。
.gitlab-ci.yml文件,示例如下:

before_script:
  - export LC_ALL=en_US.UTF-8
  - chmod 777 shell.sh

stages:
  - deploy
  - alpha
  - prod

deploy:
  stage: deploy
  script:
    - ./shell.sh
  environment:
    name: deploy
  artifacts:
    paths:
    - IPADir/Release/*.ipa
    
alpha:
  stage: alpha
  script:
    - ./shell.sh
  environment:
    name: test
  artifacts:
    paths:
    - IPADir/Release/*.ipa

prod:
  stage: prod
  script:
    - ./shell.sh
  environment:
    name: production
  artifacts:
    paths:
    - IPADir/Release/*.ipa
  when: manual

腳本解析:
before_script: 覆蓋 job 執(zhí)行前需要執(zhí)行的腳本設(shè)置
stages: 定義當(dāng)前 job 運(yùn)行在那個(gè)階段
tags:通過 tags 確定使用指定還是使用通用部署程序笨觅。
script: 需要在 執(zhí)行的腳本
environment: 定義由該作業(yè)執(zhí)行部署的環(huán)境的名稱
artifacts: 定義作業(yè)工件列表
expire_in:過期時(shí)間

shell.sh文件處理拦耐,如下代碼:

#目錄處理
if [ ! -d ./IPADir ];
then
mkdir -p IPADir;
fi 

rm -rf build;

rm -rf Podfile.lock;

#pod安裝
pod install;

#工程絕對路徑
project_path=$(cd `dirname $0`; pwd)

echo '///-----------'
echo '///--'${project_path}
echo '///-----------'

#工程名
project_name=Scale_Demo

#scheme名
scheme_name=Scale_Demo

#打包模式 Debug/Release
development_mode=Release

#build文件夾路徑
build_path=build

#plist文件所在路徑
exportOptionsPlistPath=exportTest.plist

#導(dǎo)出.ipa文件所在路徑
exportIpaPath=IPADir/${development_mode}

#導(dǎo)出.ipa的相關(guān)證書配置
exportOptionsPlistPath=exportTest.plist

#正在清理工程
xcodebuild clean -configuration ${development_mode} -quiet  || exit

#正在編譯工程
xcodebuild \
archive -workspace ${project_name}.xcworkspace \
-scheme ${scheme_name} \
-configuration ${development_mode}  -destination 'generic/platform=iOS' \
CODE_SIGN_IDENTITY="Apple Development: **************" \
 PROVISIONING_PROFILE="8a6dae04-849e-4dc7-aacf-7a6bf558741d" \ 
PRODUCT_BUNDLE_IDENTIFIER="com.BB.Scale-Demo"  \
-archivePath ${build_path}/${project_name}.xcarchive -allowProvisioningUpdates  -quiet  || exit

#導(dǎo)出ipa包
xcodebuild -exportArchive -archivePath ${build_path}/${project_name}.xcarchive \
-configuration ${development_mode} \
-exportPath ${exportIpaPath} \
-exportOptionsPlist ${exportOptionsPlistPath} \
-quiet || exit

if [ -e $exportIpaPath/*.ipa ]; then
#ipa包已導(dǎo)出
else
#ipa包導(dǎo)出失敗
fi

#打包ipa完成

exit 0

CODE_SIGN_IDENTITYp12文件的證書信息
PROVISIONING_PROFILE profile文件中的UUID編號(hào)
PRODUCT_BUNDLE_IDENTIFIER 打包的Bundle Identifier
-destination 設(shè)置打包平臺(tái)

導(dǎo)出ipa包的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>provisioningProfiles</key>
    <dict>
        <key>com.BB.Scale-Demo</key>
        <string>Dev_1231</string>
    </dict>
    <key>method</key>
    <string>development</string>
    <key>compileBitcode</key>
    <false/>
</dict>
</plist>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末见剩,一起剝皮案震驚了整個(gè)濱河市杀糯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌苍苞,老刑警劉巖固翰,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異羹呵,居然都是意外死亡骂际,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進(jìn)店門冈欢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來歉铝,“玉大人,你說我怎么就攤上這事凑耻》赶罚” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵拳话,是天一觀的道長先匪。 經(jīng)常有香客問我,道長弃衍,這世上最難降的妖魔是什么呀非? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮镜盯,結(jié)果婚禮上岸裙,老公的妹妹穿的比我還像新娘。我一直安慰自己速缆,他們只是感情好降允,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著艺糜,像睡著了一般剧董。 火紅的嫁衣襯著肌膚如雪幢尚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天翅楼,我揣著相機(jī)與錄音尉剩,去河邊找鬼。 笑死毅臊,一個(gè)胖子當(dāng)著我的面吹牛理茎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播管嬉,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼皂林,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蚯撩?” 一聲冷哼從身側(cè)響起式撼,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎求厕,沒想到半個(gè)月后著隆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呀癣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年美浦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片项栏。...
    茶點(diǎn)故事閱讀 39,841評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡浦辨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出沼沈,到底是詐尸還是另有隱情流酬,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布列另,位于F島的核電站芽腾,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏页衙。R本人自食惡果不足惜摊滔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望店乐。 院中可真熱鬧艰躺,春花似錦、人聲如沸眨八。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽廉侧。三九已至页响,卻和暖如春篓足,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拘泞。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留枕扫,地道東北人陪腌。 一個(gè)月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像烟瞧,于是被迫代替她去往敵國和親诗鸭。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容