Flutter GitHub Actions 许可证检查插件 license_checker_for_github_action 的使用

发布于 1周前 作者 songsunli 来自 Flutter

Flutter GitHub Actions 许可证检查插件 license_checker_for_github_action 的使用

Dart License Checker

这是一个脚本,用于在 GitHub Actions 中以纯文本形式展示依赖项的许可证。

barbecue | Apache 2.0
pana | BSD
path | BSD
pubspec_parse | BSD

安装并本地运行

首先,你需要全局安装 license_checker_for_github_action 插件:

flutter pub global activate license_checker_for_github_action

确保你处于你的 Flutter 应用或 Dart 程序的主目录下,然后执行:

dart_license_checker

如果这不起作用,你可能需要设置你的 PATH(参见 这里)。

GitHub Action

以下是在 GitHub Actions 中使用的示例配置:

- name: 检查许可证安装
  run: |
    dart pub global activate license_checker_for_github_action
- name: 检查许可证
  run: |
    dart_license_checker

显示传递依赖项

默认情况下,dart_license_checker 只显示直接依赖项(即你在 pubspec.yaml 文件中列出的包)。

如果你想要分析传递依赖项,可以使用 --show-transitive-dependencies 参数:

dart_license_checker --show-transitive-dependencies

如果你想只输出包含 Copyleft 许可的依赖项,可以使用 --only-copyleft 参数:

dart_license_checker --only-copyleft

如果你想在存在 Copyleft 许可的情况下触发错误(例如在 GitHub Actions 中),可以添加 --fail-on-copyleft 参数:

dart_license_checker --fail-on-copyleft

在结合 --only-copyleft--fail-on-copyleft 参数时,你可能希望忽略某些库。为此,可以使用 --ignores 参数:

dart_license_checker --fail-on-copyleft --ignores 'nm, lib2'

示例代码

以下是一个命令行示例:

/// 命令行示例
void main() async {
  //% `dart_license_checker --fail-on-copyleft --ignores 'nm, lib2'`
}

更多关于Flutter GitHub Actions 许可证检查插件 license_checker_for_github_action 的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter GitHub Actions 许可证检查插件 license_checker_for_github_action 的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用license_checker_for_github_action插件进行许可证检查的详细步骤,包括相关的代码案例。

1. 安装插件

首先,确保你已经在Flutter项目的根目录下。在你的pubspec.yaml文件中添加license_checker依赖(注意:license_checker_for_github_action本身并不是一个Flutter插件,而是一个GitHub Action。但我们需要一个Flutter插件来生成许可证报告,通常使用license_checker):

dependencies:
  flutter:
    sdk: flutter
  license_checker: ^x.y.z  # 请替换为最新版本号

然后运行以下命令来安装依赖:

flutter pub get

2. 生成许可证报告

在你的Flutter项目中创建一个脚本来生成许可证报告。通常,你会在项目根目录下创建一个名为generate_licenses.dart的Dart脚本文件。

generate_licenses.dart 文件内容:

import 'package:license_checker/license_checker.dart';
import 'dart:io';

void main() async {
  // 配置许可证输出路径
  final outputPath = File('licenses.md');

  // 获取依赖项的许可证信息
  final licenses = await LicenseChecker.checkLicenses(
    pubspecPath: './pubspec.yaml',
    withTransitiveDependencies: true,
    excludeLicenses: ['notice', 'unlicense'],  // 可选:排除某些许可证
  );

  // 将许可证信息写入文件
  await outputPath.writeAsString(licenses.toMarkdown());

  print('Licenses have been written to ${outputPath.path}');
}

运行这个脚本:

dart generate_licenses.dart

运行后,你将在项目根目录下看到一个名为licenses.md的文件,其中包含了所有依赖项的许可证信息。

3. 配置GitHub Actions

接下来,配置GitHub Actions来自动运行许可证检查。在你的GitHub仓库中,创建或编辑.github/workflows/license-check.yml文件。

.github/workflows/license-check.yml 文件内容:

name: License Check

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

jobs:
  check-licenses:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Set up Flutter
      uses: subosito/flutter-action@v1
      with:
        flutter-version: 'stable'  # 或者你需要的任何版本

    - name: Install dependencies
      run: flutter pub get

    - name: Generate licenses
      run: dart ./generate_licenses.dart

    - name: Check for changes in licenses
      id: check-licenses-change
      run: |
        if [ -n "$(git status --porcelain | grep 'licenses.md')" ]; then
          echo "Licenses have changed, please review."
          echo "::set-output name=has_changes::true"
        else
          echo "No changes in licenses."
          echo "::set-output name=has_changes::false"
        fi

    - name: Fail if licenses have changed
      if: ${{ steps.check-licenses-change.outputs.has_changes == 'true' }}
      run: |
        echo "Build failed because licenses have changed."
        exit 1

这个GitHub Action的工作流程会在每次推送到main分支或创建指向main分支的拉取请求时运行。它会检查许可证文件是否发生变化,并在许可证发生变化时使构建失败。

通过以上步骤,你已经成功配置了Flutter项目使用license_checker插件生成许可证报告,并集成GitHub Actions来自动检查许可证变化。

回到顶部