Skip to content

Tests

Tests #1175

Workflow file for this run

name: Tests
on:
push:
branches: [master]
pull_request:
branches: [master]
workflow_dispatch:
inputs:
update_channel:
type: choice
description: 'Update channel'
options:
- latest
- stable
default: stable
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
UPDATE_CHANNEL: ${{ inputs.update_channel || 'stable' }}
jobs:
notify-build-start:
# Secrets are not available for forks for security reasons, so pull
# request checks will fail when trying to send the Slack notification.
# Unfortunately, there's no way to explicitly check that a secret is
# available, so we check for event_name instead:
# https://github.com/actions/runner/issues/520
if: ${{ github.event_name != 'pull_request' && inputs.update_channel != 'latest' }}
runs-on: ubuntu-latest
steps:
- uses: ivelum/[email protected]
id: slack
with:
channel_id: C0PT3267R
status: STARTED
color: '#ee9b00'
outputs:
status_message_id: ${{ steps.slack.outputs.message_id }}
lint-and-tests:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python: ['3.7', '3.8', '3.9', '3.10', '3.11']
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}
cache: 'pip'
- run: pip install -r requirements-tests.txt
- run: pip install --editable .
- run: flake8 --isort-show-traceback && pytest -m "not selenium"
setup-test:
name: Set up an on-premise instance
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup python
uses: actions/setup-python@v4
with:
python-version: 3.11
cache: 'pip'
- name: Install Teamplify
run: pip3 install --editable .
- name: Configure
run: teamplify configure
- name: Create backup directory
run: mkdir ${{ runner.temp }}/backup
- name: Set backup_mount
run: sed -i -e '/backup_mount =/ s|= .*|= ${{ runner.temp }}/backup|' ~/.teamplify.ini
- name: Set product key
run: sed -i -e '/product_key =/ s|= .*|= ${{ secrets.ONPREMISE_PRODUCT_KEY }}|' ~/.teamplify.ini
- name: Set update channel
run: sed -i -e '/update_channel =/ s|= .*|= ${{ env.UPDATE_CHANNEL }}|' ~/.teamplify.ini
- name: Disable crash reports
run: sed -i -e '/send_crash_reports =/ s|= .*|= no|' ~/.teamplify.ini
- name: Install stable Chrome
id: install-chrome
uses: browser-actions/setup-chrome@v1
with:
chrome-version: stable
- name: Setup ChromeDriver
uses: nanasess/setup-chromedriver@v2
- name: Login to public ECR
run: docker login -u AWS -p $(aws --region us-east-1 ecr-public get-login-password) public.ecr.aws
- name: Wait for Teamplify to start
run: teamplify start
- run: pip install -r requirements-tests.txt
- name: Check that the login page is available
run: pytest -m "selenium"
- name: Test Teamplify backup command
run: teamplify backup ${{ runner.temp }}/backup/test-backup.sql.gz
notify-build-failure:
if: ${{ failure() && github.event_name != 'pull_request' }}
needs: [lint-and-tests, setup-test, notify-build-start]
runs-on: ubuntu-latest
steps:
- name: Notify slack fail
uses: ivelum/[email protected]
with:
channel_id: C0PT3267R
status: FAILED
color: '#d7263d'
notify-build-success:
if: ${{ github.event_name != 'pull_request' && inputs.update_channel != 'latest' }}
needs: [lint-and-tests, setup-test, notify-build-start]
runs-on: ubuntu-latest
steps:
- name: Notify slack success
uses: ivelum/[email protected]
with:
message_id: ${{ needs.notify-build-start.outputs.status_message_id }}
channel_id: C0PT3267R
status: SUCCESS
color: '#16db65'