封装为 Github Action

by ADMIN 18 views

简介

在当前的开发环境中,Dewhale 希望能够以 Github Action 的方式被其他 Github Repo 使用。这种方式可以让其他开发者灵活地配置和使用 Dewhale,作为 eat our own dogfood 的实践者,我们当前的 dewhale 仓库也已经采用了这种方式接入了自己。

方案

为了实现这种方式,我们需要将 Dewhale 封装为一个可执行的 Github Action。这种方式可以让其他开发者轻松地在自己的 Github Repo 中使用 Dewhale。

步骤 1: 创建 .dewhale 目录

首先,我们需要在自己的 Github Repo 中创建一个 .dewhale 目录。这个目录将包含所有与 Dewhale 相关的配置和依赖。

mkdir .dewhale

步骤 2: 创建 .github/workflows 目录

接下来,我们需要在自己的 Github Repo 中创建一个 .github/workflows 目录。这个目录将包含所有与 Github Action 相关的配置和脚本。

mkdir .github/workflows

步骤 3: 配置 Github Action

在 .github/workflows 目录中,我们需要创建一个名为 dewhale.yml 的文件。这个文件将包含所有与 Github Action 相关的配置和脚本。

name: Dewhale

on:
  push:
    branches:
      - main

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

      - name: Install dependencies
        run: |
          deno install -q --unstable --import-map=import_map.json --allow-read --allow-write --allow-env --allow-net --allow-run --allow-plugin --allow-stdin https://deno.land/std@0.114.0/cli.ts

      - name: Run Dewhale
        run: |
          deno run -A src/entry.ts

步骤 4: 配置 import_map.json

在 .dewhale 目录中,我们需要创建一个名为 import_map.json 的文件。这个文件将包含所有与 import 相关的配置和依赖。

{
  "imports": {
    "https://deno.land/std@0.114.0/cli.ts": {
      "devDependencies": {
        "dewhale": "https://github.com/your-username/your-repo-name.git"
      }
    }
  }
}

步骤 5: 配置 deno.json

在 .dewhale 目录中,我们需要创建一个名为 deno.json 的文件。这个文件将包含所有与 deno 相关的配置和依赖。

{
  "extends": "https://deno.land/std@0.114.0/cli.ts",
  "import_map": {
    "https://deno.land/std@0.114.0/cli.ts": {
      "devDependencies": {
        "dewhale": "https://github.com/your-username/your-repo-name.git"
      }
    }
  }
}

示例

假设我们有一个 Github Repo 名为 character,我们希望在这个 Repo 中使用 Dewhale。我们可以按照上面的步骤配置 Github Action 和 import_map.json 文件。

mkdir .dewhale
mkdir .github/workflows

在 .github/workflows 目录中,我们需要创建一个名为 dewhale.yml 的文件。

name: Dewhale

on:
  push:
    branches:
      - main

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

      - name: Install dependencies
        run: |
          deno install -q --unstable --import-map=import_map.json --allow-read --allow-write --allow-env --allow-net --allow-run --allow-plugin --allow-stdin https://deno.land/std@0.114.0/cli.ts

      - name: Run Dewhale
        run: |
          deno run -A src/entry.ts

在 .dewhale 目录中,我们需要创建一个名为 import_map.json 的文件。

{
  "imports": {
    "https://deno.land/std@0.114.0/cli.ts": {
      "devDependencies": {
        "dewhale": "https://github.com/your-username/your-repo-name.git"
      }
    }
  }
}

在 .dewhale 目录中,我们需要创建一个名为 deno.json 的文件。

{
  "extends": "https://deno.land/std@0.114.0/cli.ts",
  "import_map": {
    "https://deno.land/std@0.114.0/cli.ts": {
      "devDependencies": {
        "dewhale": "https://github.com/your-username/your-repo-name.git"
      }
    }
  }
}

结论

Q: 什么是 Github Action?

A: Github Action 是一个用于自动化 Github 仓库中的任务的工具。它可以让开发者轻松地在自己的 Github 仓库中创建和执行自动化任务。

Q: 为什么要使用 Github Action?

A: 使用 Github Action 可以让开发者轻松地在自己的 Github 仓库中创建和执行自动化任务,例如构建、测试、部署等。它还可以让开发者轻松地共享和重用自动化任务。

Q: 如何使用 Github Action?

A: 使用 Github Action 可以通过以下步骤:

  1. 创建一个新的 Github 仓库。
  2. 在仓库中创建一个 .github/workflows 目录。
  3. .github/workflows 目录中创建一个名为 dewhale.yml 的文件。
  4. dewhale.yml 文件中配置 Github Action 的任务和依赖。
  5. .dewhale 目录中创建一个名为 import_map.json 的文件。
  6. import_map.json 文件中配置 import 相关的依赖。
  7. .dewhale 目录中创建一个名为 deno.json 的文件。
  8. deno.json 文件中配置 deno 相关的依赖。

Q: 如何配置 Github Action?

A: 配置 Github Action 可以通过以下步骤:

  1. .github/workflows 目录中创建一个名为 dewhale.yml 的文件。
  2. dewhale.yml 文件中配置 Github Action 的任务和依赖。
  3. .dewhale 目录中创建一个名为 import_map.json 的文件。
  4. import_map.json 文件中配置 import 相关的依赖。
  5. .dewhale 目录中创建一个名为 deno.json 的文件。
  6. deno.json 文件中配置 deno 相关的依赖。

Q: 如何共享和重用 Github Action?

A: 共享和重用 Github Action 可以通过以下步骤:

  1. 创建一个新的 Github 仓库。
  2. 在仓库中创建一个 .github/workflows 目录。
  3. .github/workflows 目录中创建一个名为 dewhale.yml 的文件。
  4. dewhale.yml 文件中配置 Github Action 的任务和依赖。
  5. .dewhale 目录中创建一个名为 import_map.json 的文件。
  6. import_map.json 文件中配置 import 相关的依赖。
  7. .dewhale 目录中创建一个名为 deno.json 的文件。
  8. deno.json 文件中配置 deno 相关的依赖。

Q: Github Action 有哪些限制?

A: Github Action 有以下限制:

  1. Github Action 只支持在 Github 仓库中使用。
  2. Github Action 只支持在 Github Actions 中使用。
  3. Github Action 只支持在 .github/workflows 目录中使用。
  4. Github Action 只支持在 .dewhale 目录中使用。

Q: Github Action 有哪些优势?

A: Github Action 有以下优势:

  1. Github Action 可以让开发者轻松地在自己的 Github 仓库中创建和执行自动化任务。
  2. Github Action 可以让开发者轻松地共享和重用自动化任务。
  3. Github Action 可以让开发者轻松地配置和管理自动化任务。
  4. Github Action 可以让开发者轻松地监控和调试自动化任务。