diff --git a/deadlock-plugins/deadlock-extension/dev/README.md b/deadlock-plugins/deadlock-extension/dev/README.md index e34ff2053f859fd77ad6581374c8bd3abe4935ef..ea985e86635cbee7062c285600c9bbc7456a44d6 100644 --- a/deadlock-plugins/deadlock-extension/dev/README.md +++ b/deadlock-plugins/deadlock-extension/dev/README.md @@ -1,9 +1,9 @@ # Deadlock Coding -VSCode extension to show a panel with : +Extension VSCode permettant de : -- adresses availables for the current mission pulled from `/home/config/user-challenge.json` -- mission instruction pulled from the `README.md` +- récupérer la mission en cours à partir du `/home/config/user-challenge.json` +- afficher les consignes de la mission depuis un `README.md`. ## Quick start @@ -25,23 +25,36 @@ Le pipeline a besoin d'un token provenant de la marketplace pour y publier l'ext Pour le moment, la marketplace de Vscode ne supporte pas totalement le `semver`([spécialement les suffixes](https://github.com/microsoft/vsmarketplace/issues/50#issuecomment-990764201)). Il n'est pas possible de créer une version `0.0.1-alpha` de l'extension par example. -### Construire une version de pré-production +### Construire une version pré-release -Lorsque le travail est poussé sur la branche `master`, une version de l'extension est poussé en `pre-release` sur la marketplace. +1. Monter la version de l'extension avec `npm version`. Vous pouvez voir comment utiliser la commande [ici](https://docs.npmjs.com/cli/v8/commands/npm-version). -### Constuire une version de production +2. Lorsque le travail est poussé sur la branche `master`, une version de l'extension est poussé en `pre-release` sur la marketplace. -1. Monter la version de l'extension avec`npm version`. Vous pouvez voir comment utiliser la commande [ici](https://docs.npmjs.com/cli/v8/commands/npm-version). +### Constuire une version release -2. Pousser le code source et le tag +1. Monter la version de l'extension avec `npm version`. Vous pouvez voir comment utiliser la commande [ici](https://docs.npmjs.com/cli/v8/commands/npm-version). + +2. Pousser le code source et le tag : ```shell -git push origin taBranch --tags +git tag [X.Y.Z] [hash du commit] +git push origin [taBranch] --tags ``` +### Publier l'extention à la main + +Les commandes nécessaires sont prédéfinies dans le package.json : + +```shell +npm run vsce-package +npm run vsce-publish -- [--pre-release] -p [token] +``` + +La méthode pour obtenir le token est décrite [ici](https://code.visualstudio.com/api/working-with-extensions/publishing-extension#get-a-personal-access-token) + ## Le cas d'usage à essayer -The use case to be tested to validate a US Deadlock Desktop corresponds to a use scenario. De facto, this scenario should be updated after each release of features. Le cas d'usage à essayer pour valider une US Deadlock Desktop correspond à un scénario utilisateur. Ce scénario doit être mis à jour à chaque mise à jour. Configuration de base : @@ -54,14 +67,14 @@ Configuration de base : Steps: 1. Aller sur https://www.dev.deadlock.io/. La page d'authentification doit apparaitre. -2. Se connecter via Google. The user should be authenticated and redirected to the home page. +2. Se connecter via Google. Être redirigé vers la page d'accueil. 3. Sélectionner et lancer une mission du type `desktop`. Les instructions de la mission doivent apparaître sur la page. -4. Tous les liens sur la page de la mission doivent fonctionnés : installation de dépendances, la page de l'extension sur la marketplace, et le lien xdg-open permettant d'ouvrir Vscode. +4. Tous les liens sur la page de la mission doivent fonctionner : installation de dépendances, la page de l'extension sur la marketplace, et le lien xdg-open permettant d'ouvrir Vscode. 5. Lorsque VS Code est ouvert, une fenêtre doit apparaitre et suggérer l'installation de l'extension. Accepter l'installation. L'installation doit fonctionner et une notification de bienvenue doit apparaître. -6. Désinstaller l'extension, relancer l'IDE, et chercher `deadlock` dans la barre de recherche de la `marketplace`. The extension should immediately appear in the first 3 results. Reinstall the extension. -7. Re-click on the xdg-open link. A popup asking for the parent working folder should open. -8. Select a directory that does not pose any access rights problems for the current user. A page on the default browser should open, allowing access to an OAuth Device Flow 2.0 authentication page. -9. Validate the authentication using the Google provider and return to the extension. A login confirmation notification should be visible. -10. Open the extension's home page from the Deadlock panel. The view should be representative of the status (success or failure) of the previously performed tasks. -11. Once authenticated, VS Code should automatically re-open inside a `devcontainer`. The file explorer tree should be mounted to mission root dir -12. Open the embedded terminal. It should have `deadlock` as user and every libs+executables required for the mission should be present (e.g. docker, java, node, ...). +6. Désinstaller l'extension, relancer l'IDE, et chercher `deadlock` dans la barre de recherche de la `marketplace`. L'extension doit apparaitre dans les 3 premiers résultats. Reinstaller l'extension. +7. Re-cliquer sur le lien de l'exercice dans le navigateur. La fenêtre demandant de choisir un dossier pour les exercices doit s'ouvrir. +8. Sélectionner un dossier ne nécessitant pas de droits d'accès. Une page doit s'ouvrir dans le navigateur par défault pour permettre à l'utilisateur de s'authentifier. +9. S'authentifier avec Google et retourner dans VSCode. Une notification de connexion doit s'afficher. +10. Ouvrir la page de l'extension, elle doit indiquer que les étapes précédentes (choix du dossier et authentification) ont été validées. +11. Une fois authentifié, VSCode doit se réouvrir automatiquement dans le `devcontainer`. L'arborescence de fichiers doit être montée dans le dossier des exercices. +12. Ouvrir le terminal de VSCode. L'utilisateur en cours doit être `deadlock` et les bibliothèques et exécutables nécessaires à la mission doivent être présents (ex: docker, java, node, ...).