⚠️ Traduction non officielle - Cette documentation est une traduction communautaire non officielle de Docker.

Intégration Continue (CI)

Afin d'aider à valider votre extension et s'assurer qu'elle est fonctionnelle, le SDK Extension fournit des outils pour vous aider à configurer l'intégration continue pour votre extension.

Important

Configurer l'environnement CI avec GitHub Actions

Vous avez besoin de Docker Desktop pour pouvoir installer et valider votre extension. Vous pouvez démarrer Docker Desktop dans GitHub Actions en utilisant l'Action Docker Desktop, en ajoutant ce qui suit à un fichier de workflow :

steps:
  - id: start_desktop
    uses: docker/desktop-action/[email protected]
Note

Cette action supporte uniquement les runners macOS de GitHub Action pour le moment. Vous devez spécifier runs-on: macOS-latest pour vos tests de bout en bout.

Une fois que l'étape a été exécutée, les étapes suivantes utilisent Docker Desktop et la CLI Docker pour installer et tester l'extension.

Valider votre extension avec Puppeteer

Une fois que Docker Desktop démarre en CI, vous pouvez construire, installer et valider votre extension avec Jest et Puppeteer.

D'abord, construisez et installez l'extension depuis votre test :

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);

// garder une référence sur l'app pour l'arrêter à la fin des 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`);
});

Ensuite, ouvrez le tableau de bord Docker Desktop et exécutez quelques tests dans l'UI de votre extension :

describe("Tester mon extension", () => {
  test("devrait être fonctionnelle", async () => {
    dashboard = await DesktopUI.start();

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

    // utiliser les APIs puppeteer pour manipuler l'UI, cliquer sur des boutons, s'attendre à un affichage visuel et valider votre extension
    await eFrame.waitForSelector("#someElementId");
  });
});

Finalement, fermez le tableau de bord Docker Desktop et désinstallez votre extension :

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

Et ensuite