国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

超長(zhǎng)干貨:基于Docker的DevOps CI/CD實(shí)踐——來自iHealth的分享

Dongjie_Liu / 3288人閱讀

摘要:在貓屎氤氳的霧氣里角仰望天花板,手機(jī)微信提醒這次構(gòu)建成功或失敗,并附帶污言穢語(yǔ)。這時(shí)他可以開始往工位走,坐下時(shí),微信又會(huì)提醒本次部署到成功或失敗。與企業(yè)微信的集成在決定使用之前,需要知道的是,是一個(gè)高度依賴社區(qū)的項(xiàng)目。

前言

相信我,一切事情的發(fā)生都是趕鴨子上架,沒有例外。人類所有偉大的變革都是迫不得已,可又是那么順其自然。比如容器(docker)技術(shù)的誕生,比如箭在弦上的創(chuàng)業(yè),比如野心勃勃的kubernetes,比如如今已作為左膀右臂的rancher,比如這篇文章。

不同于鄭兄的CI/CD實(shí)踐《如何利用Docker構(gòu)建基于DevOps的全自動(dòng)CI》,我們結(jié)合自身狀況,構(gòu)建了一套我們自己的DevOps CI/CD流程,更輕更小,更適合Startup。

合適的才是最好的(Node.js & Docker)

如果世界只有FLAG、BAT,那就太無趣了。iHealth是一家初創(chuàng)型公司,我所在的部門有大概10名研發(fā)人員,在擔(dān)負(fù)著三端研發(fā)工作的同時(shí),所有圍繞服務(wù)的交付和運(yùn)維工作也都是我們來做。

技術(shù)的選型上,服務(wù)端、Web端和移動(dòng)端(Android、iOS)都要上,但人少。所以招人的時(shí)候并沒有以貌取人的資格,部門對(duì)外的Title都是全棧。能一門語(yǔ)言通吃三端,群眾基礎(chǔ)廣泛,恐怕沒有比Javascript/Typescript(Node.js)更合適的了。

服務(wù)端有Express、Koa、Feather、Nest、Meteor等各有其長(zhǎng)的框架,前端大而火的Reactjs、Vuejs和Angular,不管是Server Render還是前后端分離,都可以得心應(yīng)手。因?yàn)楣镜慕】翟O(shè)備(血糖儀、血壓計(jì)、體溫計(jì)、血氧、體脂秤等等)會(huì)有專門的部門研發(fā)設(shè)計(jì)以及提供SDK,所以移動(dòng)端的研發(fā)工作更多是在設(shè)計(jì)實(shí)現(xiàn)和性能優(yōu)化上,React Native是一枚大殺器。雖然現(xiàn)在公司并沒有桌面端的需求,但不能否認(rèn)的是Electron是一個(gè)很有趣的項(xiàng)目,也為“全棧”這個(gè)詞增加了更多背書。

另外,選擇使用Node/Js/Ts作為全棧的基礎(chǔ)會(huì)附帶有RPC的好處。無需集成傳統(tǒng)意義上的RPC框架(如gRPC),只需在編寫遠(yuǎn)程(微)服務(wù)方法時(shí),編寫相應(yīng)的npm package,也可以達(dá)到相同的目的,且成本更小,更易理解。

運(yùn)維環(huán)境的選型上,所有的業(yè)務(wù)都運(yùn)行在云端,省去了機(jī)房維護(hù)和服務(wù)器運(yùn)維的成本。其實(shí)在盤古開荒時(shí),我們也是編寫了Node程序后,使用PM2部署在服務(wù)器上,并沒有使用Docker。當(dāng)然也存在沒有使用Docker所帶來的一切問題:三端不同步、環(huán)境無法隔離……而Docker帶給我最大的驚喜除了超強(qiáng)的可移植性,更在于研發(fā)人員可以非常容易對(duì)程序的頂級(jí)架構(gòu)進(jìn)行推理。

事實(shí)上,我們直接使用docker-compose做容器編排著實(shí)有一段時(shí)間,在一次大規(guī)模的服務(wù)器遷移中,發(fā)現(xiàn)需要重新思考越來越多的container管理和更完善的編排方案。Rancher(Cattle)就是在這時(shí)被應(yīng)用到技術(shù)棧中。

一切從Github開始

在運(yùn)維環(huán)境一波三折的同時(shí),DevOps的征程也是亦步亦趨,步步驚心。幸運(yùn)的是,我們知道自己缺乏什么,想要什么,所以能比較容易的做到“哪里不會(huì)點(diǎn)哪里”。如同上一章節(jié)所述,合適的才是最好的。持續(xù)集成(CI)與持續(xù)交付(CD)的迭代過程,從最初的代碼拷貝,到結(jié)合docker-compose與rsync命令,到使用CI/CD工具,做到相對(duì)意義上的自動(dòng)化……迄今為止,我們摸索出一套相對(duì)好用并且好玩的流程:

故事大致是這樣的,當(dāng)一只代碼猴提交代碼之后,他需要去接一杯咖啡。在貓屎氤氳的霧氣里45°角仰望天花板,手機(jī)微信提醒這次構(gòu)建成功(或失敗,并附帶污言穢語(yǔ))。這時(shí)他可以開始往工位走,坐下時(shí),微信又會(huì)提醒本次部署到Rancher成功(或失敗)。

這一切開始的地方是github。當(dāng)開發(fā)者寫完?BUG?功能之后,需要有地方保存這些寶貴的資料。之所以沒有使用Gitlab或Bitbucket搭建私有的Git服務(wù)器,是因?yàn)槲覀冋J(rèn)為代碼是最直接的價(jià)值體現(xiàn)。服務(wù)如骨架,終端如皮膚,UE如衣服,三者組成讓人賞心悅目的風(fēng)景,代碼是這背后的基礎(chǔ)。我們認(rèn)為在團(tuán)隊(duì)精力無法更分散、人口規(guī)模尚小時(shí),購(gòu)買Github的商業(yè)版是穩(wěn)妥且必要的,畢竟那幫人修復(fù)一次故障就像把網(wǎng)線拔下來再插上那樣簡(jiǎn)單。

Drone CI

Drone這個(gè)單詞在翻譯中譯作雄蜂、無人機(jī)。我特意咨詢了一位精通一千零二十四國(guó)語(yǔ)言的英國(guó)朋友,說這個(gè)詞的意思是autonomous,works by itself。白話就是有活它自己干,而且是自主的。不過這個(gè)解釋對(duì)于Drone來說名副其實(shí)。這個(gè)在Github上擁有13,000+ Stars的開源項(xiàng)目,使用Golang編寫,相比Jenkins的大而全,Drone是為Docker而生的CI軟件。如果有使用過Gitlab CI的小伙伴,相信對(duì)Drone的使用方式不會(huì)感到陌生,他們都是使用Yaml風(fēng)格文件來定義pipeline:

  build:
    image: node:latest
    commands:
      - npm install
      - npm run lint
      - npm run test
  publish:
    image: plugins/npm
    when:
      branch: master

Drone的安裝方式如同Rancher一樣簡(jiǎn)單,一行docker命令即可。當(dāng)然,大家也可以看Drone的官方文檔,在這里,只講一下使用Rancher catalog安裝Drone的方式:

查看大圖大家可以看到Drone使用Rancher catalog安裝的方法(with github),在Github 的Settings中創(chuàng)建Drone的OAuth App時(shí),Home Page Url務(wù)必要寫你能訪問Drone的IP地址或域名,例如:
http://drone.company.com

而OAuth App的Authorization callback URL應(yīng)該對(duì)應(yīng)上面的寫法:
http://drone.company.com/auth...

小功告成:

登錄進(jìn)Drone之后,在Repositories中找到你想要開啟CI的Git Repo,用switch按鈕打開它:

這表示已經(jīng)打開了Drone對(duì)于這個(gè)Repo的webhook,當(dāng)有代碼提交時(shí),Drone會(huì)檢測(cè)這個(gè)Repo的根目錄中是否包含.drone.yml文件,如果存在,則根據(jù)yaml文件定義的pipeline執(zhí)行CI流程。

Drone與rancher、harbor、企業(yè)微信的集成

在決定使用Drone之前,需要知道的是,Drone是一個(gè)高度依賴社區(qū)的項(xiàng)目。其文檔諸多不完善(完善過,版本迭代,文檔跟不上了),plugins質(zhì)量良莠。但對(duì)于擅長(zhǎng)Github issue、Google、Stackoverflow的朋友來說,這并不是特別困難的事情。Drone也有付費(fèi)版本,無需自己提供服務(wù)器,而是像Github那樣作為服務(wù)使用。

如果你決定開始使用Drone,截止到上面的步驟,我們打開了Drone對(duì)于Github Repo的監(jiān)聽,再次提醒,需要在代碼repo的根目錄包含.drone.yml文件,才會(huì)真正觸發(fā)Drone的pipeline。

那么,如果想重現(xiàn)上面故事中的場(chǎng)景,應(yīng)該如何進(jìn)行集成呢?

我司在構(gòu)建CI/CD的過程中,現(xiàn)使用Harbor作為私有鏡像倉(cāng)庫(kù),從提交代碼到自動(dòng)部署到Rancher,其實(shí)應(yīng)當(dāng)經(jīng)歷如下步驟:

提交代碼,觸發(fā)Github Webhook

Drone使用docker插件,根據(jù)Dockerfile構(gòu)建鏡像,并推送到Harbor中

Drone使用rancher插件,根據(jù)stack/service,部署上面構(gòu)建好的image

Drone使用企業(yè)微信插件,報(bào)告部署結(jié)果

在這里節(jié)選公司項(xiàng)目中的一段yaml代碼,描述了上述步驟:

pipeline:
  # 使用plugins/docker插件,構(gòu)建鏡像,推送到harbor
  build_step:
    image: plugins/docker
    username: harbor_username
    password: harbor_password
    registry: harbor.company.com
    repo: harbor.company.com/registry/test
    mirror: "https://registry.docker-cn.com"
    tag:
      - dev
    dockerfile: Dockerfile
    when:
      branch: develop
      event: push
  
  # 使用rancher插件,自動(dòng)更新實(shí)例
  rancher:
    image: peloton/drone-rancher
    url: "http://rancher.company.com/v2-beta/projects/1a870"
    access_key: rancher access key
    secret_key: rancher secret key
    service: rancher_stack/rancher_service
    docker_image: "harbor.company.com/registry/test:dev"
    batch_size: 1
    timeout: 600
    confirm: true
    when:
      branch: develop
      event: push
      
  # 使用clem109/drone-wechat插件,報(bào)告到企業(yè)微信
  report-deploy:
    image: clem109/drone-wechat
    secrets:
      - plugin_corp_secret
      - plugin_corpid
      - plugin_agent_id
    title: "${DRONE_REPO_NAME}"
    description: |      構(gòu)建序列: ${DRONE_BUILD_NUMBER} 部署成功,干得好${DRONE_COMMIT_AUTHOR} !      更新內(nèi)容: ${DRONE_COMMIT_MESSAGE}    msg_url: "http://project.company.com"
    btn_txt: 點(diǎn)擊前往
    when:
      branch: develop
      status:
        - success

對(duì)接企業(yè)微信之前,需要在企業(yè)微信中新建自定義應(yīng)用,比如我們的應(yīng)用名字叫Drone CI/CD。當(dāng)然,您也可以給每一個(gè)項(xiàng)目創(chuàng)建一個(gè)企業(yè)微信App,這樣雖然麻煩,但是可以讓需要關(guān)注該項(xiàng)目的人關(guān)注到構(gòu)建信息。

下面是企業(yè)微信測(cè)試的截圖:

企業(yè)微信與微信客戶端是連通的,可玩性還不錯(cuò):

在這里我認(rèn)為有必要提醒一下,使用Drone的企業(yè)微信插件時(shí),不要使用Drone Plugins列表里的企業(yè)微信。翻閱其源碼可以發(fā)現(xiàn),其中一個(gè)函數(shù)會(huì)將企業(yè)的敏感信息發(fā)送至私人服務(wù)器。不管作者本身是出于BaaS的好意,還是其它想法,我認(rèn)為都是不妥的:

代碼地址:
https://github.com/lizheming/...

在此Drone Plugins里的企業(yè)微信插件出現(xiàn)很久之前,我的好友Clément 克雷蒙同學(xué)寫了一個(gè)企業(yè)微信插件,至今仍在使用。歡迎檢查源代碼,提issue提bug,為了不讓克雷蒙同學(xué)驕傲,我并不打算號(hào)召大家給他star:
clem109/drone-wechat

而在構(gòu)建完成后,可以看到Drone控制面板里小伙伴們戰(zhàn)斗過的痕跡:

ELK與Rancher的集成

ELK是ElasticSearch、Logstash與Kibana的集合,是一套非常強(qiáng)大的分布式日志方案。ELK的使用更多在于其本身的優(yōu)化以及Kibana面向業(yè)務(wù)時(shí)的使用,這本身是一個(gè)很大的話題,只ElasticSearch就有許多奇技淫巧。因?yàn)槿肆Y源的原因,我們使用了兄弟部門搭建的ELK,等同于使用已有的ELK服務(wù)。所以在此也不再贅述ELK的搭建,網(wǎng)上有許多資源可供參考。

在這里要做的事情,就是把rancher中的日志歸集到已有的ELK中。

在rancher的catalog中找到logspout,這是一個(gè)logstash的adapter,為docker而生:

在配置中設(shè)置LOGSPOUT=ignore,然后把ROUTE_URIS設(shè)置為已經(jīng)搭建好的logstash地址,就可以將當(dāng)前環(huán)境的日志集成到ELK中:

Traefik與Rancher的集成

目前看來一切都很好,對(duì)嗎?的確是這樣。我們提交了代碼,drone自動(dòng)構(gòu)建鏡像到harbor,自動(dòng)部署到Rancher,自動(dòng)發(fā)送構(gòu)建結(jié)果,Rancher又可以幫助自動(dòng)重啟死掉的container,使用rancher webhook也可以實(shí)現(xiàn)自動(dòng)彈性計(jì)算,并且可以使用yaml文件定制構(gòu)建流程,定制一些report信息,當(dāng)構(gòu)建或部署失敗時(shí),讓企業(yè)微信自動(dòng)侮辱我們的小伙伴……

可是據(jù)說微服務(wù)還講究服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn),如果并不想動(dòng)用Zookeeper這樣的核武器(就像我們不想用Kong一樣,一是有一定學(xué)習(xí)和維護(hù)成本,二是Logo越改越丑),那就需要找到一個(gè)輕量級(jí),能滿足需求的替代品。況且目前并沒有遇到需要削峰的處理。

對(duì)于域名的解析,我們選擇使用Traefik作為L(zhǎng)B,這個(gè)同樣使用Golang編寫,同樣擁有將近13,000 Stars,并且兼具簡(jiǎn)單的服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)功能。更值得一提的是,Rancher catalog里的Traefik非常友好的集成了Let"s Encrypt(ACME)的功能,可以做到自動(dòng)申請(qǐng)SSL證書,過期自動(dòng)續(xù)期。當(dāng)然,不推薦在生產(chǎn)環(huán)境使用,SSL免費(fèi)證書的數(shù)量非常容易達(dá)到閾值而使得域名無法訪問。

Traefik內(nèi)部架構(gòu)圖(Image from traefik.io):

如何安裝Traefik呢?我們以Rancher catalog中的Traefik為例(不使用ACME):

我們的目的是做域名解析,integration mode應(yīng)該設(shè)置為metadata。Http Port設(shè)置為80,Https Port設(shè)置為443,Admin Port可以根據(jù)自己實(shí)際情況填寫,默認(rèn)8000。

此時(shí)的Traefik已經(jīng)準(zhǔn)備就緒,但是打開traefik_host:8000查看控制面板時(shí),發(fā)現(xiàn)Traefik并沒有做任何代理。原因是需要在代理的目標(biāo)中,使用rancher labels標(biāo)示出traefik的代理方式。

比如剛才安裝的Drone,如果我們想代理到drone.company.com這個(gè)域名,則需要在drone server的container中設(shè)置lables:

traefik.enable=true 表示啟用traefik代理

traefik.domain=company.com 表示traefik代理的根域名

traefik.port=8000 表示這個(gè)container對(duì)外暴露的端口

traefik.alias=drone 表示想將drone server這個(gè)container解析為
drone.company.com

需要注意的是,traefik.alias有可能導(dǎo)致重復(fù)解析,同時(shí)traefik有自己的一套默認(rèn)解析規(guī)范。更詳細(xì)的文檔請(qǐng)看GitHub 地址:
rawmind0/alpine-traefik

在設(shè)置Rancher labels后,可以看到Traefik的控制面板中,已經(jīng)注冊(cè)了服務(wù)地址:

利用Traefik的這個(gè)特性和Rancher對(duì)于Container的彈性計(jì)算,可以做到簡(jiǎn)單的服務(wù)注冊(cè)和服務(wù)發(fā)現(xiàn)。

最后需要在域名服務(wù)商那里做A記錄解析,解析的IP地址應(yīng)為Traefik的公網(wǎng)地址。 因?yàn)橛蛎馕龅哪J(rèn)端口是80和443,后面發(fā)生的事情就和Nginx的作用一毛一樣了。域名解析到Traefik服務(wù)器的80端口(https則是443),Traefik發(fā)現(xiàn)這個(gè)域名已經(jīng)注冊(cè)到服務(wù)中,于是代理到10.xx開頭的虛擬IP,轉(zhuǎn)發(fā)請(qǐng)求并發(fā)送response。與Nginx Conf如出一轍:

至此,我們已經(jīng)完全實(shí)現(xiàn)從代碼提交,到自動(dòng)部署以及域名解析的自動(dòng)化。在生產(chǎn)環(huán)境的Traefik on Rancher中開啟Https,可以把ssl的整個(gè)信任鏈以文本的形式粘貼進(jìn)去,同時(shí)修改Traefik的Https選項(xiàng)為true即可:

另外,Traefik并不是LB/Proxy的唯一選擇,甚至不是最酷的選擇,但確是目前與Rancher集成最好的。下面圖中的程序都值得做調(diào)研(可以小小的注意一下istio,天庭飽滿,骨骼輕奇,這還只是2017年7月底的數(shù)據(jù)……):

事實(shí)上對(duì)于Traefik我們是又愛又恨。它能非常方便的與Rancher集成,功能簡(jiǎn)便強(qiáng)大,性能可觀。但在最開始著實(shí)踩了不少坑,一度打算放棄并回歸到傳統(tǒng)的Nginx做反向代理的方式,甚至寫了PR并被merge到master中。截止目前Rancher catalog中最新的1.5版本,已經(jīng)是一個(gè)真正穩(wěn)定可用的版本了。

小技巧

Node.js的項(xiàng)目中書寫Dockerfile時(shí),經(jīng)常會(huì)用到y(tǒng)arn或者npm i來拉取依賴包。但npm的服務(wù)器遠(yuǎn)在世界的另一端,這時(shí)可以使用淘寶的鏡像進(jìn)行加速。通常我們?cè)诒镜亻_發(fā)時(shí)執(zhí)行會(huì)記得加上npm鏡像,在服務(wù)器上跑Dockerfile也是一樣的道理:

FROM node:alpine
WORKDIR /app
COPY package.json .
RUN npm i --registry https://registry.npm.taobao.org
COPY . .
CMD [ "node", "bin/www" ]

Drone在構(gòu)建鏡像并推送到鏡像倉(cāng)庫(kù)時(shí),需要根據(jù)Dockerfile的基礎(chǔ)鏡像進(jìn)行構(gòu)建,而docker服務(wù)器也遠(yuǎn)在世界的另一端,同樣的可以使用mirror來指定鏡像倉(cāng)庫(kù),并盡量使用alpine鏡像縮小體積:

pipeline:
  build_step:
    image: plugins/docker
    username: harbor_name
    password: harbor_pwd
    registry: harbor.company.com
    repo: harbor.company.com/repo/test
    mirror: "https://registry.docker-cn.com"

作大死命令,不要在服務(wù)器上使用。但本地開發(fā)很好用。意思是停止所有container,刪除所有container,刪除所有image:

docker stop $(docker ps -aq) && docker rm $(docker ps -aq) && docker rmi $(docker images -aq)
結(jié)語(yǔ),附帶工具鏈匯總

羅馬不是一天建成,萬丈高樓平地起。在企業(yè)發(fā)展之初,我們?cè)诖蚧A(chǔ)的同時(shí),也要保證項(xiàng)目高速迭代。短時(shí)間內(nèi)無法做到Netflix的體量以及其對(duì)于微服務(wù)治理的精妙,在運(yùn)作的細(xì)節(jié)中也有諸多需要完善的部分,例如BDD、TDD的實(shí)踐,傳統(tǒng)意義上的UAT與藍(lán)綠灰度發(fā)布,移動(dòng)時(shí)代的全鏈路日志,服務(wù)熔斷、隔離、限流以及降級(jí)的能力,亦或是星火燎原的Service Mesh……所以退一步講,必須先生存,才能生活。我們可以允許服務(wù)死掉,但是要保證無感知或極短感知的情況下,服務(wù)能迅速的活過來。

在持續(xù)交付的過程中,我們也嘗試使用sonar代碼質(zhì)量管理,使用phabricator作為code review環(huán)節(jié),因?yàn)榕渲玫淖兏臀⒎?wù)數(shù)量的逐漸增多,配置中心(主要考慮攜程的Apollo)的引入也迫在眉睫,調(diào)用鏈監(jiān)控以及代碼重新埋點(diǎn)的成本(二節(jié)所述npm package rpc的優(yōu)勢(shì)又可體現(xiàn))是否能抵過其帶來的好處等等。但因目前尚未達(dá)到一個(gè)非常成熟的階段,所以本次不再分享,僅表述其名來啟發(fā)各位聰明的小伙伴。

除此之外,技術(shù)視野的成長(zhǎng)也非朝夕。就像我國(guó)政府在大家買不起自行車時(shí)就開始修建高速公路,時(shí)至今日,還能說它是面子(KPI)工程嗎?與社區(qū)一同進(jìn)步,開闊視野的同時(shí),保持獨(dú)立思考的能力,是比上述所有更為重要的技能。

回到本文開頭所寫,一切都是趕鴨子上架。與其說筆者天資聰慧才貌過人風(fēng)度翩翩儒雅風(fēng)流,不如說這都是被逼的。同事抱怨流程繁瑣不直觀,若要做到代碼和咖啡那樣大繁若簡(jiǎn),就需要思考CI/CD的目的與本質(zhì)。大智若愚,真正的天才,必須能夠讓事情變得簡(jiǎn)單。

拓展資料:

Rancher:?https://github.com/rancher/ra...
Drone:?https://github.com/drone/drone
Drone企業(yè)微信API插件:?clem109/drone-wechat
Harbor:?vmware/harbor
Traefik:?containous/traefik
Phabricator:?phacility/phabricator
SonarQube:?SonarSource/sonarqube
Logspout:?gliderlabs/logspout
配置中心(攜程做的,代碼寫的還不錯(cuò)):?ctripcorp/apollo
SuperSet(BI):?apache/incubator-superset

作者簡(jiǎn)介

郭拓,北京愛和健康科技有限公司(iHealth)。負(fù)責(zé)公司基礎(chǔ)服務(wù)構(gòu)建與研發(fā)流程定制,曾供職于樂視、21vianet,高齡攻城獅活躍在一線研發(fā)工作中,樂此不疲。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/27215.html

相關(guān)文章

  • CI Weekly #19 | 關(guān)于軟件開發(fā)模型思考,以及最新 CI/CD 實(shí)踐分享

    摘要:以上是的所有技術(shù)分享,如有問題,請(qǐng)聯(lián)系我們圍繞軟件工程效率提升進(jìn)行一系列技術(shù)內(nèi)容分享,包括國(guó)內(nèi)外持續(xù)集成持續(xù)交付,持續(xù)部署自動(dòng)化測(cè)試等實(shí)踐教程工具與資源,以及一些工程師文化相關(guān)的程序員。 五月一來,夏天便悄然而至。flow.ci 也帶來了幾個(gè)新的變化,幫你進(jìn)一步優(yōu)化開發(fā)工作流。一起來看看這幾個(gè)重點(diǎn)功能: 支持 iOS 項(xiàng)目 Xcode8.3 構(gòu)建 iOSer 們重點(diǎn)來了,flow....

    CoderBear 評(píng)論0 收藏0
  • CI Weekly #6 | 再談 Docker / CI / CD 實(shí)踐經(jīng)驗(yàn)

    摘要:阿里云效平臺(tái)基于理念的私有平臺(tái)實(shí)踐本文將系統(tǒng)的從個(gè)方面,分享互娛運(yùn)維團(tuán)隊(duì)對(duì)于運(yùn)維平臺(tái)實(shí)踐經(jīng)驗(yàn)及未來展望,希望對(duì)大家有一些參考意義。 CI Weekly 圍繞『 軟件工程效率提升』 進(jìn)行一系列技術(shù)內(nèi)容分享,包括國(guó)內(nèi)外持續(xù)集成、持續(xù)交付,持續(xù)部署、自動(dòng)化測(cè)試、 DevOps 等實(shí)踐教程、工具與資源,以及一些工程師文化相關(guān)的程序員 Tips 。同步于 flow.ci Blog、微信公眾號(hào)、官...

    justCoding 評(píng)論0 收藏0
  • 快收藏!52篇25萬字,微服務(wù)、云原生、容器、K8S、Serverless精華文章集錦

    摘要:正在走遠(yuǎn),新年之初,小數(shù)精選過去一年閱讀量居高的技術(shù)干貨,從容器到微服務(wù)云原生,匯集成篇精華集錦,充分反映了這一年的技術(shù)熱點(diǎn)走向。此文值得收藏,方便隨時(shí)搜索和查看。,小數(shù)將繼續(xù)陪伴大家,為朋友們奉獻(xiàn)更有逼格的技術(shù)內(nèi)容。 2017正在走遠(yuǎn),新年之初,小數(shù)精選過去一年閱讀量居高的技術(shù)干貨,從容器、K8S 到微服務(wù)、云原生、Service Mesh,匯集成52篇精華集錦,充分反映了這一年的技...

    AaronYuan 評(píng)論0 收藏0
  • CI Weekly #8 | CI/CD 技能進(jìn)階路線

    摘要:微店技術(shù)團(tuán)隊(duì)公眾號(hào)容器化之路這是一套以阿里云為基礎(chǔ),為核心,第三方服務(wù)為工具的開發(fā)測(cè)試部署流程,以及內(nèi)部的代碼提交,版本管理規(guī)范。如何打造安全的容器云平臺(tái)對(duì),微服務(wù),來說都是非常好的落地實(shí)踐技術(shù)。 在使用 flow.ci 進(jìn)行持續(xù)集成的過程中,也許你會(huì)遇到一些小麻煩。最近我們整理了一些常見問題在 flow.ci 文檔之 FAQ,希望對(duì)你有用。如果你遇到其他問題,也可以通過「在線消息」或...

    FuisonDesign 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<