Skip to content

github action

字数: 0 字 时长: 0 分钟

flutte web

yml
name: 打包部署flutter web

on:
  push:
    branches:
      - main

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Set up Flutter
        uses: subosito/flutter-action@v2
        with:
          channel: "stable"
          flutter-version: 3.22.2

      # 生成静态文件
      - name: Build
        run: |
          flutter pub get
          flutter build web --web-renderer canvaskit --base-href="/仓库名/"

      # 部署到 GitHub Pages
      - name: Deploy
        uses: JamesIves/github-pages-deploy-action@v4
        with:
          # 生成的 secret
          token: ${{ secrets.ACCESS_TOKEN }}
          # 部署到 page 分支,因为 main 分支存放的一般是源码,而 page 分支则用来存放生成的静态文件
          branch: page
          # 生成的静态文件存放的地方
          folder: build/web

前端项目

yml
# name 可以自定义
name: 部署前端项目

# 触发条件:在 push 到 main/master 分支后,新的 Github 项目 应该都是 main,而之前的项目一般都是 master
on:
  push:
    branches:
      - main

# 任务
jobs:
  build-and-deploy:
    # 服务器环境:最新版 Ubuntu
    runs-on: ubuntu-latest
    steps:
      # 拉取代码
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup Node
        uses: actions/setup-node@v4
        with:
          node-version: 20

      # 生成静态文件
      - name: Build
        run: |
          npm i pnpm -g
          pnpm install
          pnpm run build

      # 部署到 GitHub Pages
      - name: Deploy
        uses: JamesIves/github-pages-deploy-action@v4
        with:
          # 生成的 secret
          token: ${{ secrets.ACCESS_TOKEN }}
          # 部署到 page 分支,因为 main 分支存放的一般是源码,而 page 分支则用来存放生成的静态文件
          branch: page
          # 生成的静态文件存放的地方
          folder: docs/other/build

flutter 分析

yml
name: Flutter Analysis
on:
  push:
    branches:
      - main
  pull_request:
  workflow_dispatch:

jobs:
  package-analysis:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Set up Flutter
        uses: subosito/flutter-action@v2
        with:
          channel: stable
          cache: true

      # 下载flutter依赖
      - name: Install dependencies
        run: flutter pub get

      # 检查代码格式是否符合规范并在不符合时退出。
      # - name: Check formatting
      #   run: dart format --set-exit-if-changed .

      # 分析代码
      - name: Run analysis
        run: flutter analyze

      # 模拟发布,检查项目的包是否可以顺利发布到 pub.dev,并验证包的健康状态。
      - name: Verify package health
        run: flutter pub publish --dry-run

      # 执行 Flutter 的单元测试。
      # - name: Run tests
      #   run: flutter test

私有仓库的构建文件发布到另一个公开仓库

yml
# https://developer.aliyun.com/article/1425333

# 仓库A是不开源的,是我的项目源码,但是我想要将仓库A的build文件,上传到另外一个GitHub公开仓库B的main分支,同时仓库B的main分支已经设置为pages,这样就能方便别人访问和使用
# 这是仓库A的actions文件

name: Deploy GitHub Pages

on:
  push:
    branches:
      - main

# 任务
jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup Node
        uses: actions/setup-node@v4
        with:
          node-version: 20

      # 生成静态文件
      - name: Build
        run: |
          npm i pnpm -g
          pnpm install
          pnpm run build

      - name: Deploy
        uses: peaceiris/actions-gh-pages@v4
        with:
          # 令牌
          personal_token: ${{ secrets.PERSONAL_TOKEN }}
          # 仓库A 构建后的文件目录
          publish_dir: docs/other/build
          # 仓库B,格式为:user/repo
          external_repository: user/repo
          # 仓库B的分支
          publish_branch: page
#
# 部署之后,github page的custom domian自定义域名失效
# 主文件夹下新建CNAME文件,比如public里面,里面填入你的域名,并保存,github page就不会出现域名重置了