GitHub
Utilisez Dropstone dans les problèmes et les demandes de fusion GitHub.
Dropstone s'intègre à votre flux de travail GitHub. Mentionnez /dropstone dans n'importe quel commentaire et Dropstone exécutera la tâche dans votre exécuteur GitHub Actions.
Fonctionnalités
- Trier les problèmes : Demandez à Dropstone d'examiner un problème et de vous l'expliquer.
- Corriger et implémenter : Demandez à Dropstone de corriger un problème ou d'implémenter une fonctionnalité. Il travaillera dans une nouvelle branche et soumettra une PR avec tous les changements.
- Sécurisé : Dropstone s'exécute dans les exécuteurs de GitHub.
Installation
Exécutez la commande suivante dans un projet qui se trouve dans un dépôt GitHub :
dropstone github install
Cela vous guidera dans l'installation de l'application GitHub, la création du flux de travail et la configuration des secrets.
Configuration manuelle
Ou vous pouvez le configurer manuellement.
-
Installez l'application GitHub
Rendez-vous sur github.com/apps/dropstone-agent. Assurez-vous qu'elle est installée sur le dépôt cible.
-
Ajoutez le flux de travail
Ajoutez le fichier de flux de travail suivant à
.github/workflows/dropstone.ymldans votre dépôt. Assurez-vous de définir lemodelapproprié et les clés API requises dansenv.name: dropstone on: issue_comment: types: [created] pull_request_review_comment: types: [created] jobs: dropstone: if: contains(github.event.comment.body, '/dropstone') runs-on: ubuntu-latest permissions: id-token: write steps: - name: Checkout repository uses: actions/checkout@v6 with: fetch-depth: 1 persist-credentials: false - name: Run Dropstone uses: blankline-org/dropstone-cli/github@latest env: DROPSTONE_API_KEY: ${{ secrets.DROPSTONE_API_KEY }} with: model: dropstone/dropstone-pro # share: true # github_token: xxxx -
Stockez votre clé API dans les secrets du dépôt
Dans les Paramètres de votre organisation ou dépôt, développez Secrets and variables sur la gauche et sélectionnez Actions. Ajoutez
DROPSTONE_API_KEYcomme nouveau secret du dépôt.
Configuration
-
model: Le niveau Dropstone à utiliser. L'un dedropstone/dropstone-fast,dropstone/dropstone-pro, oudropstone/dropstone-heavy. C'est obligatoire. -
agent: L'agent à utiliser. Doit être un agent principal. Revient àdefault_agentde la configuration ou"build"s'il n'est pas trouvé. -
share: Indique s'il faut partager la session Dropstone. Par défaut true pour les dépôts publics. -
prompt: Invite personnalisée optionnelle pour remplacer le comportement par défaut. Utilisez ceci pour personnaliser la façon dont Dropstone traite les demandes. -
token: Jeton d'accès GitHub optionnel pour effectuer des opérations telles que la création de commentaires, la validation des modifications et l'ouverture de demandes de fusion. Par défaut, Dropstone utilise le jeton d'accès à l'installation de l'application GitHub Dropstone, de sorte que les validations, les commentaires et les demandes de fusion apparaissent comme provenant de l'application.Vous pouvez également utiliser le jeton
GITHUB_TOKENintégré de l'exécuteur GitHub Actions sans installer l'application GitHub Dropstone. Assurez-vous simplement d'accorder les autorisations requises dans votre flux de travail :permissions: id-token: write contents: write pull-requests: write issues: writeVous pouvez également utiliser des jetons d'accès personnel (PAT) si vous le préférez.
Événements pris en charge
Dropstone peut être déclenché par les événements GitHub suivants :
| Type d'événement | Déclenché par | Détails |
|---|---|---|
issue_comment | Commentaire sur un problème ou une PR | Mentionnez /dropstone dans votre commentaire. Dropstone lit le contexte et peut créer des branches, ouvrir des PR ou répondre. |
pull_request_review_comment | Commentaire sur des lignes de code spécifiques dans une PR | Mentionnez /dropstone lors de l'examen du code. Dropstone reçoit le chemin du fichier, les numéros de ligne et le contexte de diff. |
issues | Problème ouvert ou modifié | Déclenchez automatiquement Dropstone lorsque des problèmes sont créés ou modifiés. Nécessite une entrée prompt. |
pull_request | PR ouverte ou mise à jour | Déclenchez automatiquement Dropstone lorsque les PR sont ouvertes, synchronisées ou réouvertes. Utile pour les examens automatisés. |
schedule | Calendrier basé sur cron | Exécutez Dropstone selon un calendrier. Nécessite une entrée prompt. La sortie va aux journaux et aux PR (pas de problème pour commenter). |
workflow_dispatch | Déclenchement manuel depuis l'interface GitHub | Déclenchez Dropstone à la demande via l'onglet Actions. Nécessite une entrée prompt. La sortie va aux journaux et aux PR. |
Exemple de calendrier
Exécutez Dropstone selon un calendrier pour effectuer des tâches automatisées :
name: Scheduled Dropstone Task
on:
schedule:
- cron: "0 9 * * 1" # Every Monday at 9am UTC
jobs:
dropstone:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
pull-requests: write
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Run Dropstone
uses: blankline-org/dropstone-cli/github@latest
env:
DROPSTONE_API_KEY: ${{ secrets.DROPSTONE_API_KEY }}
with:
model: dropstone/dropstone-pro
prompt: |
Review the codebase for any TODO comments and create a summary.
If you find issues worth addressing, open an issue to track them.
Pour les événements planifiés, l'entrée prompt est obligatoire car il n'y a pas de commentaire d'où extraire les instructions. Les flux de travail planifiés s'exécutent sans contexte utilisateur pour vérifier les autorisations, donc le flux de travail doit accorder contents: write et pull-requests: write si vous vous attendez à ce que Dropstone crée des branches ou des PR.
Exemple de demande de fusion
Examinez automatiquement les PR lorsqu'elles sont ouvertes ou mises à jour :
name: dropstone-review
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
jobs:
review:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
pull-requests: read
issues: read
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- uses: blankline-org/dropstone-cli/github@latest
env:
DROPSTONE_API_KEY: ${{ secrets.DROPSTONE_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
model: dropstone/dropstone-pro
use_github_token: true
prompt: |
Review this pull request:
- Check for code quality issues
- Look for potential bugs
- Suggest improvements
Pour les événements pull_request, si aucun prompt n'est fourni, Dropstone utilise par défaut l'examen de la demande de fusion.
Exemple de triage des problèmes
Triez automatiquement les nouveaux problèmes. Cet exemple filtre les comptes de plus de 30 jours pour réduire le spam :
name: Issue Triage
on:
issues:
types: [opened]
jobs:
triage:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
pull-requests: write
issues: write
steps:
- name: Check account age
id: check
uses: actions/github-script@v7
with:
script: |
const user = await github.rest.users.getByUsername({
username: context.payload.issue.user.login
});
const created = new Date(user.data.created_at);
const days = (Date.now() - created) / (1000 * 60 * 60 * 24);
return days >= 30;
result-encoding: string
- uses: actions/checkout@v6
if: steps.check.outputs.result == 'true'
with:
persist-credentials: false
- uses: blankline-org/dropstone-cli/github@latest
if: steps.check.outputs.result == 'true'
env:
DROPSTONE_API_KEY: ${{ secrets.DROPSTONE_API_KEY }}
with:
model: dropstone/dropstone-pro
prompt: |
Review this issue. If there's a clear fix or relevant docs:
- Provide documentation links
- Add error handling guidance for code examples
Otherwise, do not comment.
Pour les événements issues, l'entrée prompt est obligatoire car il n'y a pas de commentaire d'où extraire les instructions.
Invites personnalisées
Remplacez l'invite par défaut pour personnaliser le comportement de Dropstone pour votre flux de travail.
- uses: blankline-org/dropstone-cli/github@latest
with:
model: dropstone/dropstone-pro
prompt: |
Review this pull request:
- Check for code quality issues
- Look for potential bugs
- Suggest improvements
Ceci est utile pour appliquer des critères d'examen spécifiques, des normes de codage ou des domaines d'intérêt pertinents pour votre projet.
Exemples
Voici quelques exemples de la façon dont vous pouvez utiliser Dropstone dans GitHub.
-
Expliquer un problème
Ajoutez ce commentaire dans un problème GitHub.
/dropstone explain this issueDropstone lira l'ensemble du fil, y compris tous les commentaires, et répondra avec une explication claire.
-
Corriger un problème
Dans un problème GitHub, dites :
/dropstone fix thisEt Dropstone créera une nouvelle branche, implémentera les modifications et ouvrira une PR avec les modifications.
-
Examiner les PR et apporter des modifications
Laissez le commentaire suivant sur une PR GitHub.
/dropstone delete the attachment from S3 when the note is removedDropstone implémentera la modification demandée et la validera dans la même PR.
-
Examiner des lignes de code spécifiques
Laissez un commentaire directement sur les lignes de code dans l'onglet "Files" de la PR. Dropstone détecte automatiquement le fichier, les numéros de ligne et le contexte de diff pour fournir des réponses précises.
[Comment on specific lines in Files tab] /dropstone add error handling hereLors du commentaire sur des lignes spécifiques, Dropstone reçoit :
- Le fichier exact en cours d'examen
- Les lignes de code spécifiques
- Le contexte de diff environnant
- Les informations de numéro de ligne
Cela permet des demandes plus ciblées sans avoir besoin de spécifier manuellement les chemins de fichiers ou les numéros de ligne.