Terraform-aws-github-runner: Automatisez la création d'un runner hors ligne

CrĂ©Ă© le 6 fĂ©vr. 2021  Â·  11Commentaires  Â·  Source: philips-labs/terraform-aws-github-runner

L'approche actuelle exige que nous ayons toujours un coureur hors ligne enregistré. Ces coureurs hors ligne sont supprimés par github chaque 60 jours. Par conséquent, il serait pratique d'automatiser le processus pour garder 1 coureur hors ligne afin que nous puissions revenir à 0.

Direction potentielle de la solution

S'inscrire via l'instance ED2

Utilisez le mĂȘme mĂ©canisme que nous utilisons pour lancer des coureurs avec un lambda supplĂ©mentaire qui n'exĂ©cutent que les donnĂ©es utilisateur jusqu'Ă  l'Ă©tape de configuration. Et assurez-vous Ă©galement que l'instance ec2 est retirĂ©e

Inverser le processus de configuration de github Egineer

Créez une lamda qui utilise des appels http github basés sur l'ingénierie inverse, voir https://github.com/actions/runner/issues/558

Exécutez la configuration dans un lambda

Créer un lambda qui peut exécuter la configuration via une couche lambda

enhancement help wanted

Commentaire le plus utile

@npalm J'ai compris la plupart de la logique, des URL, etc. impliquĂ©es dans l'enregistrement d'un coureur. Je prĂ©vois de crĂ©er un module python pour gĂ©rer cela en utilisant python 3x et des requĂȘtes. Ce sera probablement ce week-end quand je serai en congĂ©.

Si vous prĂ©fĂ©rez l'implĂ©menter vous-mĂȘme, je peux partager mes notes que j'ai rassemblĂ©es sur le processus auparavant.

HonnĂȘtement, je pense que je veux passer un peu plus de temps Ă  retracer l'ensemble du processus, afin qu'il puisse Ă©galement tirer et exĂ©cuter des flux de travail, mais la nouvelle inscription des coureurs Ă©tait un must pour moi.

Fondamentalement, le processus que j'ai trouvé fonctionne:
Obtenez un jeton de coureur via l'API Ă  l'aide de pat ou de creds d'application
Publiez un jeton sur un point de terminaison secret, recevez des données json avec un nouveau point de terminaison secret et un jwt
Utilisez jwt pour vous authentifier via l'en-tĂȘte auth bearer, en utilisant le point de terminaison nouvellement rĂ©vĂ©lĂ©, pouvez interroger les «agents» existants (comme ils sont appelĂ©s dans l'API), en ajouter un nouveau ou en mettre Ă  jour un existant.

Il y a Ă©videmment plus de dĂ©tails impliquĂ©s, y compris la crĂ©ation d'une clĂ© RSA et un tas d'en-tĂȘtes. Je n'ai pas encore cherchĂ© plus loin que l'inscription ...

Tous les 11 commentaires

@npalm J'ai compris la plupart de la logique, des URL, etc. impliquĂ©es dans l'enregistrement d'un coureur. Je prĂ©vois de crĂ©er un module python pour gĂ©rer cela en utilisant python 3x et des requĂȘtes. Ce sera probablement ce week-end quand je serai en congĂ©.

Si vous prĂ©fĂ©rez l'implĂ©menter vous-mĂȘme, je peux partager mes notes que j'ai rassemblĂ©es sur le processus auparavant.

HonnĂȘtement, je pense que je veux passer un peu plus de temps Ă  retracer l'ensemble du processus, afin qu'il puisse Ă©galement tirer et exĂ©cuter des flux de travail, mais la nouvelle inscription des coureurs Ă©tait un must pour moi.

Fondamentalement, le processus que j'ai trouvé fonctionne:
Obtenez un jeton de coureur via l'API Ă  l'aide de pat ou de creds d'application
Publiez un jeton sur un point de terminaison secret, recevez des données json avec un nouveau point de terminaison secret et un jwt
Utilisez jwt pour vous authentifier via l'en-tĂȘte auth bearer, en utilisant le point de terminaison nouvellement rĂ©vĂ©lĂ©, pouvez interroger les «agents» existants (comme ils sont appelĂ©s dans l'API), en ajouter un nouveau ou en mettre Ă  jour un existant.

Il y a Ă©videmment plus de dĂ©tails impliquĂ©s, y compris la crĂ©ation d'une clĂ© RSA et un tas d'en-tĂȘtes. Je n'ai pas encore cherchĂ© plus loin que l'inscription ...

@gertjanmaas Je pense que vous aimerez le commentaire ci-dessus

@ miked63017 faites-moi savoir si vous n'y arrivez pas. Nous recherchons Ă©galement ceci afin que j'aie un peu de temps pour y travailler.

Edit: Je ne sais pas si vous avez vu, mais ceci est nouvellement publié pour Python: https://github.blog/2020-12-18-learn-about-ghapi-a-new-third-party-python-client-for- le-github-api /

@npalm @mcaulifn voici un lien, c'est encore assez bĂȘta et pas bien documentĂ©, mais je suppose que nous pouvons dire la mĂȘme chose Ă  propos de l'API runners / actions en gĂ©nĂ©ral :-)

https://github.com/miked63017/pyghrunner

@mcaulifn dans RE pour le module ghapi, cela a l'air cool, mais la plupart de ces appels sont des éléments non documentés de l'API, et probablement sujets à changement.

Dans l'ensemble, cela devrait fonctionner. Envisagez-vous de l'ajouter Ă  ce repo?

@gertjanmaas une opinion?

@npalm @mcaulifn Je ne sais pas si j'ai le contexte pour l'ajouter ici Ă  ce dĂ©pĂŽt, je travaille personnellement dans un opĂ©rateur GKE pour faire de mĂȘme, mais j'ai pensĂ© que cela pourrait aider d'autres Ă  partager du code simple Ă  intĂ©grer Ă  d'autres projets. Semble ĂȘtre une demande assez courante pour cette fonctionnalitĂ©. Si vous souhaitez que je tente d'ajouter ici via un PR, je peux peut-ĂȘtre passer du temps ce week-end.

J'ai rapidement parcouru le code python et cela semble confirmer ce que j'ai vu lorsque j'ai essayĂ© de le faire de l'ingĂ©nierie inverse il y a quelque temps. Ce serait formidable si cela pouvait ĂȘtre mis en Ɠuvre ici. Se fatiguer d'ajouter des coureurs hors ligne Ă  la main: P

@gertjanmaas oĂč exĂ©cutons simplement les quelques mĂ©thodes pĂ©riodiquement, ou en rĂ©ponse Ă  un Ă©vĂ©nement, et Ă©crasons le "coureur virtuel" prĂ©cĂ©dent. Nous l'utilisons simplement comme un espace rĂ©servĂ© pour que les tĂąches soient mises en file d'attente plutĂŽt qu'Ă©chouĂ©es car aucun coureur avec des Ă©tiquettes n'existe. Ensuite, nous regardons les dĂ©tails des tĂąches et faisons tourner le runner appropriĂ©, avec les Ă©tiquettes appropriĂ©es si nĂ©cessaire, et avec le drapeau --once .

J'ai encore des projets d'enquĂȘtes supplĂ©mentaires sur la crĂ©ation d'un runner personnalisĂ© complet, probablement Ă©crit en python, qui peut ensuite ĂȘtre intĂ©grĂ© Ă  d'autres endroits. Cela n'a tout simplement pas Ă©tĂ© une prioritĂ© pour moi.

Que diriez-vous de la désinscription des coureurs?

Le coureur hors ligne doit ĂȘtre recrĂ©Ă© tous les 30 jours, afin de ne jamais avoir aucun coureur dans l'organisation.

Cela devrait Ă©galement ĂȘtre automatisĂ©.

Cette page vous a été utile?
0 / 5 - 0 notes