翻譯過來就是持續構建、持續部署,在軟件工程中,一個項目的迭代往往是很頻繁的,每次都要重新部署,就成了一件很繁瑣的事情,那么如何保證項目能夠持續的構建和部署呢?
我們先來看一個軟件的開發流水線一般為:
需求設計:軟件需求分析和設計
開發階段:進入編碼、程序開發、簡單的本地單元測試、代碼Review等
全面測試:功能測試、性能測試、單元測試、界面測試、安全測試等
發布:將代碼部署,交給用戶使用
持續集成:頻繁的將代碼合并到主分支中,強調通過集成測試反饋給開發一個結果,不管失敗還是成功。
持續集成并不能消除Bug,只能幫助開發更容易發現Bug。
持續集成分成三個階段:
持續集成準備階段:根據軟件開發的需要,準備CI的一些前置工作
集成CI工具的代碼倉庫(Gitlab、Github、Jenkins等)
單元測試或者集成測試的腳本
觸發CI的配置文件,實現各種功能的Jobs
持續集成進行階段
推送代碼出發CI系統
通過CI系統監聽代碼的測試、構建,反饋集成結果
通過版本管理系統實現版本的管理
接續集成完成階段:反饋集成結果
持續交付:主要面向測試人員和產品,可以保證一鍵部署,常常要交付的內容包括
源代碼:缺點,代碼依賴的環境不容易控制
打包的二進制文件或者系統包:存在兼容性問題和環境差異出現的部署失敗
虛擬機鏡像交付:系統隔離最好,但占用系統資源嚴重
Docker交付:容器交付,成本最低,兼容性最好
持續部署:此時要提供一個穩定的版本,包括所需的環境和依賴,主要面向用戶提供服務,發生錯誤要能快速回滾。
下圖為一個完整的CI/CD過程:
提供CI能力的工具包括:Gitlab、Github、Jenkins等,下面我們來看下如何通過Gihub的CI/CD來部署前端項目。
1、在項目根目錄下新建.github/workflows
,在workflows下新建yml文件,命名可以任意,如下是一份yml配置文件
name: GitHub Actions Demo # ci文件的名字 on: [push] # 觸發CI的條件 jobs: # CI/CD通過執行一個個的Job來完成每個階段的工作,這里配置每個Jobs Check: # Job的名稱 runs-on: ubuntu-latest # Runner,github托管的虛擬機環境,用來執行下面的Job命令 steps: # 執行步驟 - name: Check # 子步驟名稱 if: runner.os != 'Windows' # 執行條件 uses: actions/checkout@v2 # 使用的action,檢出分支,可以使用docker hub中的鏡像:docker://alpine:3.8 - name: ESLintCode # ESLint 檢測代碼質量 uses: actions/setup-node@v2 # 使用node環境 - run: yarn # 執行命令安裝依賴,也可以執行shell腳本./.github/scripts/build.sh - run: yarn global add eslint && eslint ./src/*/**.js # 安裝全局ESLint并檢測代碼 - name: StyleLintCode # 檢測代碼樣式 uses: actions/setup-node@v2 # 使用node環境 - run: yarn # 執行命令安裝依賴 - run: yarn global add stylelist && stylelint ./src/*/**.less # 執行檢測命令 Build: # Job名稱 needs: Check # 決定執行的順序,通過needs,在Check任務執行完成后執行當前任務,指出數組,可以寫入多個 # The type of runner that the job will run on runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - name: Check uses: actions/checkout@v2 # Runs a single command using the runners shell - name: Build uses: actions/setup-node@v2 env: ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }} BRANCH: main - run: yarn - run: yarn build:pre 復制代碼
workflow:一個yml文件配置一個工作流
job:一個workflow由一個或多個job組成
step:一個job由多個step組成,依次完成
action:每個step都要執行action,每個action都是多帶帶的腳本
uses:官方倉庫:github.com/actions
env: 環境變量配置:
自定義環境變量
name: Greeting on variable day on: workflow_dispatch env: # 注意使用的作用域范圍 DAY_OF_WEEK: Monday jobs: greeting_job: runs-on: ubuntu-latest env: Greeting: Hello steps: - name: "Say Hello Mona it's Monday" run: echo "$Greeting $First_Name. Today is $DAY_OF_WEEK!" env: First_Name: Mona 復制代碼
上面的$${{ secrets.ACCESS_TOKEN }}
變量配置在:
系統環境變量:具體可以查看文檔
環境變量 | 說明 |
---|---|
CI | 始終設置為 true |
GITHUB_ACTION | 當前運行的操作的名稱,或步驟的 id 。 例如,對于操作 __repo-owner_name-of-action-repo 。 |
GITHUB_JOB | 當前作業的 job_id |
下面我們來實際操作一下,首先要新建一個項目,這里我們使用Create-React-App創建一個應用,推送Github倉庫
在package.json
中增加一行配置
{ "homepage": "https://[your github name].github.io/[your project name]" } 復制代碼
在項目下新建.github/workflows/main.yml
文件,可以復制上面的文件,并添加下面Deploy的Job配置
name: CI env: CI: false on: push: branches: [ main ] permissions: contents: write # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" Check: runs-on: ubuntu-latest steps: - name: checkout uses: actions/checkout@v2 - name: ESLintCode uses: actions/setup-node@v2 - run: yarn - run: npm install -g eslint && eslint ./src/*/**.js - name: StyleLintCode uses: actions/setup-node@v2 - run: npm install -g stylelint stylelint-less - run: mkdir .tmp-css-check && touch .tmp-css-check/.stylelintrc.json && echo '{"plugins":["stylelint-less"],"rules":{}}' >> .tmp-css-check/.stylelintrc.json && stylelint "src/**/*.less" --config .tmp-css-check/.stylelintrc.json --aei Deploy: needs: Check # The type of runner that the job will run on runs-on: ubuntu-latest # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - name: checkout uses: actions/checkout@v2 # Runs a single command using the runners shell - name: build uses: actions/setup-node@v2 env: ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }} BRANCH: main - run: yarn - run: yarn build:prod - name: deploy uses: JamesIves/github-pages-deploy-action@v4.3.3 with: branch: gh-pages folder: build 復制代碼
在Github中配置訪問Page
以上配置文件依次處理包括:
當推送代碼到Github倉庫的main分支,就會觸發Action,然后就會執行配置中的腳本
開始執行Check任務,依次進行代碼檢出、ESLint檢測、StyleLint檢測
執行完畢后執行Deploy任務,依次執行檢出代碼、打包代碼、部署分支
然后就可以訪問我們部署的靜態站點了,地址:richlpf.github.io/antd-templa…
作者:前端中后臺
鏈接:https://juejin.cn/post/7145335762890784799
來源:稀土掘金
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/127967.html
實踐性嘗試,這里只在一臺虛擬機下操作。 1.vmware 下centos 安裝 設置centos 橋接模式 參考:https://www.cnblogs.com/loven... 2.centos 軟件安裝 1) docker 安裝 yum install -y docker 2)JDK 安裝 參考:https://blog.csdn.net/evan_chen_1/article/de...
摘要:擴展性好當集群的資源嚴重不足而導致排隊等待時,可以很容易的添加一個到集群中,從而實現擴展。用法,選擇盡可能使用這個節點鏡像,填寫,這個容器鏡像是我們的運行環境。更新文件,這里我們只是將中的鏡像更換成最新構建出的鏡像。基于Jenkins的CI/CD實踐[TOC]一、概要提到K8S環境下的CI/CD,可以使用的工具有很多,比如Jenkins、Gitlab CI、新興的drone等,考慮到大多公司...
摘要:新近發布,中國區團隊特為中國用戶準備了千元大獎,邀您參與用戶體驗計劃找,提團隊珍視用戶的每一個意見與反饋。新版本發布后還將經歷版本完善與優化的階段。 showImg(https://segmentfault.com/img/remote/1460000016731917?w=1600&h=900); GitLab支持、CICD優化、項目配額管理、驅散容器功能等等,Rancher 2.1...
摘要:本節主要介紹利用部署應用到中。利用部署一個應用,需要原生資源文件如或等。最后一般都會引用通知插件,將構建結果通知部署人員。說到部署策略,不得不說,實現的功能很多,但是足夠的復雜,目前來看,國內只有小紅書用起來了。 前言 本小節應該是這個系列剩下的兩個小節之一了。剩下一個是之前承諾好的drone-wechart插件。本節主要介紹利用helm部署應用到kubernetes中。至于helm,...
閱讀 289·2024-11-07 18:25
閱讀 130366·2024-02-01 10:43
閱讀 868·2024-01-31 14:58
閱讀 828·2024-01-31 14:54
閱讀 82766·2024-01-29 17:11
閱讀 3048·2024-01-25 14:55
閱讀 1985·2023-06-02 13:36
閱讀 3033·2023-05-23 10:26