RethinkDB: 4. GitHub Actions

Cette documentation fait partie du guide GitHub Actions & GitLab CI. Consultez le guide complet ici : Lancez un véritable service RethinkDB depuis votre pipeline GitHub Actions ou GitLab CI, exécutez vos tests dessus, puis supprimez-le automatiquement.

Bienvenue sur la documentation de Stackhero

Stackhero propose un service RethinkDB cloud prêt à l'emploi, conçu pour offrir fiabilité et simplicité d'utilisation. Vous bénéficiez de :

  • Mises à jour fluides en un clic
  • Performance élevée et sécurité renforcée sur votre propre infrastructure privée et dédiée

Démarrez rapidement : vous pouvez tester l'hébergement cloud RethinkDB de Stackhero en quelques minutes seulement. Stackhero s'occupe de l'installation et de la gestion, vous permettant ainsi de vous concentrer sur le développement de votre application.

Pour commencer, enregistrez le contenu suivant dans .github/workflows/ci.yml. Désormais, chaque push et pull request lancera des tests sur une vraie instance RethinkDB.

name: CI avec RethinkDB

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    env:
      STACKHERO_TOKEN: ${{ secrets.STACKHERO_TOKEN }}
      STACK_NAME: ci-rethinkdb-${{ github.run_id }}-${{ github.run_attempt }}
      INSTANCE: "10G"   # Modifiez si besoin (voir étape 3)
      REGION: europe
    steps:
      - uses: actions/checkout@v4

      - name: Installer le Stackhero CLI et le client
        run: |
          curl -fsSL https://www.stackhero.io/install.sh | sh
          apt-get update && apt-get install -y --no-install-recommends jq curl netcat-openbsd

      - name: Créer le service RethinkDB
        run: |
          set -euo pipefail
          STACK_ID=$(stackhero --format=script stack-create --name="$STACK_NAME")
          echo "STACK_ID=$STACK_ID" >> "$GITHUB_ENV"
          SERVICE_ID=$(stackhero --format=script service-add \
            --stack="$STACK_ID" \
            --service-store="rethinkdb" \
            --instance="$INSTANCE" \
            --region="$REGION")
          echo "SERVICE_ID=$SERVICE_ID" >> "$GITHUB_ENV"
          stackhero service-wait-for --service="$SERVICE_ID"

      - name: Exécuter les tests sur RethinkDB
        run: |
          set -euo pipefail
          config=$(stackhero service-configuration-get --service="$SERVICE_ID" --format=json)
          host=$(echo "$config" | jq -r '.configuration.domain')
          # Open a TCP connection to the driver port.
          nc -z -w 5 "$host" 28015
          echo "✅ RethinkDB est accessible depuis la CI."
          # Vous pouvez lancer votre propre suite de tests ici avec les identifiants ci-dessus ...

      - name: Nettoyage (toujours, même en cas d'échec)
        if: always()
        run: |
          if [ -n "${SERVICE_ID:-}" ]; then
            stackhero service-delete --service="$SERVICE_ID" --confirm
            stackhero service-wait-for --service="$SERVICE_ID"
          fi
          if [ -n "${STACK_ID:-}" ]; then
            stackhero stack-delete --stack="$STACK_ID" --confirm
          fi

L'étape de nettoyage utilise if: always() pour s'assurer qu'elle s'exécute dans tous les cas, garantissant la suppression de votre instance RethinkDB et évitant toute facturation pour des ressources inutilisées.