Restrictions lorsque Dependabot déclenche des événements
Dependabot est en mesure de déclencher des workflows GitHub Actions sur ses demandes de tirage requêtes et commentaires ; toutefois, certains événements sont traités différemment.
Pour les flux de travail initiés par Dependabot (github.actor == 'dependabot[bot]') à l’aide de pull_request, pull_request_review, pull_request_review_comment, push, create, deployment, et des événements deployment_status, ces restrictions s’appliquent :
-
`GITHUB_TOKEN` dispose d’autorisations en lecture seule par défaut. - Les secrets sont remplis à partir de Dependabot secrets. GitHub Actions les secrets ne sont pas disponibles.
Pour les flux de travail initiés par Dependabot (github.actor == 'dependabot[bot]') à l’aide de l’événement pull_request_target, si la référence de base de la pull request a été créée par Dependabot (github.event.pull_request.user.login == 'dependabot[bot]'), le GITHUB_TOKEN sera en lecture seule et les secrets ne seront pas disponibles.
Ces restrictions s'appliquent même si le workflow est relancé par un autre acteur.
Pour plus d'informations, veuillez consulter la section Protéger vos workflows et GitHub Actions : prévenir les pwn requests.
Configuration requise pour l’utilisation de Dependabot avec des exécuteurs auto-hébergés
Pour générer Dependabot updates à l’aide d’exécuteurs auto-hébergés, vous devez configurer correctement votre système, votre réseau et vos certificats.
Configuration système requise
Les machines virtuelles que vous utilisez pour les exécuteurs Dependabot doivent toutes respecter la configuration requise pour les exécuteurs auto-hébergés. Par ailleurs, elles doivent satisfaire les exigences suivantes.
-
Système d’exploitation Linux
-
Architecture x64
-
Docker installé avec un accès pour les utilisateurs des exécuteurs :
- Nous vous recommandons d’installer Docker en mode sans racine et de configurer les exécuteurs de sorte qu’ils puissent accéder à Docker sans privilèges
root. - Vous pouvez aussi installer Docker et accorder aux utilisateurs des exécuteurs des privilèges accrus pour exécuter Docker.
- Nous vous recommandons d’installer Docker en mode sans racine et de configurer les exécuteurs de sorte qu’ils puissent accéder à Docker sans privilèges
Les besoins en processeur et mémoire dépendent du nombre d’exécuteurs simultanés que vous déployez sur une machine virtuelle donnée. Pour indication, nous avons installé avec succès 20 exécuteurs sur un ordinateur à 2 processeurs de 8 Go, mais en fin de compte, vos besoins en processeur et mémoire varieront fortement en fonction des dépôts qui sont mis à jour. Certains écosystèmes demandent plus de ressources que d’autres.
Si vous spécifiez plus de 14 exécuteurs simultanés sur une machine virtuelle, vous devez aussi mettre à jour la configuration /etc/docker/daemon.json Docker pour accroître le nombre de réseaux par défaut que Docker peut créer.
{
"default-address-pools": [
{"base":"10.10.0.0/16","size":24}
]
}
Configuration réseau requise
Les exécuteurs Dependabot nécessitent un accès à l’Internet public, GitHub.com, et aux registres internes qui seront utilisés dans les Dependabot. Pour limiter les risques sur votre réseau interne, vous devez limiter l’accès de la machine virtuelle à votre réseau interne. Cela réduit les risques de dommages que pourraient subir vos systèmes internes si un exécuteur venait à télécharger une dépendance détournée.
Vous devez également autoriser le trafic sortant pour dependabot-actions.githubapp.com éviter que les tâches de Dependabot security updates n'échouent. Pour plus d’informations, consultez « Documentation de référence relative aux runners auto-hébergés ».
Certificate configuration (Configuration du certificat)
Si Dependabot doit interagir avec des registres qui utilisent des certificats auto-signés, ces certificats doivent également être installés sur les exécuteurs auto-hébergés qui exécutent les tâches Dependabot. Cette sécurité renforce la connexion. Vous devez configurer Node.js pour qu’il utilise le certificat, car la plupart des actions sont écrites en JavaScript et exécutées avec Node.js, qui n’utilise pas le magasin de certificats du système d’exploitation.