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 🔜 持续编码👨💻,自动部署🔨。