持续集成 (CI)

为了帮助验证您的扩展并确保其功能正常,扩展SDK提供了工具来帮助您为扩展设置持续集成。

重要

Docker Desktop Actionextension-test-helper 库 都是 实验性的

使用 GitHub Actions 设置 CI 环境

你需要Docker Desktop来安装和验证你的扩展。 你可以使用Docker Desktop Action在GitHub Actions中启动Docker Desktop,通过将以下内容添加到工作流文件中:

steps:
  - id: start_desktop
    uses: docker/desktop-action/start@v0.1.0

注意

此操作目前仅支持Github Action的macOS运行器。您需要为您的端到端测试指定runs-on: macOS-latest

一旦步骤执行完毕,接下来的步骤将使用Docker Desktop和Docker CLI来安装和测试扩展。

使用Puppeteer验证您的扩展

一旦Docker Desktop在CI中启动,您就可以使用Jest和Puppeteer构建、安装和验证您的扩展。

首先,从您的测试中构建并安装扩展:

import { DesktopUI } from "@docker/extension-test-helper";
import { exec as originalExec } from "child_process";
import * as util from "util";

export const exec = util.promisify(originalExec);

// keep a handle on the app to stop it at the end of tests
let dashboard: DesktopUI;

beforeAll(async () => {
  await exec(`docker build -t my/extension:latest .`, {
    cwd: "my-extension-src-root",
  });

  await exec(`docker extension install -f my/extension:latest`);
});

然后打开 Docker 桌面仪表板并在您的扩展程序的用户界面中运行一些测试:

describe("Test my extension", () => {
  test("should be functional", async () => {
    dashboard = await DesktopUI.start();

    const eFrame = await dashboard.navigateToExtension("my/extension");

    // use puppeteer APIs to manipulate the UI, click on buttons, expect visual display and validate your extension
    await eFrame.waitForSelector("#someElementId");
  });
});

最后,关闭Docker Desktop Dashboard并卸载您的扩展:

afterAll(async () => {
  dashboard?.stop();
  await exec(`docker extension uninstall my/extension`);
});

下一步是什么