物聯網架構成長之路(47)-利用GitLab實現CI持續集成

0.前言
  前段時間,考慮到要練習部署一套CI/CD的系統。一開始考慮到Jenkins,隨着這两天的了解,發現最新版的GitLab已經提供有CI/CD集成了。所以本次博客,乾脆一步到位,直接用GitLab裏面的CI/CD模塊。Jenkins可能需要更高級的應用場合。經過測試GitLab自帶的功能完全符合我的需求。

1. 安裝GitLab和GitLab-CI(gitlab-runner)
  英語比較好的,可以直接看官方文檔。https://docs.gitlab.com/omnibus/docker/#install-gitlab-using-docker-compose https://docs.gitlab.com/ee/ci/quick_start/README.html
  下面提供我使用的 docker-compose.yml

 1 version: '3'
 2 services:
 3     gitlab:
 4         image: twang2218/gitlab-ce-zh:latest
 5         #image: gitlab/gitlab-ce:rc
 6         restart: always
 7         hostname: '172.16.23.203'
 8         environment:
 9             GITLAB_OMNIBUS_CONFIG: |
10                 external_url 'http://172.16.23.203:8929'
11                 gitlab_rails["time_zone"] = "Asia/Shanghai"
12         ports:
13             - 8929:8929
14             - 1080:80
15             - 1443:443
16             - 1022:22
17         volumes:
18             - /root/workspace/docker/gitlab/1/config:/etc/gitlab
19             - /root/workspace/docker/gitlab/1/logs:/var/log/gitlab
20             - /root/workspace/docker/gitlab/1/data:/var/opt/gitlab
21     gitlab-runner:
22         image: gitlab/gitlab-runner:latest
23         restart: always
24         volumes:
25             - /root/workspace/docker/gitlab/2/config:/etc/gitlab-runner
26             - /var/run/docker.sock:/var/run/docker.sock

  執行docker-compose up -d 就運行起來,幾點需要說明的
    1. gitlab的image,可以選擇中文版或者英文版
    2. hostname 這裏指定本機IP地址
    3. gitlab環境變量,external_url表示提供訪問的IP和端口,時區配置上海
    4. 端口映射,默認是80端口,由於我上面配置了8929,所以映射8929到Host主機
    5. volumes 配置持久化數據
    6. 這裏的/var/run/docker.sock 要映射到主機,因為會用到主機的一些資源,同時還會在docker裏面安裝docker
  下面是運行效果,第一次運行會比較久,因為要拉取鏡像和初始化GitLab

2. 登錄使用GitLab
  首次登錄,設置密碼。 登錄默認用戶名是root
  利用模版,新建一個Spring項目

  利用IDE,或者其他工具,或者直接在GitLab修改代碼

3. 配置CI/CD,把機器(gitlab-runner)註冊到GitLab中
  可以在項目配置CI/CD機器,也可以在個人所有項目下配置,也可以由管理員配置所有項目下CI/CD機器。原理和流程都是一樣的,只是比Jenkins更加細粒度控制而已。

  進入gitlab-runner的Docker,執行初始化命令 gitlab-ci-multi-runner register,完整命令如下:

1 sudo docker exec -it gitlab-runner gitlab-ci-multi-runner register

  需要錄入的信息,安裝上圖進行,填寫,後續還可以修改。

  如果需要修改,可以修改之前volumes配置的路徑下, config/config.toml

 

 1 concurrent = 1
 2 check_interval = 0
 3 
 4 [session_server]
 5   session_timeout = 1800
 6 
 7 [[runners]]
 8   name = "myRunner"
 9   url = "http://172.16.23.203:8929/"
10   token = "96beefdaa54832b0c8369ffa3811c9"
11   executor = "docker"
12   [runners.custom_build_dir]
13   [runners.docker]
14     tls_verify = false
15     image = "docker:latest"
16     privileged = true
17     disable_entrypoint_overwrite = false
18     oom_kill_disable = false
19     disable_cache = false
20     volumes = ["/cache", "/root/.m2:/root/.m2", "/var/run/docker.sock:/var/run/docker.sock"]
21     shm_size = 0
22   [runners.cache]
23     [runners.cache.s3]
24     [runners.cache.gcs]

 

  上面這個是配置文件,裏面有幾個注意點
    1. privileged 這裏要配置 true,因為要在docker裏面安裝docker
    2. /root/.m2 這個是配置maven的倉庫使用宿主主機的緩存,這樣就不用每次CI都要下載依賴
    3. /var/run/docker.sock 這個也要配置,在構建dockerfile的時候會用到
  還有一個需要配置的就是,這個Runner需要設置tag,這個是標識Runner的名稱。在.gitlab-ci.yml中會用到

4. 配置CI/CD
  默認GitLab是啟用該功能的,根目錄配置新增 .gitlab-ci.yml 文件,然後每次git push,都會觸發CI持續集成。當然可以在yml配置,在主線master觸發。
  來個簡單的配置,測試一下

 1 image: maven:3-jdk-8
 2 cache:
 3     paths:
 4         - .m2/repository
 5 test:
 6     stage: test
 7     script:
 8         - mvn package
 9     tags:
10         - tag

  上面這個配置,寫到.gitlab-ci.yml然後提交到repo,我們提交該文件到gitlab對應項目上去。

1 git add .gitlab-ci.yml
2 git commit -m "Add .gitlab-ci.yml"
3 git push origin master

  如果嫌慢,pom.xml 可以換個阿里源

 1         <repository>
 2             <id>maven-ali</id>
 3             <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
 4             <releases>
 5                 <enabled>true</enabled>
 6             </releases>
 7             <snapshots>
 8                 <enabled>true</enabled>
 9                 <updatePolicy>always</updatePolicy>
10                 <checksumPolicy>fail</checksumPolicy>
11             </snapshots>
12         </repository>

  一提交,就會觸發自動構建

  可以看到整個構建過程,如果出現錯誤,也是到這個日誌裏面排查問題。

 

 

5. 測試、打包、發布
  這一步,我們實現一個簡單的測試、打包、發布
5.1 增加 Dockerfile

1 FROM openjdk:8-jdk-alpine
2 VOLUME /tmp
3 COPY  target/demo-0.0.1-SNAPSHOT.jar app.jar
4 ENV PORT 5000
5 EXPOSE $PORT
6 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dserver.port=${PORT}","-jar","/app.jar"]

5.2 修改 .gitlab-ci.yml

 1 image: maven:3-jdk-8
 2 
 3 variables:
 4     DOCKER_TAG: test/demo-spring:0.1
 5 
 6 cache:
 7     paths:
 8         - .m2/repository
 9 
10 stages:
11     - test
12     - package
13     - deploy
14 
15 test:
16     stage: test
17     tags:
18         - tag
19     script:
20         - mvn test
21 
22 package:
23     stage: package
24     tags:
25         - tag
26     script:
27         - mvn clean package -Dmaven.test.skip=true
28     artifacts:
29         paths:
30             - target/*.jar
31 
32 deploy:
33     image: docker:latest
34     stage: deploy
35     services:
36         - docker:dind
37     tags:
38         - tag
39     script:
40         - docker version 
41         - docker build -t $DOCKER_TAG .
42         - docker rm -f test || true
43         - docker run -d --name test -p 5000:5000 $DOCKER_TAG

  那個artifacts.paths 配置,提交target目錄下的文件到下一個流水線,因為不同流水線,由於是基於Docker,所以每一步都是隔離的。同時,上傳的附件還可以在構建成功后,在流水線pipelines界面進行下載。每一步的image都是可以指定的,那個tags也是可以指定的。可以提交到不同的機器進行構建。
  上面一共就三步流程,先test(測試),然後package(打包編譯),最後deploy(發布測試)。前兩個比較好理解,就是maven的基本命令。最後那個deploy就是利用docker裏面的docker來進行打包成docker,然後運行起來,作為測試發布。
  更新代碼.gitlab-ci.yml,然後提交,觸發持續集成。

  查看構建日誌

  查看宿主機鏡像和運行狀態

  查看瀏覽器,已經發布到測試環境了

5.3 釘釘通知

 1 image: maven:3-jdk-8
 2 
 3 variables:
 4     DOCKER_TAG: test/demo-spring:0.1
 5 
 6 cache:
 7     paths:
 8         - .m2/repository
 9 
10 stages:
11     - test
12     - package
13     - deploy
14     - notify
15 
16 test:
17     stage: test
18     tags:
19         - tag
20     script:
21         - mvn test
22 
23 package:
24     stage: package
25     tags:
26         - tag
27     script:
28         - mvn clean package -Dmaven.test.skip=true
29     artifacts:
30         paths:
31             - target/*.jar
32 
33 deploy:
34     image: docker:latest
35     stage: deploy
36     services:
37         - docker:dind
38     tags:
39         - tag
40     script:
41         - docker version 
42         - docker build -t $DOCKER_TAG .
43         - docker rm -f test || true
44         - docker run -d --name test -p 5000:5000 $DOCKER_TAG
45 
46 notify:
47     image: appropriate/curl:latest
48     stage: notify
49     tags:
50         - tag
51     script: "curl 'https://oapi.dingtalk.com/robot/send?access_token=d6c15304c1***************************************' -H 'Content-Type: application/json' -d '{\"msgtype\": \"text\", \"text\": {\"content\": \"功能已更新部署至測試環境\"}}' "

  有了這個通知,就可以做很多事情了,寫個腳本,封裝成一個Docker 鏡像,可以發送釘釘,發送郵件,可以對接到第三方系統等。

  更多高級應用,如集成之前了解的Harbor,Rancher。使整個系統更加強大,更加智能化。

 

參考資料
  
  
  
  
  

本文地址:
本系列目錄:
個人主頁:

volumes

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理【其他文章推薦】

USB CONNECTOR 掌控什麼技術要點? 帶您認識其相關發展及效能

※高價3c回收,收購空拍機,收購鏡頭,收購 MACBOOK-更多收購平台討論專區

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

收購3c瘋!各款手機、筆電、相機、平板,歡迎來詢價!

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

JavaScript 是否應該重命名

  在誕生 25 年之後,JavaScript 語言仍然讓很多人困惑不已。所以一個老生常談的問題是:它是否應該重命名?呼籲改名的支持者列舉了一系列理由,包括:

  • JavaScript 本意指的是 ECMAScript 的子集,但使用中它經常被指代多種不同的 ECMAScript 超集
  • JavaScript 是甲骨文公司的商標,這與 JavaScript 作為 Web 平台核心組件的身份不相符合,Web 平台是建立在開放技術和標準基礎上的
  • JavaScript 連官方 logo 都沒有
  • JavaScript 與 Java 沒有一點關係,幾十年來它給非技術人員造成了混淆。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理【其他文章推薦】

3c收購,鏡頭 收購有可能以全新價回收嗎?

台北網頁設計公司這麼多,該如何挑選?? 網頁設計報價省錢懶人包"嚨底家"

網頁設計公司推薦更多不同的設計風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

賣IPHONE,iPhone回收,舊換新!教你怎麼賣才划算?

雅虎日本在其餐廳徵收“油炸食品稅”

  為了推廣健康生活方式,減少僱員中間的肥胖率,雅虎日本在其總部餐廳開始徵收“油炸食品稅”。從 10 月 8 日開始,炸豬排之類的油炸食品價格上漲,而水煮魚或烤魚之類的魚類食品則價格下降。

  它在 2017 年的體檢显示,45% 的僱員 LDL 膽固醇含量較高。它的自助餐廳每天有 1000 名僱員吃飯,油炸食品要比水煮魚或烤魚受歡迎得多。除了炸豬排漲價外,炸雞排也漲了 100 日元至 691 日元。如今到了午餐點,魚類食品一售而空,官員表示效果顯著。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理【其他文章推薦】

※公開收購3c價格,不怕被賤賣!

※想知道網站建置網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計後台網頁設計

※不管是台北網頁設計公司台中網頁設計公司,全省皆有專員為您服務

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

※帶您來看台北網站建置台北網頁設計,各種案例分享

傳谷歌母公司欲收購Fitbit 擬推自有品牌可穿戴設備

  原標題:Google is reportedly trying to buy Fitbit

  網易科技訊,10 月 29 日消息,據外媒報道,據知情人士透露,谷歌母公司 Alphabet 正在就收購美國可穿戴設備公司 Fitbit 與後者進行談判。不過,目前兩家公司還沒有確認這筆交易,也不清楚 Alphabet 的報價。上個月,有報道稱 Fitbit 正在探索出售的可能。

  多年來,谷歌憑藉其 Wear OS 操作系統在可穿戴市場上佔據了重要地位,但它始終難以與 Apple Watch 競爭,儘管其得到了包括 LG、Fossil 和 TicWatch 在內的眾多公司支持。就連主要的安卓製造商三星也未使用 Wear OS,而是使用自己的 Tizen 操作系統。

  今年 1 月,谷歌斥資 4000 萬美元從 Fossil 手中收購了某種智能手錶技術,但目前尚不清楚該技術到底是什麼,Fossil 高管將其描述為“尚未投放市場的新產品創新”,不過迄今仍然沒有上市。

  多年來,始終有傳言稱谷歌希望推出自家品牌的 Pixel 智能手錶。在 2016 年的某個時候,這些計劃幾乎促使谷歌品牌的智能手錶上市,但該公司最終擱置了計劃,因為其擔心這些手錶可能“傷及谷歌硬件品牌的聲譽”。這些 LG 製造的智能手錶後來在 2017 年以 LG Watch Sports 和 LG Watch Style 的形式發布,評價一般。

  從那時起,谷歌打造自家硬件野心開始膨脹。2017 年,谷歌收購了 HTC 智能手機工程團隊以開發 Pixel 手機,而 Fitbit 的收購可能會幫助其在可穿戴設備領域取得類似的進展。

  與此同時,蘋果在 Apple Watch 上的經驗表明,健康正迅速成為智能手錶的殺手級應用,這也是 Fitbit 自身健身追蹤器越來越關注的一個領域。然而,儘管 Fitbit 在 2016 年收購了智能手錶製造商 Pebble,但其在智能手錶方面的表現卻不盡如人意。例如,今年早些時候發布的健身跟蹤器 Fitbit Versa 2,其實本質上就是一款普通的智能手錶。

  谷歌和 Fitbit 拒絕就上述報道置評。(小小)

  

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理【其他文章推薦】

※公開收購3c價格,不怕被賤賣!

※想知道網站建置網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計後台網頁設計

※不管是台北網頁設計公司台中網頁設計公司,全省皆有專員為您服務

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

※帶您來看台北網站建置台北網頁設計,各種案例分享

現代汽車新一代氫燃料電池車「NEXO」於CES亮相

 

南韓現代汽車(Hyundai Motor Co.)全新一代氫燃料電池車「NEXO」,9日在拉斯維加斯消費性電子展(CES)上正式亮相。   根據,NEXO具備更加完備的駕駛輔助功能,將和豐田汽車(Toyota Motor Corp.)的「Mirai」、本田汽車 (Honda Motor Co.)的「Clarity Fuel Cell」一較高下。   NEXO將在3月起於南韓開賣,2018年還將出口到特定市場。這款汽車只要花五分鐘的時間加氫,就可跑超過590公里(相當於370英里)。   此外,NEXO還配備先進駕駛輔助系統(Advanced Driver Assistance Systems;ADAS)、遙控代客停車助理服務(Remote Smart Parking Assistant)、車道追隨系統(Lane Following System)和高速公路輔助駕駛系統(Highway Driving Assistant)。   BMW、特斯拉等車廠,都推出了遙控代客停車助理服務。ADAS則支援「Level 2」自駕功能,汽車可自主掌舵、加速和減速,但仍需由駕駛人負責變換車道、下高速公路、轉彎等。   在被問到氫燃料電池車未來的需求時,現代汽車副董事長Chung Eui-sun表示,目前這種車款需求雖不多,但20年內就能成長為龐然大物。   (本文內容由授權使用。首圖來源:)

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【電動二輪車資訊】

綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

Google地圖已可更新顯示潭子電動車充電站設置地點!!

日本汽車工業危機來臨,電動車將顛覆市場格局

 

日本汽車廠商是汽車工業最大的贏家之一,富士山附近的工廠中,工人正在組裝全球最暢銷的車款。他們負責組裝一些非常複雜的零組件,擁有十分深厚的技術背景,但他們的工作和組裝零件都可能在未來幾十年被淘汰,因為電動車時代的到來,已開始顛覆日本的汽車工業。   電動車的興起對汽車工業的供應鏈帶來巨大的衝擊,電力驅動設計使變速器的皮帶、齒輪及數千個在傳統燃油汽車使用的零組件都將被淘汰,供應商已感到壓力,特別是在以汽車製造為支柱產業的日本。   日本車用變速器製造商 Jatco 公司 CEO Terry Nakatsuka 表示,全世界都在追逐電動車,這趨勢會摧毀他們公司的業務。Jatco 是全球最大的變速器供應商之一,旗下有 7,000 多名員工,是日本汽車工業和供應商體系的一部分,相關產業為日本創造了 10% 工作,占據日本出口貿易額 25%,創造的利潤遠高於其他產業。   以豐田、本田為代表的日本汽車廠商正在積極調整發展戰略,確保不會在電動車時代被其他國家的廠商超越。豐田是日本最大的汽車製造商,長期以來該公司對電動車市場接受度都表示懷疑,在 Tesla 等海外廠商的競爭壓力之下,該公司才開始考慮重視電動車產品線,目前已推出油電混合動力車,未來將推出一系列電動車新品。  

日本仍持續研究氫燃料電池

  日本政府也做出相應的政策調整,提升對電動車相關產業的支持,但被專業人士認為日本政府的計畫缺乏重點策略,可能讓日本在行動網路技術之後再一次錯過終點的技術變革。在消費電子時代,平板電腦、智慧型手機為代表的行動裝置普及,使曾經無處不在的日本品牌逐漸退出市場。數位化產品的研發轉移到矽谷,大規模的供應鏈和製造業轉移到中國,東芝、Sharp、三洋等品牌對年輕一代的消費者而言已非常陌生。一橋大學客座教授 James Kondo 曾在美國和日本的科技公司任職,他表示,尖端技術進入汽車工業使日本面臨非常大的挑戰,汽車工業是很多產業的重要驅動力,不僅是經濟格局,還有消費者的心理認知,都可能發生根本性的變化。   目前電動車只佔整個乘用車市場非常小一部分,但前景光明。中國是全球最大的汽車消費國,在電動車產業發展投入巨大,法國和英國也宣布逐步淘汰燃油汽車的時間表,以應對氣候變暖帶來的挑戰。2017 年東京車展,豐田和本田都展示了最新的電動原型車,以打消外界對日本投資電動車不足的擔憂。但日本與其他國家的重點不同,前者投入大量資金用於研發車用氫燃料電池,但其他國家對這技術的追捧已減弱,主要原因是氫燃料的獲取成本非常昂貴,但日本對氫燃料電池的熱情不減,政府支持向氫燃料社會轉型並投入資金,計劃在 2025 年之前建設 320 個氫燃料供應站。   日本工業部部長世耕弘成(Hiroshige Seko)於 2017 年 9 月表示,電動車發展趨勢越來越顯著,銷量也在不斷成長,但日本不能貿然進入電動車領域。日本廠商面對電動車熱潮的另一大調整就是加快生產線的自動化升級,最終達到 100% 機器人操作,由機器人承擔的工作可能會隨著燃油汽車的淘汰而消失,即使這些工作在汽車產業發生變革時被淘汰,面臨失業的人也會更少。   並不是所有日本汽車廠商對電動車都保持謹慎態度。Nissan 是日本最早進入電動車市場的廠商之一,2010 年就推出 Leaf 純電動車。其他車廠也在加快進入電動車市場,豐田與松下達成了電池研發合作協議,2020 年之前推出 10 款電動車產品,力拚在 2030 年後每年能售出 100 萬台純電動車。業內人士對豐田電動車業務前景比較樂觀,Tesla 在產能方面有非常大的困境,只有豐田這樣的大公司才有能力將電動車推向大眾市場。   (合作媒體:。首圖來源:)

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【電動二輪車資訊】

綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

Google地圖已可更新顯示潭子電動車充電站設置地點!!

全球電動車投資破 900 億美元,德國車廠占逾半

 

電動車投資熱潮源源不絕,路透社報導指出,在福特汽車日前宣布電動車投資加倍後,全球車廠投入研發電動車總額至少來到 900 億美元,且持續增加中。   電動車投資額與市佔率完全不成比例,目前全球每年賣出約 9 千萬輛新車,電動車佔比還不到 1 個百分點。掀起電動車革命的特斯拉,旗下 3 種車款 2017 年銷售量僅 10 萬輛出頭,目前還要面對大車廠競爭。   數據顯示,截至目前為止對電動車的投資,美國車廠占 190 億美元、中國占 210 億美元、德國占 520 億美元。雖然帳面上中國車廠的比重不高,不過美國與德國車廠主管私下受訪時透露,電動車投資預算多是分配給中國市場。   目前投資電動車最積極的車廠,正是深耕中國市場最用力的德國車廠福斯。福斯已宣布將砸下 400 億美元,計劃在 2030 年底前將旗下 300 多款車型進行電動化。   (本文內容由授權使用。首圖來源:)

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【電動二輪車資訊】

綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

Google地圖已可更新顯示潭子電動車充電站設置地點!!