Pré-requis : PAT GitHub, gh CLI, variables d'environnement
prerequisites.RmdAvant de pouvoir construire et déployer un site avec
ofceweb, il faut configurer côté machine quelques éléments
d’authentification GitHub. Ce vignette les passe en revue. Une fois
cette configuration faite, enchaîner avec Construire un site avec
ofceweb.
Vue d’ensemble :
- un PAT (Personal Access Token) GitHub stocké comme variable d’environnement pour que R / git / gh puissent agir en votre nom ;
- l’outil en ligne de commande
gh(GitHub CLI) authentifié viagh auth login, utilisé pour créer et supprimer les secrets de dépôt (notammentSTATICRYPT_PASSWORDpour le chiffrement).
1. Qu’est-ce qu’un PAT GitHub ?
Un Personal Access Token (PAT) est un jeton qui remplace votre mot de passe GitHub pour les opérations programmatiques (API, push HTTPS, workflows). Il est révocable, expirable, et limité à un ensemble explicite de droits (“scopes”).
Deux variétés coexistent sur GitHub :
- Fine-grained PAT (recommandé) : portée limitée à des dépôts précis, permissions très granulaires, expiration obligatoire.
-
Classic PAT : scopes plus larges
(
repo,workflow, …), plus simple à créer, encore très utilisé.
ofceweb utilise deux variables d’environnement :
| Variable | À quoi ça sert |
|---|---|
GITHUB_PAT |
Variable historique lue par usethis, gh,
gitcreds, … pour les appels API GitHub usuels. |
DEPLOY_PAT |
Lue en priorité par site2branch() /
trigger_action() pour pousser sur la branche de déploiement
et dispatcher le workflow ftp_deploy.yml. |
Pourquoi DEPLOY_PAT distinct ? Sur GitHub Actions, le
GITHUB_TOKEN fourni par défaut ne peut pas
déclencher d’autres workflows (workflow dispatch d’un workflow vers un
autre). Un PAT explicite est nécessaire pour cette opération. En local,
vous pouvez très bien mettre la même valeur dans GITHUB_PAT
et DEPLOY_PAT.
2. Créer un PAT
Fine-grained PAT (recommandé)
- Aller sur https://github.com/settings/tokens?type=beta (ou : avatar en haut à droite → Settings → Developer settings → Personal access tokens → Fine-grained tokens).
- Generate new token.
-
Token name : quelque chose de parlant (ex.
ofceweb-deploy). - Expiration : vous pouvez choisir No expiration pour éviter d’avoir à renouveler le token. Sinon, fixez une date et notez-la pour le renouveler à temps.
-
Resource owner : votre compte, ou l’organisation
OFCEsi vous voulez un token valable sur ses dépôts (l’orga doit avoir approuvé les fine-grained PAT — sinon prendre un classic PAT). - Repository access : Only select repositories → cocher les dépôts concernés (le ou les sites à déployer).
-
Repository permissions — minimum requis :
-
Contents : Read and write (push vers
site-deploy/gh-pages). -
Actions : Read and write (dispatcher
ftp_deploy.yml). - Metadata : Read-only (coché automatiquement).
-
Secrets : Read and write (si vous
souhaitez gérer le secret
STATICRYPT_PASSWORDviagh secret setavec ce token).
-
Contents : Read and write (push vers
- Generate token.
- Copier la valeur affichée : elle ne sera plus jamais visible.
Classic PAT (fallback)
Si les fine-grained tokens ne sont pas approuvés par l’organisation, ou si vous voulez un seul token valable partout :
- https://github.com/settings/tokens → Generate new token (classic).
-
Note :
ofceweb-deploy. Expiration : No expiration si vous préférez ne pas avoir à renouveler, sinon une date au choix. - Scopes : cocher
repo(couvre push + lecture) etworkflow(dispatcher un workflow). - Generate token → copier la valeur.
3. Stocker GITHUB_PAT et DEPLOY_PAT dans
l’environnement
Le but : que ces deux variables soient présentes dans toute session R que vous démarrez, sans avoir à les retaper.
Option recommandée : .Renviron utilisateur
.Renviron est lu par R au démarrage. Le fichier
utilisateur vaut pour toutes vos sessions R, indépendamment du
projet.
Depuis R :
usethis::edit_r_environ() # ouvre ~/.RenvironAjouter (sans guillemets, sans espaces autour de =)
:
GITHUB_PAT=ghp_xxxxxxxxxxxxxxxxxxxx
DEPLOY_PAT=ghp_xxxxxxxxxxxxxxxxxxxx
Sauvegarder, redémarrer R (Session → Restart R dans RStudio). Vérifier :
nchar(Sys.getenv("GITHUB_PAT")) # doit être > 0
nchar(Sys.getenv("DEPLOY_PAT"))Ne jamais commiter un .Renviron qui
contient des tokens. Le .Renviron utilisateur
(~/.Renviron) est hors de tout dépôt, donc sûr.
Alternative : keystore OS via gitcreds
site2branch() et trigger_action() retombent
sur le keystore du système (Keychain sur macOS, Credential Manager sur
Windows) si DEPLOY_PAT n’est pas défini :
gitcreds::gitcreds_set() # demande URL + token, écrit dans le keystoreC’est pratique mais moins explicite — privilégier
.Renviron pour ofceweb et garder
gitcreds pour un usage git HTTPS générique.
4. Installer gh (GitHub CLI)
gh est le CLI officiel de GitHub. Il est utilisé pour
gérer les secrets de dépôt (gh secret set /
gh secret delete), notamment pour activer ou désactiver le
chiffrement staticrypt via le secret STATICRYPT_PASSWORD.
C’est un binaire indépendant de R.
macOS
Via Homebrew (recommandé) :
Sans Homebrew : télécharger le .pkg sur https://github.com/cli/cli/releases et l’installer.
Vérifier :
Windows
Au choix :
-
winget (préinstallé sur Windows 11 / Windows 10 récents) :
-
Scoop :
Installeur MSI : télécharger sur https://github.com/cli/cli/releases et exécuter.
Après installation, fermer puis rouvrir le terminal
(et RStudio si lancé) pour que gh soit dans le
PATH. Vérifier :
5. gh auth login
Authentifie gh auprès de GitHub. À faire une fois par
machine.
Réponses recommandées au prompt interactif :
| Question | Réponse |
|---|---|
| What account do you want to log into? | GitHub.com |
| What is your preferred protocol for Git operations? | HTTPS |
| Authenticate Git with your GitHub credentials? | Y (Yes) |
| How would you like to authenticate GitHub CLI? | Login with a web browser (le plus simple) — ou Paste an authentication token si vous voulez réutiliser un PAT existant. |
Si vous choisissez web browser :
-
ghaffiche un code à 8 caractères (ex.ABCD-1234). - Appuyer sur Entrée → le navigateur s’ouvre sur https://github.com/login/device.
- Coller le code, valider, autoriser
gh. - Retour au terminal :
✓ Authentication complete.
Si vous choisissez paste a token : coller un classic PAT
avec les scopes repo, workflow,
read:org (et admin:public_key si vous voulez
aussi qu’gh gère vos clés SSH). Les fine-grained PAT ne
sont pas (encore) acceptés ici de manière fiable — préférer le flux
navigateur si vous n’avez qu’un fine-grained.
Vérifier :
Doit afficher quelque chose comme :
github.com
✓ Logged in to github.com as <vous> (oauth_token)
✓ Git operations for github.com configured to use https protocol.
✓ Token: gho_************************
À ce stade, vous pouvez gérer les secrets de dépôt via
gh secret set et toute la chaîne ofceweb est
opérationnelle.
Récapitulatif
# dans R
usethis::edit_r_environ()
# y coller :
# GITHUB_PAT=ghp_…
# DEPLOY_PAT=ghp_…
# redémarrer R# dans un terminal
brew install gh # macOS
# ou : winget install --id GitHub.cli (Windows)
gh auth login # suivre le prompt, HTTPS + web browser
gh auth status # vérificationEnsuite, voir Construire un site avec
ofceweb pour l’enchaînement setup_site() →
render_site() → deploy_site().