精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

聊聊實現自動化構建與部署

開發 前端
在GitHub的項目倉庫中有一個Actions模塊,它是一個持續集成(CI)和持續部署(CD)平臺,開發者可以利用它提供的配置規則,通過編寫yaml文件[1]來自定義工作流程,實現代碼的構建、測試、打包、發布等。

前言

這幾天玩了下GitHub的自動化構建與部署,實現了給分支打上tag執行構建命令,構建完成之后將其上傳到releases并生成更新日志。

本文就跟大家分享下我是如何實現這套CI的,歡迎各位感興趣的開發者閱讀本文。

實現思路

在GitHub的項目倉庫中有一個Actions模塊,它是一個持續集成(CI)和持續部署(CD)平臺,開發者可以利用它提供的配置規則,通過編寫yaml文件[1]來自定義工作流程,實現代碼的構建、測試、打包、發布等。

圖片

工作原理

GitHub Actions的核心是工作流程(Workflow)。它是由一個或多個步驟(step)組成的一系列自動化任務,可以使用三大平臺(MacOS/Windows/Linux)的操作系統,運用各種編程語言和工具實現項目的構建。工作流程可以根據事件觸發,例如在代碼提交、拉取請求、新增tag時觸發,也可以手動觸發。

一些常見的使用場景:

  • 自動化測試:在提交代碼或者拉取請求時自動運行測試,以確保代碼質量和穩定性
  • 自動化部署:在代碼合并到主分支后,自動部署應用程序到生產環境
  • 自動化構建:自動化構建和打包應用程序,以便進行部署或發布
  • 自動化通知:根據事件觸發發送通知和提醒
  • 自動化文生成:在代碼合并后自動生成和發布文檔

GitHub Actions的官方文檔中有豐富的例子和使用教程,感興趣的開發者請移步:

  • GitHub Actions 快速入門[2]

使用方法

閱讀官方文檔后,我們知道了應該如何編寫一個工作流配置,如下所示:

  • 在項目的根目錄創建.github文件夾
  • 在.github文件夾內創建workflows文件夾
  • 在workflows文件夾內創建build-release.yml文件

這個后綴為.yml的文件就是我們實現想法的地方,根據文檔中所羅列的可供我們使用的方法,結合自己的需求完成配置的編寫,GitHub Action就會按照我們的命令去做事情(命令式編程)。

實現過程

本文就以我的截圖插件[3]為例,跟大家分享下我是如何用這套CI/CD工具來簡化我的工作流提升效率的。

創建token

在工作流中,我們需要對項目做操作就得擁有完整的倉庫操作權限,它的原理是通過讀取存儲在secrets?環境變量中的字段來完成鑒權的。我們在配置文件中通過GITHUB_TOKEN字段來指定即可完成這一操作。

首先,我們登錄GitHub,進入settings-tokens[4]面板。

  • 點擊頁面右上角的Generate new token
  • 在彈出的菜單中選擇Generate new token (classic)

圖片

在打開的新面板中,填寫相關信息:

  • Note,你的token名
  • Expiration,過期時間,我這里選擇的是No expiration永不過期
  • Select scopes,選擇你這個token可以使用哪些功能,按需選擇即可,當然為了省事你也可以全選。

圖片

創建完成后,你會看到成功的提示并附帶著token,將這個token復制下來。

圖片

打開項目的settings模塊,進入settings/secrets/actions[5]面板。

  • 點擊右上角的New repository secret
  • 填寫Name,你在yml配置文件里通過secrets變量訪問時的屬性名。
  • 填寫Secret,在上一步拿到的token。

圖片

image-20230404071035745

實現自動構建與部署

通常情況下,我的截圖插件[6]開發完成之后,發布到GitHub的Releases的流程為:

  • 構建項目

執行項目的構建命令

將生成的dist文件夾打成zip包

  • 在GitHub上創建Release
  • 設置tag

  • 填寫release名

  • 將zip包上傳到剛才創建好的Release中

  • 填寫更新日志

那么,我們只需要將上述流程轉換為GitHub Actions的workflows即可,步驟如下:

  • 打開我們在使用方法章節創建好的build-release.yml文件
  • 填寫工作流的名字
  • 定義此工作流需要對倉庫中的文件進行寫入的操作權限
  • 定義此工作流的觸發條件
  • 當推送的tag中以v開頭就執行
  • 編寫此工作流需要執行的任務
  • 構建項目、創建release、上傳zip包

  • 生成更新日志

下屬配置中,我們上述工作流拆分成了2個串行任務:

  • 構建與上傳
  • 創建更新日志
name: Build and Release

# 定義本Action需要對倉庫中的文件進行寫操作的權限。
permissions:
contents: write

# 推送的tag中以v開頭則執行此action
on:
push:
tags:
- "v*"

jobs:
build-release:
runs-on: "ubuntu-latest"
steps:
- name: "Checkout code"
uses: actions/checkout@v3

# 設置node版本
- name: "Set up Node.js"
uses: actions/setup-node@v3
with:
node-version: '14.18.0'
# 安裝依賴
- name: "Install dependencies"
run: npm install
# 執行構建命令
- name: "Install dependencies"
run: npm run build-rollup:prod
# 將dist目錄打成zip包
- name: Zip Dist
run: zip -r dist.zip dist
# 創建Release
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUBTOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: ${{ github.ref }}
draft: false
prerelease: false
# 上傳zip包
- name: Upload Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUBTOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./dist.zip
asset_name: js-screen-shot-dist.zip
asset_content_type: application/zip


create-changelog:
runs-on: ubuntu-latest
# 需要等build結束后才執行此處
needs: build-release
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0

- uses: actions/setup-node@v3
with:
node-version: 16.x

# 生成版本更新日志
- run: npx changelogithub
env:
GITHUB_TOKEN: ${{secrets.GITHUBTOKEN}}

配置編寫完成后,提交代碼并推送至遠程倉庫就完成了這個工作流的創建。我們只需要給分支上的提交記錄打上tag,命名時以v開頭,將tag推送至遠程倉庫,這套工作流就會自動執行。

圖片

最后,在項目的actions面板就能看到此工作流的運行日志了。

圖片

項目的Releases中也出現了我們構建好的壓縮包以及更新日志。

圖片

如果你使用的webstorm可以通過安裝GitHub Actions Manager插件來快速查看和管理每個工作流的執行情況。

圖片

實現issue創建模版

GitHub的默認issue在創建時并沒有分的很細,雖然它提供了很多選項給提問者,但是大多數人在提問問題的時候,都不會注意到這些選項。因此,我們希望在提問時可以把issue進行細分,比如:

  • Bug,使用插件的過程中遇到了一些問題
  • Feature,使用插件的過程中希望可以加入某個功能
  • General,其他有關插件的問題(比如插件的xx功能怎么用)

要實現這些,我們需要在項目的.github目錄下創建ISSUE_TEMPLATE文件夾,通過創建.yml文件編寫配置來實現。

  • bug-report.yml[7]
  • feature-request.yml[8]
  • general.yml[9]

將這些文件放入指定目錄推送至GitHub后,我們再去創建issue,就能看到如下所示的界面了。

圖片

有關這一塊的配置GitHub的官方文檔[10]已經講的很清楚了,此處我們就不做過多的介紹了。你可以直接點擊上方的鏈接把相關的yml文件下載下來稍作修改,放到你項目的指定目錄即可。

實現issue的自動回復

通常情況下,我們收到issue后都會簡單的回一下對方,幸運的是這個流程我們也可以通過GitHub Actions來實現。

在workflows文件夾下創建issue-reply.yml文件。

  • 監聽有label的 issue 創建時觸發工作流程
  • 根據不同的label創建對應的comment
name: Issue Reply

on:
issues:
types: [labeled]

jobs:
reply-helper:
runs-on: ubuntu-latest
steps:
- name: feature request
if: github.event.label.name == 'enhancement'
uses: actions-cool/issues-helper@v2.5.0
with:
actions: 'create-comment'
token: ${{ secrets.GITHUBTOKEN }}
issue-number: ${{ github.event.issue.number }}
body: |
Hello @${{ github.event.issue.user.login }}. Your suggestion has been received, and you will be notified in the issue area after the evaluation is completed.
你好 @${{ github.event.issue.user.login }},已收到你的建議,評估完成后將在issue區域通知你。

- name: need reproduction
if: github.event.label.name == 'bug'
uses: actions-cool/issues-helper@v2.5.0
with:
actions: 'create-comment'
token: ${{ secrets.GITHUBTOKEN }}
issue-number: ${{ github.event.issue.number }}
body: |
Hello @${{ github.event.issue.user.login }}. Your feedback has been received, and you will be notified in the issue area when the problem is resolved.
你好 @${{ github.event.issue.user.login }},已收到你反饋的問題,問題解決后將在issue區域通知你。

將上述配置推送至GitHub后,我們創建一個新issue后,就能立即得到對應類型的回復。

圖片

image-20230404170847132

項目地址

本文列舉到的所有工作流配置文件,請移步:

  • .github[11]
  • workflows[12]
  • ISSUE_TEMPLATE[13]

寫在最后

至此,文章就分享完畢了。

我是神奇的程序員,一位前端開發工程師。

如果你對我感興趣,請移步我的個人網站[14],進一步了解。

  • 公眾號無法外鏈,如果文中有鏈接,可點擊下方閱讀原文查看??

參考資料

[1]yaml文件: https://yaml.org/

[2]GitHub Actions 快速入門: https://docs.github.com/zh/actions/quickstart

[3]截圖插件: https://github.com/likaia/js-screen-shot

[4]settings-tokens: https://github.com/settings/tokens

[5]settings/secrets/actions: https://github.com/{用戶名}/{項目名}/settings/secrets/actions

[6]截圖插件: https://github.com/likaia/js-screen-shot

[7]bug-report.yml: https://github.com/likaia/js-screen-shot/blob/master/.github/ISSUE_TEMPLATE/bug-report.yml

[8]feature-request.yml: https://github.com/likaia/js-screen-shot/blob/master/.github/ISSUE_TEMPLATE/feature-request.yml

[9]general.yml: https://github.com/likaia/js-screen-shot/blob/master/.github/ISSUE_TEMPLATE/general.yml

[10]GitHub的官方文檔: https://docs.github.com/zh/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository

[11].github: https://github.com/likaia/js-screen-shot/tree/master/.github

[12]workflows: https://github.com/likaia/js-screen-shot/tree/master/.github/workflows

[13]ISSUE_TEMPLATE: https://github.com/likaia/js-screen-shot/tree/master/.github/ISSUE_TEMPLATE

[14]個人網站: https://www.kaisir.cn/

責任編輯:武曉燕 來源: 神奇的程序員
相關推薦

2012-09-04 10:20:31

IBMdw

2020-11-13 07:31:10

自動化事件安全

2022-11-15 17:07:40

開發自動化前端

2011-06-03 17:06:09

自動化測試

2021-03-16 12:08:32

Python 服務器腳本

2014-03-11 11:10:10

PowerShell自動化腳本

2020-11-05 12:56:19

Python辦公自動化

2020-10-14 10:30:07

前端Node代碼

2015-10-21 15:08:25

電纜自動化

2015-06-03 09:07:46

白盒審計PHPPHP自動化審計

2013-11-27 11:34:43

自動化部署Python

2024-09-13 15:32:18

2013-09-03 09:58:51

Web前端

2024-01-24 18:50:21

WebFTP服務器

2012-11-23 14:28:45

IBMdW

2022-08-19 14:16:02

Python命令

2015-02-04 09:17:38

亞馬遜AWS云自動化

2020-03-10 10:06:08

小程序微信開發

2022-04-28 08:24:16

阿里云idaaspython

2017-12-17 21:58:18

點贊
收藏

51CTO技術棧公眾號

亚洲色图欧美制服丝袜另类第一页| 中文字幕中文乱码欧美一区二区| 97超碰国产精品女人人人爽 | 亚洲最新无码中文字幕久久| 国产亚洲欧美在线| 国产综合久久久久久| 黄网站免费在线| 欧美日韩国产传媒| 精品久久久久av影院| 999香蕉视频| 亚洲91av| 国产农村妇女毛片精品久久麻豆 | 国产91在线播放精品91| 成人在线观看小视频| 欧美日韩大片免费观看| 538在线一区二区精品国产| 高清欧美精品xxxxx| 亚洲麻豆精品| 久久色在线观看| 亚洲iv一区二区三区| 免费观看日批视频| 韩日成人av| 久久天天躁狠狠躁夜夜爽蜜月| 韩国无码一区二区三区精品| 九九九九九九精品任你躁| 在线观看精品一区| 少妇人妻无码专区视频| 91蜜桃在线视频| 中文字幕亚洲在| 日本午夜一区二区三区| 少妇人妻一区二区| 精品在线一区二区三区| 国产精品video| 亚洲天堂视频网站| 国产尤物精品| 美女av一区二区| 伊人久久久久久久久久久久久久| 精品av一区二区| 亚洲精品综合久久中文字幕| 中国极品少妇xxxx| 亚洲伊人影院| 欧美一区二区免费视频| 伊人色在线视频| 成人国产激情| 欧美性极品少妇| 韩国日本在线视频| 厕沟全景美女厕沟精品| 亚洲成人资源在线| 欧美日韩不卡在线视频| 九九久久九九久久| av手机免费看| 国产在线精品一区二区三区不卡| 国产精品视频xxxx| 国产乱码77777777| 老司机精品久久| 日本精品一区二区三区在线| 日韩精品在线观看免费| 国产日韩欧美一区| 日韩av成人在线观看| 国产成人一级片| 翔田千里一区二区| 国产成人福利网站| 精品国产www| 校园春色综合网| 国产精品成人aaaaa网站| www.久久久久久久| 日日摸夜夜添夜夜添国产精品| 国产mv免费观看入口亚洲| 国产主播第一页| 麻豆免费看一区二区三区| 91久久久久久国产精品| 精品久久国产视频| 99久久99久久精品国产片果冻| 久草精品电影| 风间由美一区| 亚洲女人的天堂| 精品少妇在线视频| 向日葵视频成人app网址| 欧洲亚洲精品在线| 91视频福利网| 久久夜色电影| 这里只有精品视频在线| 天天综合天天做| 一区在线观看| 国产精品欧美一区二区| 国产丝袜在线视频| 99精品国产视频| 色一情一区二区三区四区| 久久五月精品| 精品国产福利在线| 亚洲综合欧美激情| 伊人久久影院| 国产亚洲欧洲高清| 日本妇女毛茸茸| 麻豆久久婷婷| 97久久人人超碰caoprom欧美| 日本私人网站在线观看| 国产精品传媒入口麻豆| 黄色一级视频在线播放| 成人全视频免费观看在线看| 欧美精品一区二区三区视频| 夜夜春很很躁夜夜躁| 精品96久久久久久中文字幕无| 国产精品高潮呻吟久久av野狼| 国产a级免费视频| 久久精品视频一区| 免费高清一区二区三区| 日本综合视频| 亚洲福利在线播放| av最新在线观看| 亚洲一区国产一区| 亚洲自拍av在线| 国产黄色片在线播放| 亚洲午夜在线视频| 九九热精品在线播放| 欧美日韩一区二区三区四区不卡| 日韩午夜在线视频| 毛片基地在线观看| 懂色av一区二区夜夜嗨| 亚洲一区不卡在线| 暖暖成人免费视频| 精品国产免费一区二区三区四区| 国产人与禽zoz0性伦| 三级影片在线观看欧美日韩一区二区 | 日韩一区精品视频| 国产在线一区二区三区播放| 国产剧情在线| 欧美日韩一区中文字幕| 无码一区二区三区在线| 亚洲美女一区| 国产精品一区二区欧美黑人喷潮水| 免费在线观看黄色| 在线看国产一区二区| 亚洲欧美视频在线播放| 亚洲性视频h| 99在线视频首页| 国产午夜精品久久久久免费视| 欧美色精品天天在线观看视频| 91网站免费视频| 久久高清免费观看| 看高清中日韩色视频| 天堂中文av在线资源库| 亚洲国产精品福利| 99精品视频99| 972aa.com艺术欧美| 国产精品又粗又长| 牛牛精品成人免费视频| 亚州成人av在线| 少妇高潮久久久| 婷婷夜色潮精品综合在线| 性活交片大全免费看| 狠狠入ady亚洲精品| 波多野结衣久草一区| 男人天堂亚洲天堂| 亚洲精品99久久久久中文字幕| 日韩av电影网址| 91免费观看视频| 黄色高清无遮挡| 水蜜桃精品av一区二区| 91亚洲精品久久久久久久久久久久| 九义人在线观看完整免费版电视剧| 欧美精品日韩一区| 久久久精品视频免费观看| 国产很黄免费观看久久| 性一交一乱一伧国产女士spa| 国产精品网在线观看| 欧美野外猛男的大粗鳮| 超碰在线影院| 欧美一级生活片| 日本五十路女优| 国产午夜亚洲精品不卡| 日韩va在线观看| 国内揄拍国内精品久久| 免费久久一级欧美特大黄| 成人免费黄色| 欧美第一淫aaasss性| 人人九九精品| 正在播放亚洲一区| 国产无套粉嫩白浆内谢| 国产喷白浆一区二区三区| 欧美日韩精品区别| 亚洲福利久久| 日韩av一区二区三区在线| 在线视频成人| 91av视频导航| 好操啊在线观看免费视频| 亚洲成人黄色网| 久久精品国产亚洲av麻豆蜜芽| 亚洲欧美日韩国产综合| 成人性生活免费看| 麻豆国产精品一区二区三区| 国产天堂视频在线观看| 不卡在线一区二区| 国产日韩欧美亚洲一区| jizz久久久久久| 久久久噜噜噜久久久| www亚洲人| 亚洲第一综合天堂另类专| 中文字幕乱伦视频| 午夜电影久久久| 五月天色婷婷丁香| 91免费视频观看| 中文字幕制服丝袜| 免费看欧美女人艹b| 免费看黄在线看| 五月开心六月丁香综合色啪| 蜜桃视频成人| 66精品视频在线观看| 国产精品免费久久久久久| 国产伦理精品| 欧美第一黄网免费网站| 免费高清在线观看| 亚洲欧美制服中文字幕| 亚洲国产精品视频在线| 欧美日韩久久不卡| 精品人妻无码一区二区性色| 亚洲在线观看免费视频| 91久久久久久久久久久久久久| 久久久无码精品亚洲日韩按摩| 在线观看亚洲免费视频| 国产综合久久久久久久久久久久 | 国产成人福利夜色影视| 91成人在线播放| 678在线观看视频| 久久综合伊人77777蜜臀| 91看片在线观看| 亚洲人成人99网站| 头脑特工队2在线播放| 精品国产人成亚洲区| www视频在线| 这里是久久伊人| 国产又粗又猛又爽| 欧美日韩精品一区二区| 中文字幕日本视频| 在线免费不卡视频| 国产suv精品一区二区33| 都市激情亚洲色图| 欧美亚韩一区二区三区| 午夜精品123| 日日夜夜综合网| 婷婷中文字幕综合| 西西44rtwww国产精品| 疯狂做受xxxx欧美肥白少妇| 久久久久久久99| 亚州成人在线电影| 久久精品女人毛片国产| 亚洲一二三四在线| 日韩欧美激情视频| 天天色天天操综合| 国产精品乱子伦| 一本一道波多野结衣一区二区| 人人爽人人爽人人片av| 91久久香蕉国产日韩欧美9色| 91视频在线视频| 欧美三级三级三级| 国产一区二区在线不卡| 欧美高清精品3d| 亚洲AV无码乱码国产精品牛牛| 精品国产成人在线影院| 视频国产一区二区三区| 亚洲欧洲一区二区三区久久| 川上优的av在线一区二区| 精品国产一区二区三区四区在线观看| 毛片网站在线免费观看| 欧美成aaa人片在线观看蜜臀| 密臀av在线| 欧洲中文字幕国产精品| 91亚洲精品| 91在线播放国产| 欧美黑人巨大videos精品| 欧美一区二区在线| 婷婷亚洲五月| 成人av在线播放观看| 亚洲在线播放| 亚洲一级片免费| 国产河南妇女毛片精品久久久 | 亚洲国产激情av| 爱爱视频免费在线观看| 黄色一区二区在线| 探花国产精品一区二区| 日韩欧美在线综合网| 免费a级毛片在线观看| 色天天综合狠狠色| 成人免费高清观看| 国产精品午夜视频| 999久久久久久久久6666| 欧美三日本三级少妇三99| 91成人精品| 99福利在线观看| 国产老女人精品毛片久久| wwwwww日本| 一区二区不卡在线播放 | 免费视频网站www| 一本大道综合伊人精品热热| 国产精品无码久久久久成人app| 日韩二区三区在线| 成人免费看片| 国产成人一区二区| а√中文在线天堂精品| 一区二区三区我不卡| 免费在线观看成人av| 中文字幕第六页| 中文字幕av不卡| 日本道在线观看| 91精品国产综合久久久久久漫画| 日本天堂影院在线视频| 欧美韩国理论所午夜片917电影| 全球最大av网站久久| 好吊色欧美一区二区三区 | 韩国日本不卡在线| 亚洲日本免费电影| 美日韩免费视频| 欧美网站在线| 午夜一级免费视频| 日本一区免费视频| 男女啊啊啊视频| 精品欧美久久久| h视频在线免费观看| 国产精品久久久久久久av大片| 日韩av中文字幕一区| 日本成人在线不卡| 九九**精品视频免费播放| 最新中文字幕av| 91官网在线观看| 免费国产在线视频| 97在线看福利| 噜噜噜天天躁狠狠躁夜夜精品 | 97se综合| 国产欧美一区二区在线播放| 欧美日韩精品一本二本三本| 国产精品999.| 日韩一区在线看| 国产精品久久久久久久久久久久久久久久| 一本一本久久a久久精品综合小说| 黑森林国产精品av| 好看的日韩精品视频在线| 亚洲福利专区| a级一a一级在线观看| 亚洲va韩国va欧美va精品| 亚洲欧美强伦一区二区| 欧美国产日本在线| 51vv免费精品视频一区二区| 免费高清一区二区三区| 不卡视频一二三四| 一级免费在线观看| 日韩精品在线影院| 男人最爱成人网| 亚洲成人第一| 久久精品国产99国产精品| 一本一本久久a久久| 777a∨成人精品桃花网| av大片在线| 国产精品国产一区二区| 99亚洲精品| a毛片毛片av永久免费| 欧美羞羞免费网站| 日韩黄色影院| 99蜜桃在线观看免费视频网站| 国产精品大片| 91精品国产自产| 欧美主播一区二区三区| 黄色网址免费在线观看| 99视频免费观看| 9色精品在线| 91精品久久久久久久久久久久| 欧美日韩精品福利| 午夜影院免费在线| 国产日韩一区二区三区| 久久一区国产| 亚洲人做受高潮| 精品少妇一区二区三区日产乱码 | 国产精品麻豆免费版现看视频| 6080亚洲精品一区二区| 成人免费高清观看| 欧美日韩一区综合| 精品写真视频在线观看| 中文字幕一区二区三区手机版| 亚洲欧美制服第一页| 激情视频亚洲| 久久久亚洲精品无码| 中文字幕久久午夜不卡| 精品人妻午夜一区二区三区四区 | 亚洲欧美视频二区| 依依成人精品视频| 色吊丝在线永久观看最新版本| 国产一区二区丝袜高跟鞋图片| 欧美视频在线观看| 亚洲日本精品视频| 欧美v国产在线一区二区三区| 日韩精品专区| av在线com| 亚洲国产精品v| 神马午夜电影一区二区三区在线观看| 国产精品久久久久9999| 好吊一区二区三区| 刘亦菲国产毛片bd| 日韩国产中文字幕| 日本成人手机在线| 欧美婷婷精品激情| 午夜电影一区二区|