Avec notre flux de travail de création de branches de base de données et de déploiement de requêtes, PlanetScale a été conçu avec les pipelines DevOps à l’esprit. Cependant, quiconque travaille dans DevOps depuis suffisamment longtemps sait qu’il s’agit d’une pratique très “choisissez votre propre aventure”. Bien que des directives existent, de nombreuses entreprises construisent leurs pipelines très différemment selon les besoins du produit. L’intégration de PlanetScale dans ce flux ne fait pas exception. Aujourd’hui, nous abaissons la barrière d’entrée en publiant la première vague d’actions PlanetScale GitHub officielles que vous pouvez utiliser dans vos projets.
Avant de couvrir les actions disponibles, il vaut la peine de prendre un moment pour comprendre ce que Actions GitHub est. GitHub Actions vous permet d’automatiser les processus directement dans votre référentiel en définissant des tâches dans YAML qui effectueront des opérations en fonction des déclencheurs que vous définissez. Ces fichiers YAML sont appelés “flux de travail”, tandis que les opérations individuelles qu’ils contiennent sont appelées “étapes”. Les développeurs sont libres d’écrire manuellement leurs propres étapes à l’aide de bash ou de PowerShell, ou ils peuvent rechercher sur GitHub Actions Marketplace une étape prédéfinie qui effectue les opérations dont ils ont besoin sans avoir à créer la fonctionnalité eux-mêmes.
Nous avons créé quatre actions GitHub qui effectueront des opérations courantes sur votre base de données PlanetScale. Nous les avons également publiés sur le Place de marché des actions GitHubce qui vous permet de les insérer plus facilement dans votre application.
Lorsqu’elles sont utilisées avec les bons déclencheurs, ces actions peuvent être combinées de manière intéressante pour obtenir l’automatisation souhaitée. Prenons deux exemples.
Créer une nouvelle branche de base de données lorsqu’une branche GitHub est créée
Si votre équipe ouvre une nouvelle branche de base de données chaque fois qu’une branche de fonctionnalité est créée dans votre référentiel GitHub, vous pouvez combiner les create-branch-action
et create-branch-password-action
dans un flux de travail qui se déclenche lorsqu’une nouvelle branche est ouverte pour faire exactement cela. Le YAML suivant se déclenchera lors de la création d’une branche GitHub, et il créera une branche du recipes_db
base de données qui porte le même nom que la branche ouverte dans GitHub.
name: Create a branch
on: create
jobs:
create_a_branch:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v3
- name: Extract branch name
shell: bash
run: echo "branch=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_OUTPUT
id: extract_branch
- name: Create a branch
uses: planetscale/create-branch-action@v1
id: create_branch
with:
org_name: my_org
database_name: recipes_db
branch_name: ${{ steps.extract_branch.outputs.branch }}
from: main
env:
PLANETSCALE_SERVICE_TOKEN_ID: ${{ secrets.PLANETSCALE_SERVICE_TOKEN_ID }}
PLANETSCALE_SERVICE_TOKEN: ${{ secrets.PLANETSCALE_SERVICE_TOKEN }}
- name: Create a password
uses: planetscale/create-branch-password-action@v1
id: create_branch_password
with:
org_name: my_org
database_name: recipes_db
branch_name: ${{ steps.extract_branch.outputs.branch }}
name: 'pass_${{ steps.extract_branch.outputs.branch }}'
env:
PLANETSCALE_SERVICE_TOKEN_ID: ${{ secrets.PLANETSCALE_SERVICE_TOKEN_ID }}
PLANETSCALE_SERVICE_TOKEN: ${{ secrets.PLANETSCALE_SERVICE_TOKEN }}
- name: Get the new credentials
run: |
echo "Hostname: ${{ steps.create_password.outputs.hostname }}"
echo "Username: ${{ steps.create_password.outputs.username }}"
echo "Password: ${{ steps.create_password.outputs.password }}"
Fusion des modifications de la base de données lors de la fermeture d’une demande d’extraction
Une autre utilisation courante des branches consiste à fusionner les modifications de schéma de base de données d’une branche à une autre (par exemple, une branche intermédiaire vers une branche de production) lorsqu’une demande d’extraction se ferme. L’exemple de flux de travail suivant utilisera create-deploy-request-action
et deploy-deploy-request-action
pour fusionner automatiquement les modifications entre les branches de base de données dont les noms correspondent à leurs homologues GitHub correspondants.
name: Merge schema changes
on:
pull_request:
types: [closed]
jobs:
merge_changes:
runs-on: ubuntu-latest
if: github.event.pull_request.merged == true
steps:
- name: checkout
uses: actions/checkout@v3
- name: Create a deploy request
uses: planetscale/create-deploy-request-action@v1
id: create_deploy_request
with:
org_name: bmorrison-ps
database_name: recipes_db
branch_name: ${{ github.event.pull_request.head.ref }}
env:
PLANETSCALE_SERVICE_TOKEN_ID: ${{ secrets.PLANETSCALE_SERVICE_TOKEN_ID }}
PLANETSCALE_SERVICE_TOKEN: ${{ secrets.PLANETSCALE_SERVICE_TOKEN }}
- name: Deploy a deploy request
uses: planetscale/deploy-deploy-request-action@v1
with:
org_name: bmorrison-ps
database_name: recipes_db
number: ${{ steps.create_deploy_request.outputs.number }}
wait: true
env:
PLANETSCALE_SERVICE_TOKEN_ID: ${{ secrets.PLANETSCALE_SERVICE_TOKEN_ID }}
PLANETSCALE_SERVICE_TOKEN: ${{ secrets.PLANETSCALE_SERVICE_TOKEN }}
Il convient de noter que même si ce flux de travail fusionnera effectivement les modifications entre les branches de la base de données dans PlanetScale, il n’envisage pas de déployer la dernière version de votre code d’application. Cela dit, assurez-vous de tester soigneusement le délai entre le déploiement des mises à jour des composants d’application pour éviter tout temps d’arrêt inutile.
Pour commencer à utiliser ces actions, visitez le référentiel de l’action qui vous intéresse pour plus de détails sur la façon de démarrer avec cette action spécifique. Si vous créez vos actions à partir de l’interface GitHub, vous pouvez également utiliser le marché situé sur le côté droit pour rechercher ces actions.
Si vous avez une autre action officielle PlanetScale GitHub que vous aimeriez voir, tweetez-nous @planetscaledata ou poster dans discussion de nous le faire savoir et nous y réfléchirons pour les actions futures.
Nous avons aussi un référentiel avec une collection de scripts qui peuvent être utilisés dans vos propres flux de travail GitHub Actions avec la CLI PlanetScale. Consultez notre article sur l’utilisation de ces scripts pour plus d’informations, y compris plusieurs exemples concrets.