Je n’avais jamais eu l’occasion de jouer avec Github Actions. J’ai donc crée une petite application qui va récupérer quotidiennement nos statistiques de suivi de la communauté Ladies of Code Paris.

Elle va consommer différentes API dans le but de tout féderer dans un tableau de suivi, pratique à consulter pour l’équipe coorganisatrice.

L’architecture de l’application est plutôt simple.

Création de la fonction Netlify

Il est possible d’héberger une fonction. On exploite une technologie Serverless: on ne sait pas du tout dans quel contexte cette fonction va s’exécuter, ni les caractérstiques du serveur qui l’héberge.

Création du cronjob avec Github Actions

  • Il est possible de créer simplement un workflow via l’interface de Github.
name: refresh-stats
on:
  schedule:
    - cron: '*/15 * * * *'
jobs:
  cron:
    runs-on: ubuntu-latest
    steps:
      - name: Refresh members count
        run: |
          curl --request GET \
          --url 'https://meetup-watchtower.netlify.app/.netlify/functions/members_count'
  • Il y a possibilité de définir des variables d’environnements qui seront exploitables par les workflows Github.

Troubleshooting

Il faut exécuter vercel dev à la racine du projet


 > node_modules/mongodb/lib/encrypter.js:15:40: error: Could not resolve "mongodb-client-encryption" (mark it as external to exclude it from the bundle)
    15 │ const mongodbClientEncryption = require('mongodb-client-encryption');
       ╵                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~

J’ai eu l’erreur suivante après avoir installé Mongodb, lancé le client.

Variables d’environnement

  • En local, créer un simple fichier .env
  • Pendant le build, créer les variables d’environnement via l’interface de Netlify.