引言
原來團隊使用Jenkins進行持續(xù)集成公黑,工作的也不錯。但是想要類似Github上使用TravisCI的效果摄咆,在內(nèi)部使用的GitLab上直觀的看到持續(xù)集成的過程凡蚜。雖然已經(jīng)將Jenkins持續(xù)集成的結(jié)果和GitLab打通,但是效果不理想吭从。最終還是考慮使用GitLab CI的功能進行持續(xù)集成的方案番刊。
實現(xiàn)目標
- 可以直接使用Docker容器進行編譯。
- 可以直接編譯安卓平臺的SDK和NDK影锈。
- 能發(fā)布編譯后的結(jié)果到GitLab。
安裝 GitLab Runner
因為我們現(xiàn)有的服務器已經(jīng)有了Docker所以我選擇的方案是Install as a Docker service蝉绷。關于Docker安裝的文章已經(jīng)很多了鸭廷,可以搜索下或是按照官網(wǎng)的來操作也行。
執(zhí)行文檔里面提供的命令行:
docker run -d --name gitlab-runner --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
運行成功后執(zhí)行 docker ps
命令進行查看熔吗,是否一個叫 gitlab-runner
的容器正在運行辆床,不出意外應該是已經(jīng)有了。
在docker ps
命令的結(jié)果看到你的容器的CONTAINER ID
桅狠,類似這樣 3e8077e209f5
讼载。有了ID我們進入下一步注冊Runner轿秧。
注冊GitLabRunner
因為我們目標是要使用Docker鏡像來跑CI所以我們使用gitlab-ci-multi-runner
進行注冊。
這時候上一步的ID該啟作用了咨堤。我們需要進入到已經(jīng)啟動的容器內(nèi)部菇篡。
docker exec -it 3e8077e209f5 /bin/bash
這是id 3e8077e209f5是示例記得修改成自己的實際值。
執(zhí)行后我們就進入到了容器的內(nèi)部一喘。
執(zhí)行如下命令進行注冊
gitlab-ci-multi-runner register \
--url "http://sample.gitlab.com/ci" \
--registration-token "3wvP7pfSWhqEgjzyHx2q" \
--description "docker for andorid" \
--executor "docker" \
--docker-image javan/android-docker:latest
這時候我們還缺少3個物料驱还,url、registration-token凸克、docker-image议蟆。
前面兩個簡單,打開任意一個GitLab項目
在Specific Runners 可以看到萎战。
剩下是鏡像的問題咐容,如果自己沒有特殊需求可以直接使用網(wǎng)上其他人已經(jīng)編譯好的Docker鏡像,這里發(fā)現(xiàn)一個不錯的現(xiàn)成安卓鏡像 gitlab-ci-android蚂维。
docker-image
配置的知識默認鏡像實際中還可以通過 GitLab CI 的.gitlab-ci.yml
文件進行修改戳粒。
注冊完成之后刷新項目的頁面:
出現(xiàn)一個處于工作狀態(tài)的Runner說明你已經(jīng)配置好了。
剩下的工作就是給你的代碼倉庫配置.gitlab-ci.yml
這個還是要具體學習鸟雏。這個不是本文的重點就不在此擴展享郊。
定制Docker Image 支持 SDK和NDK
使用我定制好的DockerImage https://github.com/javanyou/gitlab-ci-android
發(fā)布編譯結(jié)果
job artifacts
artifacts 后面補上我自己的配置范例。