devops/site/content/create-repo.md
Azmog 8154786e9b Add initial documentation for create_repo.sh and site structure
- Created example Markdown document with basic formatting and code block.
- Added configuration file for site settings including base URL and author.
- Introduced index page with project overview and links to documentation.
- Implemented detailed documentation for create_repo.sh, including usage, prerequisites, and response codes.
- Added custom 404 error page for better user experience.
- Developed HTML structure for create_repo.sh documentation with styling and layout.
- Created main index page with project description and links to relevant resources.
- Included robots.txt and sitemap.xml for search engine optimization.
- Established CSS styles for consistent design across the site.
- Set up base HTML template for consistent layout and navigation.
- Created templates for index and page rendering to streamline content management.
2026-06-15 17:01:11 +02:00

72 lines
2.1 KiB
Markdown

+++
title = "create_repo.sh"
description = "Créer un dépôt sur la forge via l'API REST, en passant le nom et la description en arguments."
weight = 1
+++
Script Bash qui **crée un dépôt sur la forge** (`forge.gwenaelremond.fr`) en
appelant son API REST.
## À quoi ça sert
Plutôt que de retaper une longue commande `curl` à chaque fois, le script prend
le **nom** et la **description** du dépôt en arguments, et lit le **token
d'authentification** dans une variable d'environnement (pour ne jamais l'écrire
en dur dans le code).
## Prérequis
- `curl` (installé par défaut sur macOS et Linux)
- Un **token d'accès** à la forge (Settings → Applications → Generate New Token)
## Utilisation
```bash
# 1. Définir le token (une seule fois par session de terminal)
export FORGE_TOKEN="ton_token"
# 2. Lancer le script
./create_repo.sh <nom_du_repo> ["description"]
```
### Exemple
```bash
export FORGE_TOKEN="b103fb7f..."
./create_repo.sh exercice "Adam"
```
Cela crée le dépôt **exercice** avec la description **Adam**.
## Détail du fonctionnement
| Partie du script | Rôle |
|------------------|------|
| `set -euo pipefail` | Arrête le script à la moindre erreur (sécurité) |
| Vérification de `FORGE_TOKEN` | Refuse de tourner si le token n'est pas défini |
| `REPO_NAME` / `REPO_DESC` | Récupère les arguments passés en ligne de commande |
| `curl -X POST .../api/v1/user/repos` | Envoie la requête de création à l'API |
### La requête envoyée
```bash
curl -X POST "https://forge.gwenaelremond.fr/api/v1/user/repos" \
-H "Authorization: token $FORGE_TOKEN" \
-H "Content-Type: application/json" \
-H "accept: application/json" \
-d '{ "name": "exercice", "description": "Adam" }'
```
## Codes de réponse possibles
| Code HTTP | Signification |
|-----------|---------------|
| `201` | Dépôt créé avec succès |
| `409` | Un dépôt portant ce nom existe déjà |
| `401` | Token invalide ou manquant |
## Bonne pratique de sécurité
⚠️ **Ne jamais écrire le token en clair** dans le script ni le commiter dans Git.
Si un token a été exposé, le **révoquer** et en générer un nouveau dans les
paramètres de la forge.