github有一個神器,叫作Github Actions,基於它提供的自動化構建服務,咱們能夠進行構建,測試,打包,部署咱們的代碼項目,相對於jenkins這類構建服務,它最大的優點是提供了整套服務器環境,包括Linux,Windows,macOS這些可選的服務器,這樣一來,咱們就不須要把時間花在搭建服務器這類繁冗無心義的事情上,把精力集中在咱們的構建腳本任務上。html
咱們先看一個例子main.yml:git
name: Flutter Web Build To Github Page
on:
push:
branches:
- master
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@master
- name: build
uses: subosito/flutter-action@v1
with:
channel: 'stable'
- run: flutter pub get
- run: flutter channel master
- run: flutter upgrade
- run: flutter config --enable-web
- run: flutter build web
- run: cp ./CNAME ./build/web/CNAME
- name: deploy
uses: peaceiris/actions-gh-pages@v2.5.0
env:
PERSONAL_TOKEN: ${{ secrets.ACCESS_TOKEN }}
PUBLISH_BRANCH: gh-pages
PUBLISH_DIR: ./build/web
複製代碼
Github Actions的腳本任務是yml格式的,上面這個腳本的任務如name,就是使用flutter web構建web項目,而後把網站產物部署到GitHub Pages,打包部署一步到位。github
如上,Github Actions有幾個關鍵字:web
他們之間的關係以下:ubuntu
workfolw > job > step > action
複製代碼
瞭解了基本概念以後,接下來咱們分析上面的任務都作了啥,服務器
首先看到on,條件是push,分支是master,因此這個workflow觸發的條件就是咱們在master分支push了代碼,更多的觸發條件能夠看這裏;post
而後就是jobs,開始job以前,須要設定執行環境,也就是runs-on,我上面設置的是 ubuntu-latest;測試
接着就是一個又一個的step:網站
flutter pub get
flutter channel master
flutter upgrade
flutter config --enable-web
flutter build web
複製代碼
等待全部任務執行完畢,這次構建就完成了。ui
除此以外,上面的構建腳本還有幾個要注意的地方:
上述使用的actions/checkout實際上是github提供的標準actions, 因此執行checkout操做,只需直接使用;
除了標準actions,咱們還可使用開發者在marketplace發佈的actions,像上述執行的flutter構建任務,是須要flutter環境的,而使用了subosito/flutter-action@v1
,就無需關心環境問題,直接執行相應的構建命令便可;
部署操做,推到GitHub Page須要配置ACCESS_TOKEN
, 這個須要在GitHub項目的settings進行設置。
Github page默認是取的gh-pages
分支,能夠在CNAME配置自定義域名, 同時由於每次部署會把CNAME覆蓋,因此會進行cp操做,把CNAME拷貝到產物文件夾一塊兒進行部署。
Github神器:
Github Actions + Github Pages 🔜 持續編碼👨💻,自動部署🔨。