Annonce des actions PlanetScale GitHub

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.

Votre base de données peut-elle se déployer, revenir en arrière et se surveiller elle-même ? Sinon, vous avez besoin de PlanetScale.

Leave a Reply

Your email address will not be published. Required fields are marked *

Most Popular

Get The Latest Updates

Subscribe To Our Weekly Newsletter

No spam, notifications only about new products, updates.

Tag

Lire

Articles Similaires