2021 鐵人賽 一天一腳步,30天學會 Android Compose UI!
會講這個題目其實有點微妙,但是都講完了測試,卻不講 CI 我覺得好像少了一點什麼。
不知道 Android App 工程師,到底要不要自己維護 CI呢?我覺得需要。
所以我就寫了一篇自己簡單搞定自己的 CI 的文章。
不過維護 CI 之前要先學會基礎的 Git 使用,
Git 教學這方面的文網路上也有許多很好的學習資源,
如下:
假設你已經學習會了 Git,那我們怎麼樣一天內搞定 CI呢?
我自己有接觸過 Gitalb, Bitbucket, Github,其實大多數的 CI 都差不多,
我自己覺得 Gitlab 是最熟悉的所以我就講 Gitlab,其他的有機會再介紹囉~
然後因為我同時也在 GDG Taipei 社群服務,稍微推廣一下 GCP 的服務,哈哈!
因為真的很好用啊!不信等等看,那就開始講解囉~
首先我們將一個本地確定可以執行通過的專案,上傳到Gitlab上,如下圖:
然後點畫面上的 new file
選擇 .gitlab-ci.yml 的 Android
就會出現Gitlab 預設的 Android CI yaml setting了,通常來說這個 settting 就可以執行完 CI !
可以點到 CI/CD 這個頁面,就能看到CI正在執行了!
執行好後的畫面如下!
怎麼沒成功QQ
沒關係,我們先回頭來看 究竟 gitlab-CI的 yaml檔裡面是講些什麼~
image: openjdk:8-jdkvariables: #(ANDROID COMPILE SDK版本號碼)
ANDROID_COMPILE_SDK: "29" #(ANDROID BUILD TOOLS版本號碼)
ANDROID_BUILD_TOOLS: "29.0.3" #(SDK 版號)
#ANDROID_SDK_TOOLS: "6514223"# Packages installation before running script
before_script:
- apt-get --quiet update --yes
- apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1 # Setup path as android_home for moving/exporting the downloaded sdk into it
- export ANDROID_HOME="${PWD}/android-home"
# Create a new directory at specified location
- install -d $ANDROID_HOME
# Here we are installing androidSDK tools from official source,
# (the key thing here is the url from where you are downloading these sdk tool for command line, so please do note this url pattern there and here as well)
# after that unzipping those tools and
# then running a series of SDK manager commands to install necessary android SDK packages that'll allow the app to build
- wget --output-document=$ANDROID_HOME/cmdline-tools.zip <https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_TOOLS}_latest.zip>
# move to the archive at ANDROID_HOME
- pushd $ANDROID_HOME
- unzip -d cmdline-tools cmdline-tools.zip
- popd
- export PATH=$PATH:${ANDROID_HOME}/cmdline-tools/tools/bin/ # Nothing fancy here, just checking sdkManager version
- sdkmanager --version # use yes to accept all licenses
- yes | sdkmanager --sdk_root=${ANDROID_HOME} --licenses || true
- sdkmanager --sdk_root=${ANDROID_HOME} "platforms;android-${ANDROID_COMPILE_SDK}"
- sdkmanager --sdk_root=${ANDROID_HOME} "platform-tools"
- sdkmanager --sdk_root=${ANDROID_HOME} "build-tools;${ANDROID_BUILD_TOOLS}" # Not necessary, but just for surity
- chmod +x ./gradlew#上面這一段都是在描述如何在Git runner 下載指定的 Android SDK 跟對應的 compile 工具# 執行 Check Linting
# Basic android and gradle stuff
# Check linting
lintDebug:
interruptible: true
stage: build
script:
- ./gradlew -Pci --console=plain :app:lintDebug -PbuildDir=lint# Compile Android APK
# Make Project
assembleDebug:
interruptible: true
stage: build
script:
- ./gradlew assembleDebug
artifacts: // 執行完後將這個資料夾的檔案上傳至Gitlab
paths:
- app/build/outputs/## 執行 android test
# Run all tests, if any fails, interrupt the pipeline(fail it)
debugTests:
interruptible: true
stage: test
script:
- ./gradlew -Pci --console=plain :app:testDebug
看完以後,再點進去這裡面看一下為什麼執行失敗。
原來是現在 Android project 的要求 Java 要用11以上了~,那就改一下吧!
點擊 File 打開.gitlab-ci.yaml檔
將8-jdk改成11-jdk,然後就等他再次執行
登愣!完成。
如果今天這個也會了,那我們就明天見囉:)
值得一提的是目前Gitlab 的免費額度是一個月可以執行 400分鐘, 有超過這個需求的話,就要自行安裝Git-runner或是購買!
本文同步發表在 iT邦幫忙 上 文章連結