您好,登錄后才能下訂單哦!
這篇文章主要介紹“如何快速掌握Github Actions”,在日常操作中,相信很多人在如何快速掌握Github Actions問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”如何快速掌握Github Actions”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
快速開始
在 github 上進入個人倉庫,找到 Actions 的標簽頁
Actions
如果你是一個前端項目,可以使用 Node.js 的模板,點擊 Set up this workflow
Actions Setup
此時生成了一個文件 .github/workflows/nodejs.yaml,修改內容如下
name: Git Action Test on: [push] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - name: Use Node.js 10.x uses: actions/setup-node@v1 with: node-version: 10.x - name: npm install, build run: | npm install npm run build --if-present env: 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
on: push
更多事件可以參考官方文檔 Events that trigger workflows[2]
另外,我們可以利用 issues 事件做很多事情,如郵件通知之類
如果是 Issue 類博客,則可以通過監聽 issues.opened 事件,調用 github api,自動生成網址博客
on: issues: types: [opened, edited, milestoned]
jobs
一個 CI/CD 的工作流有許多 jobs 組成,比如最典型的 job 是 lint,test,build 或者 deploy。
jobs: test: build: deploy:
所有的 job 都是并行的,但往往會有依賴關系:「你總得通過測試了,才能再去部署吧」
jobs.<job_id>.needs
needs 確定 job 的依賴關系
jobs: test: deploy: 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 了
runs-on: ubuntu-latest runs-on: windows-latest
jobs.<job_id>.steps
即某個任務的一系列動作,如部署一個前端需要安裝依賴,編譯代碼等等
jobs.<job_id>.steps.name
為 step 指定一個名稱,將會在 github action 的控制臺中顯示
jobs.<job_id>.steps.run
該 step 需要在 shell 中執行的命令
# 單行 - name: Install Dependencies run: npm install # 多行 - name: Install and Build run: | npm install npm run build
jobs.<job_id>.steps.uses
選擇一個 action,可以理解為若干 steps.run,有利于代碼復用。這也是 github action 最主要的功能。
如果你想找一個好用的 github action,可以在 github marketplace 瀏覽并檢索
這是一個在當前操作系統中安裝 node:10 的 action 示例
- name: use Node.js 10.x uses: actions/setup-node@v1 with: node-version: 10.x
當然,這里怎么能少得了 docker 的身影呢,在 actions 中也可以使用 docker。如果對 docker 不太了解,可以看我的文章: docker 簡易入門[3]
以下是 npm install 的一個示例
jobs: build: steps: - name: Install uses: docker://node:alpine with: args: npm install
secret and context
如何在 github action 上訪問敏感數據?如使用 ssh 登錄時如何維護密碼。
我們可以在 github repo 上依次點擊 Settings -> Secrets 設置 secret
Actions Secrect
- name: setup aliyun oss uses: manyuanrong/setup-ossutil@master with: endpoint: oss-cn-beijing.aliyuncs.com access-key-id: ${{ secrets.OSS_KEY_ID }} 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]」
name: deploy to aliyun oss on: [push] jobs: build: runs-on: ubuntu-latest steps: # 切代碼到 runner - uses: actions/checkout@v1 with: submodules: true # 下載 git submodule - uses: srt32/git-actions@v0.0.3 with: args: git submodule update --init --recursive # 使用 node:10 - name: use Node.js 10.x uses: actions/setup-node@v1 with: node-version: 10.x # npm install - name: npm install and build run: | npm install npm run build env: CI: true # 設置阿里云OSS的 id/secret,存儲到 github 的 secrets 中 - name: setup aliyun oss uses: manyuanrong/setup-ossutil@master with: endpoint: oss-cn-beijing.aliyuncs.com access-key-id: ${{ secrets.OSS_KEY_ID }} access-key-secret: ${{ secrets.OSS_KEY_SECRET }} - name: cp files to aliyun run: ossutil cp -rf .vuepress/dist oss://shanyue-blog/
部署成功
部署成功
實踐二:Github Readme 自動生成
2020 年 8 月份,就是我裸辭的那個月,Github 上線了個人主頁功能,即創建 Github 用戶名的同名 Repo,其中的 Readme.md 就是自己的個人主頁。例如我,創建一個 shfshanyue/shfshanyue 的倉庫,既可以通過 Readme.md 來創建個人主頁
此時涌現了各種各樣的 Github Actions 來自定義個人主頁,大致思路如下:
鴻蒙官方戰略合作共建——HarmonyOS技術社區
Github API 獲取自身 Github 動態,寫入指定格式的 Readme
Github Actions 自動提交代碼
優秀 Github 個人主頁的 Actions[7]
其中一個 waka-readme-stats[8],可制作以下漂亮的個人主頁
? I'm Most Productive on Sundays Monday 50 commits ███?????????????????????? 13.19% Tuesday 85 commits █████???????????????????? 22.43% Wednesday 56 commits ███?????????????????????? 14.78% Thursday 44 commits ███?????????????????????? 11.61% Friday 28 commits █???????????????????????? 7.39% Saturday 30 commits ██??????????????????????? 7.92% Sunday 86 commits █████???????????????????? 22.69%
實踐三:定時任務的腳本服務器
「這簡直是在薅羊毛啊!」
先獻上一個使用了 Github Actions 的工具:B 站自動簽到工具[9]。
?
通過 GitHub Actions 實現每日線上自動運行任務:每日自動登錄、觀看、分享、投幣視頻,獲取每日任務的滿額經驗,輕松升級 Level 6,實現自動領取大會員權益、月底自動為自己充電等功能。
到此,關于“如何快速掌握Github Actions”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。