help/content/files/_index.md
Pierre-Olivier Mercier a26c4d6e89
All checks were successful
continuous-integration/drone/push Build is passing
Add notes and fixes
2022-07-12 09:41:27 +02:00

8.8 KiB

date title weight
2019-04-04T15:59:52+02:00 Arborescence et fichiers 10

Afin de pouvoir être importé automatiquement sur la plate-forme, vos scénarios doivent respecter une certaine arborescence que voici :

    .
    ├── AUTHORS.txt
    ├── overview.md
    ├── title.txt
    ├── heading.jpg
    ├── CHID-Titre de l'étape/
    │   ├── challenge.txt
    │   ├── finished.md    (opt.)
    │   ├── links.txt
    │   ├── overview.md
    │   ├── resolution.md   (choice)
    │   ├── resolution.mp4  (choice)
    │   ├── statement.md
    │   ├── hints/          (opt.)
    │   │   ├── DIGESTS.txt
    │   │   └── ...
    │   ├── files/
    │   │   ├── DIGESTS.txt
    │   │   └── ...
    │   └── ressources/
    │       └── ...
    │
    ├── CHID-Titre de l'étape/
    │   └── ...
    └── ...

{{% notice warning %}} Pour le bon usage et la bonne configuration de vos dépôts sur GitLab, veuillez consulter [la page dédiée]({{<relref "git">}}). {{% /notice %}}

{{% notice info %}} N'ajoutez pas inutilement de dossiers ou fichiers vides. Ceux-ci doivent sans doute être optionnels et risquent de vous/nous induire en erreur lors de nos vérifications. {{% /notice %}}

Utilisez le binaire repochecker (amd64/linux) pour vous assurer de votre arbrescence et de la validité du contenu des fichiers :

cd /mnt/fic/MyTheme
repochecker .
...
repochecker /mnt/fic/MyTheme/1-MyChallenge/

CHID

Dans les noms de dossiers, CHID correspond à un identifiant permettant de référencer votre étape (pour déclarer une dépendance sur celui-ci par exemple).

L'import s'effectuant selon l'ordre alphabétique, vous devriez utiliser le numéro d'ordre de l'étape comme identifiant :

    .
    ├── 1-Titre du premier défi/
    │   └── ...
    ├── 2-Titre du deuxième défi/
    │   └── ...
    └── ...

Dans cet exemple, si l'ordre était déterminé uniquement par l'ordre alphabétique des noms de dossiers, le deuxième serait devant le premier (d<p). Ajouter le numéro d'ordre permet de contrôler plus facilement l'ordre des étapes, sans que cela soit affiché dans l'interface.

Fichiers pour un scénario

AUTHORS.txt

Voir la [page dédiée]({{<relref "authors">}}).

title.txt

Ce fichier peut être utilisé pour y inscrire le nom du scénario, tel qu'il doit apparaître sur l'interface.

Par défaut, sans ce fichier, c'est le nom du dossier contenant les challenges qui est utilisé.

heading.jpg

Il s'agit d'une image/photo représentative de votre scénario. Elle est affichée sur la page d'accueil dans une boîte montrant votre scénario parmis les autres ; et elle est aussi affichée dans le fond de la page lorsque l'on consulte les pages de votre scénario.

{{% notice info %}} Attention aux licences et contraintes (notamment l'obligation de citer la source ou le photographe). Celles-ci ne sont pas optionnelles étant donné que l'on veut diffuser nos challenges au public.

Vous devriez utiliser Unsplash ou partager un travail personnel. {{% /notice %}}

La taille et l'orientation de l'image n'a pas d'importance, mais gardez en tête que c'est son centre qui sera affiché, si la hauteur dépasse la taille prévue.

Rendu heading.jpg

overview.txt // overview.md

Une présentation du contexte du scenario (~2-3 paragraphes + 1 paragraphe d'accroche), compréhensible par un décideur, petit schéma à l'appui.

Le fichier doit comporter un paragraphe d'accroche (qui sera affiché plus gros que les suivants). Celui-ci correspond à la première ligne de votre fichier.

Comme l'ensemble des textes importés, vous pouvez utiliser du Markdown pour mettre en forme vos textes.

Vous pouvez insérer des images dans tous les textes :

![alt](path title)

Rendu overview.txt

Rendu overview.txt

Fichiers pour une étape de scénario

challenge.txt

Voir la [page dédiée]({{<relref "challenge">}}).

finished.txt

Remplissez ce fichier optionnel, lorsque vous souhaitez apporter une information aux participants une fois qu'ils ont validé cette étape.

Comme l'ensemble des textes importés, vous pouvez utiliser du Markdown pour mettre en forme vos textes.

Rendu finished.txt

links.txt

Voir la [page dédiée]({{<relref "links">}}).

overview.md

Une présentation rapide de l'étape (~1-2 phrases), compréhensible par un décideur, petit schéma à l'appui si besoin.

Le fichier doit comporter une phrase d'accroche (qui sera affichée plus grosse que les suivantes). Celle-ci correspond à la première ligne de votre fichier.

Comme l'ensemble des textes importés, vous pouvez utiliser du Markdown pour mettre en forme vos textes.

Gardez en tête que les overview, que ce soit scénario ou étapes, sont affichées au public : il s'agit à la fois d'aguicher le participant pour qu'il fasse votre scénario plutôt que celui d'un autre groupe, mais aussi de donner envie au public de lire plus en détail.

Rendu overview.txt

Rendu overview.txt

resolution.mp4/resolution.md

Afin que les participants et les organisateurs puissent avoir un aperçu de la méthode de résolution attendu de votre étape, vous devez rédiger un article ou réaliser une vidéo dans lequel vous décrivez ou montrer chaque étape permettant de conduire aux différents flags.

Voir la page dédiée [aux vidéos]({{<relref "resolution">}}) ou [aux write-ups]({{<relref "write-up">}}).

statement.md

L'énoncé de l'étape, tel qu'il sera affiché sur le site, à destination des participants.

Comme l'ensemble des textes importés, vous pouvez utiliser du Markdown pour mettre en forme vos textes.

Rendu statement.txt

files/

Utilisez ce dossier pour y placer les fichiers que vous mettez à disposition des participants.

{{% notice warning %}} Les fichiers binaires, avec lesquels on ne peut pas faire de diff, n'ont pas d'intérêt à être présents directement sur le dépôt : cela consomme inutilement de la place et rend le clonage du dépôt inutilement longue. Vous devez utiliser git-lfs sur le GitLab du CRI pour tous les fichiers binaires contenus dans ce dossier. {{% /notice %}}

Chaque fichier doit avoir une entrée correspondante dans le fichier DIGESTS.txt ; plus d'infos sur [la page DIGESTS.txt]({{<relref "digests">}}).

  • Pas plus 4GB à télécharger par étape (ie. tous les fichiers de cette étape) : 4GB, c'est jusqu'à 5 minutes de téléchargement, c'est vraiment beaucoup lorsqu'on est impatient de faire l'étape.

  • Archives .tar.bz2, .tar.gz, .tar.xz ou .zip lorsque nécessaire. PAS de .rar, ...

  • Compresser (sans tarball, juste via gzip1) les fichiers lorsque c'est utile (memory dump, images BMP, disques, fichiers textes, ...).

    Indiquez dans le fichier DIGESTS.txt les hash du fichier compressé (utilisé par la plateforme pour vérifier que le fichier distribué n'a pas été altéré) et le hash du fichier initial décompressé (pour l'affichage sur la plateforme).

  • Utiliser $(split -b 240M -d BIG_FILE BIG_FILE.) pour uploader les gros fichiers sur owncloud.

    Ces fichiers seront concaténés automatiquement au moment de leur import sur la plateforme.

    Seul le hash du fichier entier est requis dans le fichier DIGESTS.txt.

hints/

Utilisez ce dossier pour y placer les fichiers que vous mettez à disposition, dans le cadre d'indices.

Chaque fichier doit avoir une entrée correspondante dans le fichier DIGESTS.txt ; plus d'infos sur la page [DIGESTS.txt]({{<relref "digests">}}).

De plus, chaque fichier doit également posséder une entrée dans le fichier [challenge.txt]({{<relref "challenge">}}), afin de lui attribuer son coût, titre, ...

ressources/

Rangez dans ce dossier toutes les ressources et scripts que vous avez réalisés l'étape : pour sa construction ou sa résolution, les schémas du SI au premier étape concerné.

Ajoutez éventuellement un README.txt avec les liens des outils externes.

Ce dossier n'a pas pour vocation a être diffusé publiquement.


  1. l'intérêt de gzip est que le serveur web sera capable de distribuer le fichier sans faire apparaître la compression. Voir le module nginx utilisé. ↩︎