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.
ImportantL'Action Docker Desktop et la bibliothèque extension-test-helper sont toutes deux expérimentales.
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]
NoteCette 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
- Construire une extension frontend avancée.
- En savoir plus sur l'architecture des extensions.
- Apprendre comment publier votre extension.