成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Github Actions 入門指南及實踐

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

[[355704]]

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

github 會提供一個以下配置的服務器做為 runner,可以說相當良心了。

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

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

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

快速開始

在 github 上進入個人倉庫,找到 Actions 的標簽頁

Actions

 

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

Actions Setup

 

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

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

執行 git push 操作,此時可以在 github 的 Actions 標簽頁看到執行結果

Actions Start

 

術語

runner: github 分配的用來執行 CI/CD 的構建服務器 (也可以自建 runner)

workflow: CI/CD 的工作流

job: 任務,比如構建,測試和部署。每個 workflow 由多個 job 組成

step: 每個 job 由多個 step 組成

配置

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

以下是常用到的配置

on

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

  1. on: push 

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

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

如果是 Issue 類博客,則可以通過監聽 issues.opened 事件,調用 github api,自動生成網址博客

  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 都是并行的,但往往會有依賴關系:「你總得通過測試了,才能再去部署吧」

jobs.<job_id>.needs

needs 確定 job 的依賴關系

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

jobs.<job_id>.runs-on

當你使用 github actions 時,github 會十分大方的給你分配一個配置還不錯的服務器作為構建服務器,用來跑你的 workflow

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

恩,比我自己的服務器要強

使用 runs-on 指定服務器系統,用的最多的應該就是 ubuntu-latest 了

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

jobs.<job_id>.steps

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

jobs.<job_id>.steps.name

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

jobs.<job_id>.steps.run

該 step 需要在 shell 中執行的命令

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

jobs.<job_id>.steps.uses

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

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

這是一個在當前操作系統中安裝 node:10 的 action 示例

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

當然,這里怎么能少得了 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 上訪問敏感數據?如使用 ssh 登錄時如何維護密碼。

我們可以在 github repo 上依次點擊 Settings -> Secrets 設置 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 可以獲取當前的 commit SHA,我們可以利用它為 sentry 或者 docker image 打入版本號
  • env: 環境變量
  • job: 當前執行 job 的信息,如 job.status 表示當前 job 的執行狀態
  • matrix: 描述一些構建信息,如 node 以及 os 版本號

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

實踐一:博客自動部署

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

「關于托管在阿里云 OSS 的細節,可以參考 在阿里云 OSS 托管你的前端應用[6]」

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

部署成功

部署成功

 

實踐二:Github Readme 自動生成

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

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

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

優秀 Github 個人主頁的 Actions[7]

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

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

實踐三:定時任務的腳本服務器

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

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

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

❞關于其它有趣的可薅羊毛的定時任務,就需要充分發揮你的想象力了!

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托管你的前端應用:

./deploy-fe-with-alioss.md[7]優秀 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

本文轉載自微信公眾號「 全棧成長之路」,可以通過以下二維碼關注。轉載本文請聯系 全棧成長之路公眾號。

 

責任編輯:武曉燕 來源: 全棧成長之路
相關推薦

2022-12-21 08:20:01

2021-05-13 21:21:50

React應用GitHub

2021-03-26 08:41:11

Go語言Docker

2024-12-02 07:00:00

特性標記軟件開發Action

2021-01-18 18:30:49

服務器開發工具

2021-10-03 14:47:26

Fedora CoreGitHub Acti運行器

2021-01-19 05:26:22

Github ActiJenkinsDevOps

2024-02-20 08:08:43

2019-07-17 15:29:46

GitHub數據科學學習

2024-07-03 10:09:29

2019-11-26 08:00:00

GitHubGitHub ActiAzure

2024-01-24 18:50:21

WebFTP服務器

2021-04-20 09:36:49

黑客網絡安全網絡攻擊

2022-05-27 08:55:15

工具自動化軟件

2022-11-15 17:07:40

開發自動化前端

2022-11-24 09:01:26

HTTPHertz架構

2021-01-15 08:52:09

GitHub GitHubActio博文發布

2021-01-31 21:36:24

GitHub

2020-06-18 12:00:06

GitHub程序員Google

2020-06-04 15:55:54

GitHub代碼開發者
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久免费视频在线 | 亚洲欧美日韩网站 | 中文字幕精品一区二区三区精品 | 午夜精品| 免费黄色网址视频 | 日本三级黄视频 | www.日本精品 | 免费精品 | 中文字幕在线视频免费观看 | 久久国产欧美一区二区三区精品 | 一区二区不卡视频 | av影音| 精品国产免费人成在线观看 | 搞av.com| 国产精品一区二区三区久久久 | 国产视频在线观看一区二区三区 | 亚洲精品久久久久久一区二区 | 久久逼逼 | 欧洲精品码一区二区三区免费看 | 久久久999精品 | 国产成人精品午夜 | 久久日韩精品一区二区三区 | 欧美激情视频网站 | 欧美不卡视频 | 久久综合99| 天天综合久久 | 91麻豆精品国产91久久久更新资源速度超快 | 欧美在线国产精品 | 亚洲国产精品99久久久久久久久 | 欧美一区二区三区四区视频 | 亚洲一区久久久 | 国产片网站| 欧美精品91爱爱 | 欧洲一区二区视频 | 成人欧美一区二区三区在线播放 | 久草成人网 | 午夜免费精品视频 | 91麻豆精品国产91久久久更新资源速度超快 | 性生活毛片 | 日韩成人av在线 | 国产激情在线观看 |