提高開發效率之利用GitLab CI/CD打包Android項目

  在開始講怎麼利用GitLab CI/CD打包Android項目以前,先來了解一下什麼是CI/CD。html

什麼是CI/CD

  先來看下官方文檔就CI/CD的解釋,如圖git

根據官方的解釋咱們能夠知道 CI/CD就是

  • 持續集成
  • 持續分發
  • 持續部署

而GitLab CI/CD就是GitLab內置的有這些做用的工具。瞭解了什麼是GitLab CI/CD,接着來看CI/CD的工做原理。docker

GitLab CI/CD的工做原理

  GitLab CI/CD的一次工做由如下幾個組件組成。shell

  • Pipelines:是持續集成,交付和部署的頂級組件。
  • Jobs:具體的工做內容,如代碼編譯或測試運行。
  • Stages:定義什麼時間運行什麼任務,如設置測試在代碼編譯以後運行。

它們三者之間的關係以下圖所示服務器

不知道你們有沒有以爲上面的只是任務的具體組成和劃分,可是沒有用來執行任務的執行器,那麼執行器是在哪裏呢?執行器在GitLab CI/CD中是 Runners

Runners 由Runner組成,一個Runner執行一個Job,能夠設置任意數量的Runner,Runner能夠放在服務器上和本地的計算機上。app

瞭解了GitLab CI/CD中的組件,那麼他們是怎麼配合以及分工執行的呢?其實他們怎樣執行是由.gitlab-ci.yml腳本文件來安排的。這個腳本文件就是一個Pipeline,裏面有一個或多個job組成一個jobsjob裏面有不一樣的Stagesssh

  能夠從官方文檔是來看CI/CD的基本工做流,如圖curl

從圖中能夠看出CI/CD能作的工做由不少,如自動編譯、測試和打包,其實還能作檢查代碼,自動化測試等工做。工具

怎樣把本地機器配置成Runner

  前文已經說了,要執行Pipeline是須要Runner的,那麼怎樣安裝Runner呢?安裝以前能夠看下本身的GitLab倉庫中是否已經有Runner呢?操做步驟是:進入本身的GitLab項目->在Setting菜單中選擇CI/CD的菜單項,會看到下面的界面gitlab

這時繼續點擊 Expand按鈕,就能夠看到此項目是否有Runner了,能夠看下我如今項目下的Runner,如圖

能夠看到個人項目如今有兩個 Runner,一個是共享的(在服務器上),一個是我本身電腦上的。若是在服務器上已經有了一個共享的Runner,那麼你能夠直接在服務器上來配置Android的運行環境和打包的環境,我是本身不方便操做服務器,纔在本身的電腦上安裝的Runner, 這裏推薦在服務器上來配置Runner和安裝環境,由於若是是多人開發的話,這樣能夠統一打包的環境。 下面來講下在本地配置Runner的方法,這裏以Mac系統爲例,其餘系統的配置方法能夠參照 官方文檔

  1. 下載二進制文件

    sudo curl --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-amd64
    複製代碼
  2. 設置文件的執行權限

    sudo chmod +x /usr/local/bin/gitlab-runner
    複製代碼
  3. 註冊Runner

    gitlab-runner register
    複製代碼
  4. 輸入GitLab URL

    Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
    https://gitlab.com(你的GitLab地址)
    複製代碼
  5. 輸入token

    Please enter the gitlab-ci token for this runner
     xxx
    複製代碼

    token能夠在這裏獲取,就是前文看是否有Runner的那個地方

  6. 輸入Runner的描述,至關於這個Runner的名稱

    Please enter the gitlab-ci description for this runner
    [hostname] my-runner
    複製代碼
  7. 輸入Tag,能夠輸入多個,以英文逗號分割,Tag的做用是若是有多個Runner,能夠根據.gitlab-ci.yml腳本設置的Tag來選擇對應的Runner。

    Please enter the gitlab-ci tags for this runner (comma separated):
    my-tag,another-tag
    複製代碼
  8. 選擇以什麼方式執行,由於是是本地的電腦,因此選擇shell就好了

    Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
    shell
    複製代碼
  9. 執行如下命令,運行Runner

    cd ~
    gitlab-runner install
    gitlab-runner start
    複製代碼

運行以後,就能夠在GitLab倉庫中看到運行的Runner了。

.gitlab-ci.yml腳本文件語法介紹

  先直接看下我項目中的這個文件

# 就是上文說的stages
stages:
 - build_debug # 這裏就是一個stage,能夠定義多個stage,這個stage就是下面的build_debug

# 構建以前會執行的腳本,這裏導入本地的環境變量
before_script:
 - export ANDROID_HOME=/Users/work/Android/SDK
 - export PATH=$PATH:${ANDROID_HOME}/tools
 - export PATH=$PATH:${ANDROID_HOME}/platform-tools
 - chmod +x ./gradlew

# 聲明一個名叫build_debug的構建任務
build_debug:
 stage: build_debug
  # 構建中,執行一些腳本
 script:
 - ./gradlew --stacktrace assembleDevelopDebug
  # 指定監聽哪個分支或何時觸發Pipeline
 only: 
 - tags #這裏tags的做用是當修改gitlab項目tag的時候會觸發
 - test # 監聽GitLab的這個分支
  # - master
  # 指定由哪個runner運行
 tags:
 - dev # 這個dev是上文註冊Runner時的tag,和註冊時候tag同樣的話就會用對應的Runner來執行任務
  # 指定成功後應附加到任務的文件和目錄的列表
 artifacts:
 paths:
 - app/build/outputs/

# 構建完成以後執行的腳本
#after_script:
# - 這裏若是是要配合monkey的話,通常在這個地方執行monkey的腳本
複製代碼

上面的腳本中已經介紹了一些語法,能夠發現這些恰好能夠和前文說的幾個組件對應上,另外還有一些其餘的語法,能夠查看官方文檔

總結

  如今來總結一下本篇文章的主要內容,首先,介紹了什麼是GitLab CI/CD,接着,簡單的介紹了GitLab CI/CD的工做原理和一些組成組件,還介紹了怎麼配置本地的Runner,最後,看了.gitlab-ci.yml文件並介紹了一些經常使用的語法。用好GitLab CI/CD的話,是能夠大大增長咱們的工做效率的,把一些重複的勞動交給機器來自動完成,但願本文能讓你對GitLab的 CI/CD有個基本的認識並能利用它來完成自動打包工做。

本文已由公衆號「AndroidShared」首發

歡迎關注個人公衆號
掃碼關注公衆號,回覆「獲取資料」有驚喜
相關文章
相關標籤/搜索