Integración continua (CI)
Para ayudarte a validar tu extensión y garantizar que sea funcional, el SDK de extensiones proporciona herramientas que te ayudan a configurar la integración continua para tu extensión.
ImportantTanto la Docker Desktop Action como la biblioteca extension-test-helper son experimentales.
Configurar el entorno de CI con GitHub Actions
Necesitas que Docker Desktop esté instalado para poder instalar y validar tu extensión. Puedes iniciar Docker Desktop en GitHub Actions utilizando la Docker Desktop Action, añadiendo lo siguiente a un archivo de flujo de trabajo (workflow):
steps:
- id: start_desktop
uses: docker/desktop-action/[email protected]NotePor el momento, esta acción solo admite ejecutores (runners) de macOS en GitHub Actions. Debes especificar
runs-on: macOS-latestpara tus pruebas de extremo a extremo (end-to-end).
Una vez ejecutado el paso, los siguientes pasos utilizan Docker Desktop y la CLI de Docker para instalar y probar la extensión.
Validar tu extensión con Puppeteer
Una vez que Docker Desktop se inicia en CI, puedes compilar, instalar y validar tu extensión con Jest y Puppeteer.
Primero, compila e instala la extensión desde tu prueba:
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);
// mantener una referencia de la aplicación para detenerla al final de las pruebas
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`);
});Luego, abre el panel de control (Dashboard) de Docker Desktop y ejecuta algunas pruebas en la UI de tu extensión:
describe("Test my extension", () => {
test("should be functional", async () => {
dashboard = await DesktopUI.start();
const eFrame = await dashboard.navigateToExtension("my/extension");
// usar las APIs de puppeteer para manipular la UI, hacer clic en botones, esperar visualizaciones y validar tu extensión
await eFrame.waitForSelector("#someElementId");
});
});Por último, cierra el panel de control de Docker Desktop y desinstala tu extensión:
afterAll(async () => {
dashboard?.stop();
await exec(`docker extension uninstall my/extension`);
});¿Qué sigue?
- Construye una extensión con un frontend avanzado.
- Obtén más información sobre la arquitectura de las extensiones.
- Aprende cómo publicar tu extensión.