Aller au contenu
Démarrage rapide (local)

Démarrage rapide (local)

Développement local uniquement, pas pour la production
Cette page configure github-sts pour la rapidité de mise en place, pas pour la sécurité. TLS est désactivé et la protection contre le rejeu ne survit pas à un redémarrage. Voir comment déployer en production →

Vous avez déjà une GitHub App issue de Configurer une GitHub App et Installer l’App ? Ceci récupère l’image publiée et l’exécute sur votre propre machine avec des réglages choisis pour la rapidité de mise en place, pas pour un usage en production, afin d’avoir le serveur en service et vérifié en quelques minutes.

Prérequis

  • Docker (ou un autre runtime de conteneurs compatible OCI)
  • Une GitHub App que vous pouvez installer sur une organisation de test
  • La clé privée de l’App au format .pem

Configuration

# LOCAL DEVELOPMENT ONLY, NOT FOR PRODUCTION.
export GITHUBSTS_APP_DEFAULT_APP_ID="123456"
export GITHUBSTS_APP_DEFAULT_PRIVATE_KEY="$(cat /path/to/private-key.pem)"
export GITHUBSTS_OIDC_ALLOWED_ISSUERS="https://token.actions.githubusercontent.com"
export GITHUBSTS_OIDC_REQUIRED_AUDIENCE="https://sts.example.com"
export GITHUBSTS_BUNDLE_ENFORCEMENT="optional"

Démarrer le serveur

docker run -d --name github-sts-local -p 8080:8080 \
  -e GITHUBSTS_APP_DEFAULT_APP_ID \
  -e GITHUBSTS_APP_DEFAULT_PRIVATE_KEY \
  -e GITHUBSTS_OIDC_ALLOWED_ISSUERS \
  -e GITHUBSTS_OIDC_REQUIRED_AUDIENCE \
  -e GITHUBSTS_BUNDLE_ENFORCEMENT \
  ghcr.io/depthmark/github-sts:latest

Vous construisez depuis les sources plutôt que d’utiliser l’image publiée ? Exécutez docker build -t github-sts:local . à la racine du dépôt, puis remplacez le nom d’image dans la commande docker run ci-dessus.

Vérifier qu’il est en service

curl -s http://127.0.0.1:8080/health
# Inclut la vivacité, la posture de sécurité et l'état des bundles

Consultez les journaux :

docker logs github-sts-local

Sans GITHUBSTS_JTI_BACKEND défini, le serveur utilise par défaut le backend JTI en mémoire, et les journaux portent un avertissement à chaque démarrage : in-memory JTI cache does not survive restarts and is not shared across replicas; consider redis for production. Cet avertissement n’est pas du bruit : la protection contre le rejeu est réinitialisée à chaque redémarrage du conteneur.

Une fois terminé, arrêtez et supprimez le conteneur :

docker rm -f github-sts-local

Suite

Cette page ne fait que démarrer le serveur : elle n’échange pas de jeton, car cela nécessite un véritable jeton OIDC provenant d’un fournisseur d’identité, que ce démarrage rapide n’émet pas. Voir Générer un jeton pour savoir comment demander un jeton OIDC depuis un workflow GitHub Actions et l’échanger ici.

Ce conteneur s’exécute aussi sans TLS, sans Redis et sans autoscaling ; c’est fait pour essayer github-sts, pas pour l’exploiter. Pour un déploiement réel, voir le démarrage rapide du chart Helm et Kubernetes.