日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
GithubActions入門指南及實踐

自從 github 提供了 github actions 后,個人或者依賴于 github 的公司可以考慮把持續(xù)集成方案遷到 github actions。

建網(wǎng)站原本是網(wǎng)站策劃師、網(wǎng)絡(luò)程序員、網(wǎng)頁設(shè)計師等,應(yīng)用各種網(wǎng)絡(luò)程序開發(fā)技術(shù)和網(wǎng)頁設(shè)計技術(shù)配合操作的協(xié)同工作。成都創(chuàng)新互聯(lián)公司專業(yè)提供成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計,網(wǎng)頁設(shè)計,網(wǎng)站制作(企業(yè)站、響應(yīng)式網(wǎng)站建設(shè)、電商門戶網(wǎng)站)等服務(wù),從網(wǎng)站深度策劃、搜索引擎友好度優(yōu)化到用戶體驗的提升,我們力求做到極致!

github 會提供一個以下配置的服務(wù)器做為 runner,可以說相當(dāng)良心了。

  • 2-core CPU
  • 7 GB of RAM memory
  • 14 GB of SSD disk space

另外如果你有網(wǎng)絡(luò)時延的需求,(比如推送及拉取鏡像時產(chǎn)生的網(wǎng)絡(luò)時延),你也可以自建 runner。

本文將介紹 github actions 的用法,以及如何使用它自動部署個人博客或者前端應(yīng)用

快速開始

在 github 上進(jìn)入個人倉庫,找到 Actions 的標(biāo)簽頁

Actions

如果你是一個前端項目,可以使用 Node.js 的模板,點擊 Set up this workflow

Actions Setup

此時生成了一個文件 .github/workflows/nodejs.yaml,修改內(nèi)容如下

 
 
 
 
  1. name: Git Action Test
  2. on: [push]
  3. jobs:
  4.   build:
  5.     runs-on: ubuntu-latest
  6.     steps:
  7.     - uses: actions/checkout@v1
  8.     - name: Use Node.js 10.x
  9.       uses: actions/setup-node@v1
  10.       with:
  11.         node-version: 10.x
  12.     - name: npm install, build
  13.       run: |
  14.         npm install
  15.         npm run build --if-present
  16.       env:
  17.         CI: true

執(zhí)行 git push 操作,此時可以在 github 的 Actions 標(biāo)簽頁看到執(zhí)行結(jié)果

Actions Start

術(shù)語

runner: github 分配的用來執(zhí)行 CI/CD 的構(gòu)建服務(wù)器 (也可以自建 runner)

workflow: CI/CD 的工作流

job: 任務(wù),比如構(gòu)建,測試和部署。每個 workflow 由多個 job 組成

step: 每個 job 由多個 step 組成

配置

參考官方文檔: Workflow syntax for GitHub Actions[1]

以下是常用到的配置

on

該 CI/CD 觸發(fā)時的事件。如果需要上傳代碼自動部署的功能時,應(yīng)該選擇 on: push

 
 
 
 
  1. on: push

更多事件可以參考官方文檔 Events that trigger workflows[2]

另外,我們可以利用 issues 事件做很多事情,如郵件通知之類

如果是 Issue 類博客,則可以通過監(jiān)聽 issues.opened 事件,調(diào)用 github api,自動生成網(wǎng)址博客

 
 
 
 
  1. on:
  2.   issues:
  3.     types: [opened, edited, milestoned]

jobs

一個 CI/CD 的工作流有許多 jobs 組成,比如最典型的 job 是 lint,test,build 或者 deploy。

 
 
 
 
  1. jobs:
  2.   test:
  3.   build:
  4.   deploy:

所有的 job 都是并行的,但往往會有依賴關(guān)系:「你總得通過測試了,才能再去部署吧」

jobs..needs

needs 確定 job 的依賴關(guān)系

 
 
 
 
  1. jobs:
  2.   test:
  3.   deploy:
  4.     needs: test

jobs..runs-on

當(dāng)你使用 github actions 時,github 會十分大方的給你分配一個配置還不錯的服務(wù)器作為構(gòu)建服務(wù)器,用來跑你的 workflow

  • 2-core CPU
  • 7 GB of RAM memory
  • 14 GB of SSD disk space

恩,比我自己的服務(wù)器要強

使用 runs-on 指定服務(wù)器系統(tǒng),用的最多的應(yīng)該就是 ubuntu-latest 了

 
 
 
 
  1. runs-on: ubuntu-latest
  2. runs-on: windows-latest

jobs..steps

即某個任務(wù)的一系列動作,如部署一個前端需要安裝依賴,編譯代碼等等

jobs..steps.name

為 step 指定一個名稱,將會在 github action 的控制臺中顯示

jobs..steps.run

該 step 需要在 shell 中執(zhí)行的命令

 
 
 
 
  1. # 單行
  2. - name: Install Dependencies
  3.   run: npm install
  4. # 多行
  5. - name: Install and Build
  6.   run: |
  7.     npm install
  8.     npm run build

jobs..steps.uses

選擇一個 action,可以理解為若干 steps.run,有利于代碼復(fù)用。這也是 github action 最主要的功能。

如果你想找一個好用的 github action,可以在 github marketplace 瀏覽并檢索

這是一個在當(dāng)前操作系統(tǒng)中安裝 node:10 的 action 示例

 
 
 
 
  1. - name: use Node.js 10.x
  2.   uses: actions/setup-node@v1
  3.   with:
  4.     node-version: 10.x

當(dāng)然,這里怎么能少得了 docker 的身影呢,在 actions 中也可以使用 docker。如果對 docker 不太了解,可以看我的文章: docker 簡易入門[3]

以下是 npm install 的一個示例

 
 
 
 
  1. jobs:
  2.   build:
  3.     steps:
  4.       - name: Install
  5.         uses: docker://node:alpine
  6.         with:
  7.           args: npm install

secret and context

如何在 github action 上訪問敏感數(shù)據(jù)?如使用 ssh 登錄時如何維護(hù)密碼。

我們可以在 github repo 上依次點擊 Settings -> Secrets 設(shè)置 secret

Actions Secrect

 
 
 
 
  1. - name: setup aliyun oss
  2.   uses: manyuanrong/setup-ossutil@master
  3.   with:
  4.     endpoint: oss-cn-beijing.aliyuncs.com
  5.     access-key-id: ${{ secrets.OSS_KEY_ID }}
  6.     access-key-secret: ${{ secrets.OSS_KEY_SECRET }}

這里的 secret 就是一種 context,描述 CI/CD 一個 workflow 中的上下文信息,使用 ${{ expression }} 語法表示。除了 secret,還有

  • github: workflow 的信息,如 github.sha 可以獲取當(dāng)前的 commit SHA,我們可以利用它為 sentry 或者 docker image 打入版本號
  • env: 環(huán)境變量
  • job: 當(dāng)前執(zhí)行 job 的信息,如 job.status 表示當(dāng)前 job 的執(zhí)行狀態(tài)
  • matrix: 描述一些構(gòu)建信息,如 node 以及 os 版本號

更多 context 信息可以參考官方文檔 Contexts and expression syntax for GitHub Actions[4]

實踐一:博客自動部署

我的博客目前托管在阿里云 OSS 上,以下 action.yaml 描述了自動部署的流程。可以參考我的配置 shfshanyue/blog[5]

「關(guān)于托管在阿里云 OSS 的細(xì)節(jié),可以參考 在阿里云 OSS 托管你的前端應(yīng)用[6]」

 
 
 
 
  1. name: deploy to aliyun oss
  2. on: [push]
  3. jobs:
  4.   build:
  5.     runs-on: ubuntu-latest
  6.     steps:
  7.     # 切代碼到 runner
  8.     - uses: actions/checkout@v1
  9.       with:
  10.         submodules: true
  11.     # 下載 git submodule
  12.     - uses: srt32/git-actions@v0.0.3
  13.       with:
  14.         args: git submodule update --init --recursive
  15.     # 使用 node:10
  16.     - name: use Node.js 10.x
  17.       uses: actions/setup-node@v1
  18.       with:
  19.         node-version: 10.x
  20.     # npm install
  21.     - name: npm install and build
  22.       run: |
  23.         npm install
  24.         npm run build
  25.       env:
  26.         CI: true
  27.     # 設(shè)置阿里云OSS的 id/secret,存儲到 github 的 secrets 中
  28.     - name: setup aliyun oss
  29.       uses: manyuanrong/setup-ossutil@master
  30.       with:
  31.         endpoint: oss-cn-beijing.aliyuncs.com
  32.         access-key-id: ${{ secrets.OSS_KEY_ID }}
  33.         access-key-secret: ${{ secrets.OSS_KEY_SECRET }}
  34.     - name: cp files to aliyun
  35.       run: ossutil cp -rf .vuepress/dist oss://shanyue-blog/

部署成功

部署成功

實踐二:Github Readme 自動生成

2020 年 8 月份,就是我裸辭的那個月,Github 上線了個人主頁功能,即創(chuàng)建 Github 用戶名的同名 Repo,其中的 Readme.md 就是自己的個人主頁。例如我,創(chuàng)建一個 shfshanyue/shfshanyue 的倉庫,既可以通過 Readme.md 來創(chuàng)建個人主頁

此時涌現(xiàn)了各種各樣的 Github Actions 來自定義個人主頁,大致思路如下:

  1. Github API 獲取自身 Github 動態(tài),寫入指定格式的 Readme
  2. Github Actions 自動提交代碼

優(yōu)秀 Github 個人主頁的 Actions[7]

其中一個 waka-readme-stats[8],可制作以下漂亮的個人主頁

 
 
 
 
  1.  I'm Most Productive on Sundays
  2. Monday       50 commits     ███??????????????????????   13.19%
  3. Tuesday      85 commits     █████????????????????????   22.43%
  4. Wednesday    56 commits     ███??????????????????????   14.78%
  5. Thursday     44 commits     ███??????????????????????   11.61%
  6. Friday       28 commits     █????????????????????????   7.39%
  7. Saturday     30 commits     ██???????????????????????   7.92%
  8. Sunday       86 commits     █████????????????????????   22.69%

實踐三:定時任務(wù)的腳本服務(wù)器

「這簡直是在薅羊毛啊!」

先獻(xiàn)上一個使用了 Github Actions 的工具:B 站自動簽到工具[9]。

通過 GitHub Actions 實現(xiàn)每日線上自動運行任務(wù):每日自動登錄、觀看、分享、投幣視頻,獲取每日任務(wù)的滿額經(jīng)驗,輕松升級 Level 6,實現(xiàn)自動領(lǐng)取大會員權(quán)益、月底自動為自己充電等功能。

關(guān)于其它有趣的可薅羊毛的定時任務(wù),就需要充分發(fā)揮你的想象力了!

Reference

[1]Workflow syntax for GitHub Actions:

https://help.github.com/en/actions/automating-your-workflow-with-github-actions/workflow-syntax-for-github-actions[2]Events that trigger workflows:

https://help.github.com/en/actions/automating-your-workflow-with-github-actions/events-that-trigger-workflows#about-workflow-events[3]docker 簡易入門:

https://github.com/shfshanyue/op-note/blob/master/docker.md[4]Contexts and expression syntax for GitHub Actions:

https://help.github.com/en/actions/automating-your-workflow-with-github-actions/contexts-and-expression-syntax-for-github-actions#job-context[5]shfshanyue/blog:

https://github.com/shfshanyue/blog/blob/master/.github/workflows/nodejs.yml[6]在阿里云OSS托管你的前端應(yīng)用:

./deploy-fe-with-alioss.md[7]優(yōu)秀 Github 個人主頁的 Actions:

https://github.com/abhisheknaiidu/awesome-github-profile-readme#github-actions-[8]waka-readme-stats:

https://github.com/anmol098/waka-readme-stats[9]B站自動簽到工具:

https://github.com/RayWangQvQ/BiliBiliTool

本文轉(zhuǎn)載自微信公眾號「 全棧成長之路」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系 全棧成長之路公眾號。


名稱欄目:GithubActions入門指南及實踐
當(dāng)前路徑:http://m.5511xx.com/article/dpchcgs.html