<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          持續(xù)集成利器,GitHub Actions

          共 2611字,需瀏覽 6分鐘

           ·

          2020-07-03 23:29

          簡(jiǎn)介

          GitHub Actions 是 GitHub 推出的持續(xù)集成服務(wù),于 2018 年 10 月推出,目前已經(jīng)可以投入到正式環(huán)境中使用。

          什么是持續(xù)集成呢?

          回憶一下代碼從開發(fā)到上線的過(guò)程,通常要經(jīng)過(guò)

          代碼開發(fā) -> 代碼提交 -> 服務(wù)器編譯、測(cè)試、打包 -> 服務(wù)器部署(大規(guī)模部署用 docker)

          整個(gè)過(guò)程中,除了代碼開發(fā)和代碼提交這兩個(gè)步驟是依賴于開發(fā)人員的。

          后面的服務(wù)器編譯、測(cè)試、打包和部署都是重復(fù)性工作,完全可以用程序替代,沒(méi)有必要用人工去手動(dòng)操作,而且如果要部署 100 臺(tái)服務(wù)器,全部靠手工的話,運(yùn)維人員一定會(huì)累吐血

          47bb4d2841cb1adf9b6b6c56d195b5f4.webp

          于是為了解決上述問(wèn)題,機(jī)智的程序員們發(fā)明了持續(xù)集成!

          持續(xù)集成的做什么的?

          持續(xù)集成的目標(biāo):代碼提交之后的所有服務(wù)器編譯、測(cè)試、打包和部署所有流程都自動(dòng)執(zhí)行。

          0794af502003dfb6541b1fca220eaf20.webp

          之前通常的方案如下圖所示,其中虛線框中的就是持續(xù)集成部分

          a5b7d654ca224838e065e32344dcf91b.webp

          可以看出來(lái)整個(gè)流程還是十分流暢的,但是其中 jenkins 是需要開發(fā)人員手工搭建的,并且要占用服務(wù)器的一定資源,有一些麻煩

          那有沒(méi)有更好的方案呢?那就是今天要講的 GitHub Actions!

          GitHub Actions

          如何查找 actions

          GitHub Actions 可以理解為提交代碼到 GitHub 后 GitHub 直接提供服務(wù)器幫助你做編譯、測(cè)試、打包的工作,不需要再去手工搭建任何持續(xù)集成的工具,也不需要占用自己的服務(wù)器資源做這些事情

          之后每一個(gè)操作就可以理解為是一個(gè) action,很多個(gè)操作疊加起來(lái)就是 actions

          官方提供了 actions 市場(chǎng),可以根據(jù)自己的需求選擇,https://github.com/marketplace?type=actions

          7926237333f33c7324fe71e166c3338d.webp

          如何編寫 actions

          GitHub Actions 配置文件放在倉(cāng)庫(kù)的 .github/workflows 目錄下面,以 yaml 文件的形式存在,文件名根據(jù)自己的需求命名,比如main.yml或者develop.yml

          其中文件的配置項(xiàng)可參考 https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions 官方文檔來(lái)進(jìn)行編寫,下面介紹一些常見(jiàn)的選項(xiàng)

          • name:name 表示當(dāng)前 action 的名稱,根據(jù)自己的需求進(jìn)行命名
          • on:on 表示觸發(fā)條件,比如當(dāng)代碼 push 到 master 分支的時(shí)候觸發(fā),則
          on:
          ??push:
          ????branches:
          ??????-?master
          • jobs:jobs 表示實(shí)際需要執(zhí)行的工作,比如下方代碼,表示使用 ubuntu 執(zhí)行構(gòu)建工作,執(zhí)行步驟上使用了 appleboy/ssh-action 這個(gè)倉(cāng)庫(kù)的能力
          jobs:
          ??build:
          ????name:?Build
          ????runs-on:?ubuntu-latest
          ????steps:
          ??????-?name:?executing?remote?ssh?commands?using?password
          ????????uses:?appleboy/ssh-action@master

          實(shí)例:登錄服務(wù)器打包

          現(xiàn)在有一個(gè)已經(jīng)開發(fā)完成的 React 前端應(yīng)用,希望每次push代碼到master分支后,能夠自動(dòng)登錄自己的服務(wù)器,拉取最新的代碼并進(jìn)行打包上線,應(yīng)該怎么處理?

          首先這里面涉及到ssh登錄的問(wèn)題,所以查找到了一個(gè)倉(cāng)庫(kù)https://github.com/appleboy/ssh-action,能夠自動(dòng)模擬ssh登錄,按照文檔建立.github/workflows/main.yml文件

          name:?remote?ssh?command
          on:
          ??push:
          ????branches:
          ??????-?master
          jobs:
          ??build:
          ????name:?Build
          ????runs-on:?ubuntu-latest
          ????steps:
          ??????-?name:?executing?remote?ssh?commands?using?password
          ????????uses:?appleboy/ssh-action@master
          ????????with:
          ??????????host:?${{?secrets.HOST?}}
          ??????????username:?${{?secrets.USERNAME?}}
          ??????????password:?${{?secrets.PASSWORD?}}
          ??????????command_timeout:?5m
          ??????????script:?|
          ????????????cd?~/test
          ????????????git?pull?origin?master
          ????????????yarn
          ????????????yarn?build

          配置文件中前面的內(nèi)容很容易理解,從 with 開始的部分,涉及到登錄個(gè)人服務(wù)器信息,需要使用賬號(hào)和密碼,那么如果將賬號(hào)密碼明文放在GitHub中,一定會(huì)非常不安全,GitHub也不會(huì)允許這樣的事情出現(xiàn),于是就有secrets配置

          選擇 settings->secrets,然后添加文件中的 secrets,這里的值不會(huì)被泄露出去

          b94d7d4f858d90fbb05f8eb952629c99.webp

          其中 HOST值為 IP地址,USERNAME 為用戶名,PASSWORD為登錄密碼

          比如[email protected]
          HOST?=?10.20.0.1
          USERNAME?=?root
          PASSWORD?=?******(服務(wù)器登錄密碼)

          根據(jù)配置文件,在登錄完成后會(huì)連續(xù)執(zhí)行script中的指令

          script:?|
          ??cd?~/test
          ??git?pull?origin?master
          ??yarn?build

          這里的含義就是訪問(wèn)代碼目錄,拉取最新代碼,然后進(jìn)行打包(其中代碼目錄、Git、Node.js、yarn等環(huán)境要提前準(zhǔn)備好),這樣就可以僅僅通過(guò)一個(gè)yaml配置文件,結(jié)合GitHub Actions 達(dá)到目標(biāo)

          小結(jié)

          GitHub Actions將應(yīng)用版本管理和持續(xù)集成非常好的結(jié)合了起來(lái),形成了開發(fā)部署利器。

          除了上述的例子之外,還有很多功能值得探索,建議大家多多嘗試,給自己的代碼插上持續(xù)集成的翅膀!

          20828a2e84662736ec67b9d31818d5df.webp- END -

          來(lái)個(gè)直擊靈魂的四連,轉(zhuǎn)發(fā)、點(diǎn)贊、在看、留言

          瀏覽 49
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本免费看黄色片视频 | 日本高清视频一区二区三区 | 国产成人毛片在线 | 偷拍久久久久久 | 午夜黄色电影 |