.github/workflows/ci-docs-tests.yml

Summary

Maintainability
Test Coverage
name: Docs Tests
on:
  push:
    branches:
      - main
  pull_request:
    types: [opened, synchronize, labeled]

concurrency:
  group: ci-docs-tests-${{ github.ref }} # branch name
  cancel-in-progress: true

env:
  DEFAULT_PYTHON_VERSION: "3.10"

jobs:
  changes:
    name: Check for file changes
    runs-on: ubuntu-22.04
    outputs:
      docs: ${{ steps.filter.outputs.docs }}
    steps:
      - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c
      - uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50
        id: filter
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          filters: .github/change_filters.yml

  test_documentation:
    name: Test Documentation
    runs-on: ubuntu-22.04
    needs: [changes]
    if: needs.changes.outputs.docs == 'true'

    steps:
      - name: Checkout git repository 🕝
        uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c

      - name: Set up Python ${{ env.DEFAULT_PYTHON_VERSION }} 🐍
        uses: actions/setup-python@57ded4d7d5e986d7296eab16560982c6dd7c923b
        with:
          python-version: ${{ env.DEFAULT_PYTHON_VERSION }}

      - name: Set up Node 12.x 🦙
        uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c
        with:
          node-version: "12.x"

      - name: Read Poetry Version 🔢
        run: |
          echo "POETRY_VERSION=$(scripts/poetry-version.sh)" >> $GITHUB_ENV
        shell: bash

      - name: Install poetry 🦄
        uses: Gr1N/setup-poetry@15821dc8a61bc630db542ae4baf6a7c19a994844 # v8
        with:
          poetry-version: ${{ env.POETRY_VERSION }}

      - name: Load Poetry Cached Libraries ⬇
        id: cache-poetry
        uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8
        with:
          path: .venv
          key: ${{ runner.os }}-poetry-${{ env.POETRY_VERSION }}-${{ env.DEFAULT_PYTHON_VERSION }}-${{ hashFiles('**/poetry.lock') }}-${{ secrets.POETRY_CACHE_VERSION }}
          restore-keys: ${{ runner.os }}-poetry-${{ env.DEFAULT_PYTHON_VERSION }}

      - name: Clear Poetry cache
        if: steps.cache-poetry.outputs.cache-hit == 'true' && contains(github.event.pull_request.labels.*.name, 'tools:clear-poetry-cache-docs-tests')
        run: rm -r .venv

      - name: Create virtual environment
        if: (steps.cache-poetry.outputs.cache-hit != 'true' || contains(github.event.pull_request.labels.*.name, 'tools:clear-poetry-cache-docs-tests'))
        run: python -m venv create .venv

      - name: Set up virtual environment
        if: needs.changes.outputs.docs == 'true'
        run: poetry config virtualenvs.in-project true

      - name: Load Yarn Cached Packages ⬇
        uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8
        with:
          path: docs/node_modules
          key: ${{ runner.os }}-yarn-12.x-${{ hashFiles('docs/yarn.lock') }}
          restore-keys: ${{ runner.os }}-yarn-12.x

      - name: Install Dependencies 📦
        run: |
          sudo apt-get -y install libpq-dev
          make install-full install-docs

      - name: Run Swagger 🕵️‍♀️
        run: |
          npm install -g swagger-cli
          swagger-cli validate docs/static/spec/action-server.yml
          swagger-cli validate docs/static/spec/rasa.yml

      - name: Test Docs 🕸
        run: make test-docs

  documentation_lint:
    name: Documentation Linting Checks
    runs-on: ubuntu-22.04
    needs: [changes]
    if: needs.changes.outputs.docs == 'true'

    steps:
      - name: Checkout git repository 🕝
        uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c

      - name: Set up Python ${{ env.DEFAULT_PYTHON_VERSION }} 🐍
        uses: actions/setup-python@57ded4d7d5e986d7296eab16560982c6dd7c923b
        with:
          python-version: ${{ env.DEFAULT_PYTHON_VERSION }}

      - name: Set up Node 12.x 🦙
        uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c
        with:
          node-version: "12.x"

      - name: Read Poetry Version 🔢
        run: |
          echo "POETRY_VERSION=$(scripts/poetry-version.sh)" >> $GITHUB_ENV
        shell: bash

      - name: Install poetry 🦄
        uses: Gr1N/setup-poetry@15821dc8a61bc630db542ae4baf6a7c19a994844 # v8
        with:
          poetry-version: ${{ env.POETRY_VERSION }}

      - name: Load Poetry Cached Libraries ⬇
        id: cache-poetry
        uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8
        with:
          path: .venv
          key: ${{ runner.os }}-poetry-${{ env.POETRY_VERSION }}-${{ env.DEFAULT_PYTHON_VERSION }}-${{ hashFiles('**/poetry.lock') }}-${{ secrets.POETRY_CACHE_VERSION }}
          restore-keys: ${{ runner.os }}-poetry-${{ env.DEFAULT_PYTHON_VERSION }}

      - name: Clear Poetry cache
        if: steps.cache-poetry.outputs.cache-hit == 'true' && contains(github.event.pull_request.labels.*.name, 'tools:clear-poetry-cache-docs-tests')
        run: rm -r .venv

      - name: Create virtual environment
        if: (steps.cache-poetry.outputs.cache-hit != 'true' || contains(github.event.pull_request.labels.*.name, 'tools:clear-poetry-cache-docs-tests'))
        run: python -m venv create .venv

      - name: Set up virtual environment
        if: needs.changes.outputs.docs == 'true'
        run: poetry config virtualenvs.in-project true

      - name: Load Yarn Cached Packages ⬇
        uses: actions/cache@88522ab9f39a2ea568f7027eddc7d8d8bc9d59c8
        with:
          path: docs/node_modules
          key: ${{ runner.os }}-yarn-12.x-${{ hashFiles('docs/yarn.lock') }}
          restore-keys: ${{ runner.os }}-yarn-12.x

      - name: Install Dependencies 📦
        run: |
          sudo apt-get -y install libpq-dev
          make install-full install-docs

      - name: Docs Linting Checks 🕸
        run: make lint-docs