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

資訊專欄INFORMATION COLUMN

前端自動化部署-.gitlab-ci.yml配置

社區(qū)管理員 / 1378人閱讀

一、前言

該過程中用到的技術(shù)棧git gitlab shell

需要提前準(zhǔn)備的內(nèi)容

  • 一個項目myweb

  • 本機安裝Git

  • 一個Gitlab倉庫

  • docker私有倉庫

  • gitlab runner(Gitlab-runner)

公司的代碼一般都保存在私有化部署的Gitlab,要使用Gitlab的CI/CD,需要Gitlab版本>8.0.0

CI/CD雖然不難,但配置過程中有很多坑,而且有些要了解的概念也比較多,可以分成多個步驟,逐一攻破。

二、入門CI實戰(zhàn)

1、安裝、注冊Gitlab-runner

gitlab-runner需要提前進行安裝和注冊,詳情

進入Gitlab->CICD->Runner 當(dāng)前可用的runner有

image.png

如圖所示,該項目可用的runner

  • 左邊runner僅可以為當(dāng)前項目使用,但需要激活一下。

  • 右邊為共享的runner, 可以直接使用

  • .gitlab-ci.yml中以tags和runner的tags關(guān)聯(lián)

2、先把CI跑起來

首先在項目的根目錄下新建.gitlab-ci.yml,然后在該文件中配置pipeline的任務(wù),這些任務(wù)將會跑在gitlab-runner中。

一個最簡單的.gitlab-ci.yml文件,其中CI_COMMIT_BRANCH、GITLAB_USER_LOGIN是一些gitlab定義好的變量,可以直接使用,你也可以定義自己的變量

image: "node" stages:   - BuildImage before_script:   - echo "before_script"   - echo "This job deploys something from the $CI_COMMIT_BRANCH branch."   - echo "Hello, $GITLAB_USER_LOGIN!" build:   tags:     - test   stage: BuildImage   image: "node"   script:     - node -v 復(fù)制代碼

推送Git倉庫

git add .gitlab-ci.yml git commit -m "commit ci" git push 復(fù)制代碼

進入gitlab-> CI/CD頁面,可以看到一個pipeline狀態(tài)是stuck,這是因為沒有Gitlab-runner。

image.png

3、使用Gitlab-runner執(zhí)行pipeline

修改.gitlab-ci.yml,僅展示部分

build:   # tags,代表要使用的runner,這里改成uaek-c1    tags:     - uaek-c1   stage: BuildImage   image: "node"   script:     - node -v 復(fù)制代碼

提交代碼,進入CI/CD頁面看到新增了一條pipeline執(zhí)行完成

image.png

點擊新的記錄,可以看到對應(yīng)的Stage,點擊當(dāng)前任務(wù)

image.png

可以看到Gitlab-runner執(zhí)行.gitlab-ci.yml的具體信息。

image.png

到目前為止,已經(jīng)看到了.gitlab-ci.yml觸發(fā)到執(zhí)行的過程,接下來,看看針對這個項目怎樣去具體跑CI

三、項目實戰(zhàn)配置

構(gòu)建Docker鏡像參考詳情

1、在項目添加Dockerfile文件和Nginx配置文件

(1)、根目錄中添加配置文件Dockerfile

FROM node:10-alpine as builder WORKDIR /data/myweb COPY . . RUN npm install --registry=https://registry.npm.taobao.org --no-package-lock --no-save RUN yarn publish:prod FROM nginx:alpine as myweb RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \     && echo "Asia/Shanghai" > /etc/timezone  WORKDIR /data/production COPY ./nginx /etc/nginx/conf.d COPY  --from=builder /data/myweb/build /data/production EXPOSE 80, 443 復(fù)制代碼

(2)、在項目根目錄中新建nginx/default.conf,我們用外掛的nginx配置文件覆蓋原來Nginx鏡像中的配置文件

server {     listen 80;     listen [::]:80;     server_name localhost;     location / {         root /data/production;         index index.html;         try_files $uri /index.html;     }     error_page 500 502 503 504 /50x.html;     location = /50x.html {      root /usr/share/nginx/html;     } } 復(fù)制代碼

2、配置文件

# 定義全局變量,鏡像名稱,命名空間,鏡像拉取的密碼的變量名 variables:   IMAGE_HUB: "lvpf/myweb"    DOCKER_HUB_URL: "hub.docker.com/r/lvpf/myweb" # 這里打印一些變量,僅僅為了展示,看下這些gitlab預(yù)設(shè)的變量值,可以去掉 before_script:   - echo "VARIABLE CI_COMMIT_SHA IS $CI_COMMIT_SHA!"   - echo "VARIABLE CI_COMMIT_TAG IS $CI_COMMIT_TAG!"   - echo "VARIABLE CI_PROJECT_DIR IS $CI_PROJECT_DIR!" # stages順序運行, 同一個stage的所有job并行 stages:   - BuildImage # 任務(wù)1,構(gòu)建docker鏡像 docker-image-master:   # 使用的Gitlab Runner標(biāo)簽   tags:     - uaek-c1   # 任務(wù)名稱   stage: BuildImage   # 由于當(dāng)前runner為k8s構(gòu)建的,所以這里執(zhí)行docker構(gòu)建和上傳需要通過kaniko鏡像,具體可以看下面參考文檔()   image: gcr.io/kaniko-project/executor   script:     # 首先我們需要為我們的鏡像生成一個tag,規(guī)則是:如果有 git tag,就使用 git tag,如果沒有的話,就使用 git commit sha     - IMAGE_TAG=$CI_COMMIT_SHA && if [[ -n "$CI_COMMIT_TAG" ]]; then IMAGE_TAG=$CI_COMMIT_TAG; fi     - echo $IMAGE_HUB:$IMAGE_TAG     - mkdir -p /kaniko/.docker     - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json     - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $DOCKER_HUB_URL:$IMAGE_TAG   # 使用 only 來限制這個 job 什么情況下會運行,下面的設(shè)置標(biāo)識只有新的 tag 被創(chuàng)建時才觸發(fā)CI,如果去掉,每次推送分支都會觸發(fā)CI   only:     - tags 復(fù)制代碼

3、注意事項

  • 一般公司安全性考慮,不會將鏡像推送到hub,公司內(nèi)網(wǎng)一般也不通,要考慮自建私有鏡像倉庫

  • gitlab-runner可以使用的宿主機類型很多,包括云主機、docker、k8s等,構(gòu)建鏡像的解決方式略有不同,可以參考文檔

  • 其中一些涉及密碼的變量,可以通過Gitlab->Setting->CI/CD->Variables來設(shè)置,直接在.gitlab-ci.yml中使用


作者:前端中后臺
鏈接:https://juejin.cn/post/6967570299336261646
來源:稀土掘金
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。


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

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

相關(guān)文章

  • 基于 GitLab CI 搭建前端自動構(gòu)建環(huán)境

    摘要:什么是持續(xù)集成持續(xù)集成,簡稱指的是,頻繁地一天多次將代碼集成到主干。如圖什么是一次其實相當(dāng)于一次構(gòu)建任務(wù),里面可以包含多個流程,如安裝依賴運行測試編譯部署測試服務(wù)器部署生產(chǎn)服務(wù)器等流程。參考鏈接用進行持續(xù)集成 什么是持續(xù)集成 ? 持續(xù)集成(Continuous integration,簡稱CI)指的是,頻繁地(一天多次)將代碼集成到主干。 GitLab CI 什么是 GitLab CI...

    Warren 評論0 收藏0
  • React Native項目動化打包發(fā)布

    摘要:所以在此給大家分享一下不使用構(gòu)建工具實現(xiàn)項目自動化打包發(fā)布的思路。對于一個前端項目來說,自動化的構(gòu)建是很有必要的,同時我們也可以通過實現(xiàn)更多的功能比如代碼檢測,單元測試等等。另外這種思路同樣適用于其他項目等前端項目,等移動端項目。 今天這篇文章的目的是在rn項目的構(gòu)建,并不會涉及到rn框架或者使用的講解,說起構(gòu)建,特別是前端構(gòu)建大家應(yīng)該很快會想到webpack、Grunt、 Gulp等...

    desdik 評論0 收藏0
  • Gitlab CI/CD執(zhí)行流程

    一、什么是CI/CDCI 持續(xù)集成CD 持續(xù)交付CI/CD就是在開發(fā)階段,通過自動化發(fā)布,來頻繁部署應(yīng)用的一種方式二、為什么要配置CI/CD想象一下,一個項目的發(fā)布如果手動部署,需要的操作有:單元測試打包文件上傳服務(wù)器等等如果每個過程都需要手動執(zhí)行,每次都要保證不出錯,這個已經(jīng)很繁瑣了。而現(xiàn)在大的前端項目多達10+的人開發(fā),而且人員流動大。如果每個人都這么發(fā)布,快速迭代就容易出錯。這時候就需要CI...

    社區(qū)管理員 評論0 收藏0
  • Node項目的Gitlab自動部署實踐(基于Docker)

    摘要:只要的項目有提交,相關(guān)就根據(jù)來決定是否跑自動部署的命令。項目的自動部署添加執(zhí)行的注冊命令,按照說明進行參數(shù)配置。至此,和服務(wù)都已經(jīng)自動部署完成。 準(zhǔn)備工作 說明 公司最近準(zhǔn)備了一臺新的開發(fā)服務(wù)器,正好用以實踐docker的基本應(yīng)用。docker的好處不再贅述,詳情可參考阮一峰的這篇入門。(關(guān)于Docker最好的中文介紹,沒有之一)。 公司目前主要使用了EggJs + ReactJS的技...

    oysun 評論0 收藏0
  • gitlab-ci坑后感與指北

    摘要:本文的目的最主要是備忘其次是分享療效并不能讓你一下子掌握這只是一個比較完整的解決方案其他基礎(chǔ)知識自行補充基調(diào)首先這不是屠龍刀不要奢望一篇文章可以走遍天下這里只是提供一個具體的落地方案一個具體的技術(shù)選型階段代碼倉庫關(guān)于代碼倉庫本文選取的方案是 本文的目的:最主要是備忘, 其次是分享 療效: 并不能讓你一下子掌握CI/CD, 這只是一個比較完整的解決方案,其他基礎(chǔ)知識,自行補充. 基調(diào)...

    jerry 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<