RASA - Continuous integration using GitHub Actions

petr7555

Petr Janik

Posted on May 13, 2021

RASA - Continuous integration using GitHub Actions

To be sure, that the new code that we write does not break the behaviour of our assistant, we have written a few tests for happy and unhappy paths. But we still have to run those tests manually every time we make any changes.
To automate this process, we will create a GitHub Action, that will train our assistant and run the tests every time we push any changes to GitHub.

Create a new file in folder .github/workflows/ named continuous-integration.yml.

# .github/workflows/continuous-integration.yml
name: Train and test Rasa

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  training-testing:
    name: Training and Testing
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Rasa Train and Test GitHub Action
        uses: RasaHQ/rasa-train-test-gha@main
        with:
          data_validate: true # Validates domain and data files to check for possible mistakes
          rasa_train: true # Run rasa train
          rasa_test: true # Run rasa test
          test_args: --fail-on-prediction-errors # Fail pipeline when test fails
          test_type: all # Run both 'core' and 'nlu' tests
      - name: Upload model
        if: github.ref == 'refs/heads/master'
        uses: actions/upload-artifact@master
        with:
          name: model
          path: models
      - name: Store test results
        uses: actions/upload-artifact@v2
        with:
          name: test-results
          path: |
            results
            reports

Enter fullscreen mode Exit fullscreen mode

The file reads as follows:

  • This action is run when anyone pushes to master of creates a pull request to master branch.
  • It contains one job, named Training and Testing that is made of several steps.
  • First, the repository is checked-out.
  • Second, a premade Rasa Train and Test GitHub Action is run with a configuration. The configuration options are described in the comments. You can learn about more configuration options in their README.
  • During this step:
    • domain and data files are validated to check for possible mistakes. You can learn more about data validation in the documentation.
    • a model is trained
    • a model is tested
  • At the end we store the trained model as an artifact.
  • We also store test results and reports. The reports contain various metrics of our model, both in .json and .csv format.

I have also simplified requirements.txt to install only rasa package. Its dependencies are resolved automatically.
Contents of requirements.txt:

rasa==2.3.1
Enter fullscreen mode Exit fullscreen mode

You can learn more about GitHub Actions here.

You can learn more about continuous integration for Rasa in the documentation.

In the next chapter, we will look at checkpoints.

Repository for this tutorial:

You can checkout the state of the repository at the end of this tutorial by running:

git clone --branch 12-continuous-integration git@github.com:petr7555/rasa-dev-tutorial.git
Enter fullscreen mode Exit fullscreen mode
💖 💪 🙅 🚩
petr7555
Petr Janik

Posted on May 13, 2021

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

RASA - Session persistence
rasa RASA - Session persistence

July 28, 2022

RASA - Socket.IO integration
rasa RASA - Socket.IO integration

August 30, 2021

RASA - Google Chat integration
rasa RASA - Google Chat integration

August 9, 2021

RASA - Synonyms
rasa RASA - Synonyms

August 7, 2021