mirror of
https://github.com/onyx-dot-app/onyx.git
synced 2026-10-22 11:22:49 -05:00
* Implement fetching; still need to work on document parsing * Add basic skeleton of parsing email bodies * Add id field * Add email body parsing * Implement checkpointed imap-connector * Add testing logic for basic iteration * Add logic to get different header if "to" isn't present - possible in mailing-list workflows * Add ability to index specific mailboxes * Add breaking when indexing has been fully exhausted * Sanitize all mailbox names + add space between stripped strings after parsing * Add multi-recipient parsing * Change around semantic-identifier and title * Add imap tests * Add recipients and content assertions to tests * Add envvars to github actions workflow file * Remove encoding header * Update logic to not immediately establish connection upon init of `ImapConnector` * Add start and end datetime filtering + edit when connection is established / how login is done * Remove content-type header * Add note about guards * Change default parameters to be `None` instead of `[]` * Address comment on PR * Implement more PR suggestions * More PR suggestions * Implement more PR suggestions * Change up login/logout flow (PR suggestion) * Move port number to be envvar * Make globals variants in enum instead (PR suggestion) * Fix more documentation related suggestions on PR * Have the imap connector implement `CheckpointedConnectorWithPermSync` instead * Add helper for loading all docs with permission syncing
149 lines
5.0 KiB
YAML
149 lines
5.0 KiB
YAML
name: Connector Tests
|
|
|
|
on:
|
|
merge_group:
|
|
pull_request:
|
|
branches: [main]
|
|
schedule:
|
|
# This cron expression runs the job daily at 16:00 UTC (9am PT)
|
|
- cron: "0 16 * * *"
|
|
|
|
env:
|
|
# AWS
|
|
AWS_ACCESS_KEY_ID_DAILY_CONNECTOR_TESTS: ${{ secrets.AWS_ACCESS_KEY_ID_DAILY_CONNECTOR_TESTS }}
|
|
AWS_SECRET_ACCESS_KEY_DAILY_CONNECTOR_TESTS: ${{ secrets.AWS_SECRET_ACCESS_KEY_DAILY_CONNECTOR_TESTS }}
|
|
|
|
# Confluence
|
|
CONFLUENCE_TEST_SPACE_URL: ${{ secrets.CONFLUENCE_TEST_SPACE_URL }}
|
|
CONFLUENCE_TEST_SPACE: ${{ secrets.CONFLUENCE_TEST_SPACE }}
|
|
CONFLUENCE_IS_CLOUD: ${{ secrets.CONFLUENCE_IS_CLOUD }}
|
|
CONFLUENCE_TEST_PAGE_ID: ${{ secrets.CONFLUENCE_TEST_PAGE_ID }}
|
|
CONFLUENCE_USER_NAME: ${{ secrets.CONFLUENCE_USER_NAME }}
|
|
CONFLUENCE_ACCESS_TOKEN: ${{ secrets.CONFLUENCE_ACCESS_TOKEN }}
|
|
|
|
# Jira
|
|
JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }}
|
|
JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }}
|
|
JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }}
|
|
|
|
# Gong
|
|
GONG_ACCESS_KEY: ${{ secrets.GONG_ACCESS_KEY }}
|
|
GONG_ACCESS_KEY_SECRET: ${{ secrets.GONG_ACCESS_KEY_SECRET }}
|
|
|
|
# Google
|
|
GOOGLE_DRIVE_SERVICE_ACCOUNT_JSON_STR: ${{ secrets.GOOGLE_DRIVE_SERVICE_ACCOUNT_JSON_STR }}
|
|
GOOGLE_DRIVE_OAUTH_CREDENTIALS_JSON_STR_TEST_USER_1: ${{ secrets.GOOGLE_DRIVE_OAUTH_CREDENTIALS_JSON_STR_TEST_USER_1 }}
|
|
GOOGLE_DRIVE_OAUTH_CREDENTIALS_JSON_STR: ${{ secrets.GOOGLE_DRIVE_OAUTH_CREDENTIALS_JSON_STR }}
|
|
GOOGLE_GMAIL_SERVICE_ACCOUNT_JSON_STR: ${{ secrets.GOOGLE_GMAIL_SERVICE_ACCOUNT_JSON_STR }}
|
|
GOOGLE_GMAIL_OAUTH_CREDENTIALS_JSON_STR: ${{ secrets.GOOGLE_GMAIL_OAUTH_CREDENTIALS_JSON_STR }}
|
|
|
|
# Slab
|
|
SLAB_BOT_TOKEN: ${{ secrets.SLAB_BOT_TOKEN }}
|
|
|
|
# Zendesk
|
|
ZENDESK_SUBDOMAIN: ${{ secrets.ZENDESK_SUBDOMAIN }}
|
|
ZENDESK_EMAIL: ${{ secrets.ZENDESK_EMAIL }}
|
|
ZENDESK_TOKEN: ${{ secrets.ZENDESK_TOKEN }}
|
|
|
|
# Salesforce
|
|
SF_USERNAME: ${{ secrets.SF_USERNAME }}
|
|
SF_PASSWORD: ${{ secrets.SF_PASSWORD }}
|
|
SF_SECURITY_TOKEN: ${{ secrets.SF_SECURITY_TOKEN }}
|
|
|
|
# Hubspot
|
|
HUBSPOT_ACCESS_TOKEN: ${{ secrets.HUBSPOT_ACCESS_TOKEN }}
|
|
|
|
# IMAP
|
|
IMAP_HOST: ${{ secrets.IMAP_HOST }}
|
|
IMAP_USERNAME: ${{ secrets.IMAP_USERNAME }}
|
|
IMAP_PASSWORD: ${{ secrets.IMAP_PASSWORD }}
|
|
IMAP_MAILBOXES: ${{ secrets.IMAP_MAILBOXES }}
|
|
|
|
# Airtable
|
|
AIRTABLE_TEST_BASE_ID: ${{ secrets.AIRTABLE_TEST_BASE_ID }}
|
|
AIRTABLE_TEST_TABLE_ID: ${{ secrets.AIRTABLE_TEST_TABLE_ID }}
|
|
AIRTABLE_TEST_TABLE_NAME: ${{ secrets.AIRTABLE_TEST_TABLE_NAME }}
|
|
AIRTABLE_ACCESS_TOKEN: ${{ secrets.AIRTABLE_ACCESS_TOKEN }}
|
|
|
|
# Sharepoint
|
|
SHAREPOINT_CLIENT_ID: ${{ secrets.SHAREPOINT_CLIENT_ID }}
|
|
SHAREPOINT_CLIENT_SECRET: ${{ secrets.SHAREPOINT_CLIENT_SECRET }}
|
|
SHAREPOINT_CLIENT_DIRECTORY_ID: ${{ secrets.SHAREPOINT_CLIENT_DIRECTORY_ID }}
|
|
SHAREPOINT_SITE: ${{ secrets.SHAREPOINT_SITE }}
|
|
|
|
# Github
|
|
ACCESS_TOKEN_GITHUB: ${{ secrets.ACCESS_TOKEN_GITHUB }}
|
|
|
|
# Gitlab
|
|
GITLAB_ACCESS_TOKEN: ${{ secrets.GITLAB_ACCESS_TOKEN }}
|
|
|
|
# Gitbook
|
|
GITBOOK_SPACE_ID: ${{ secrets.GITBOOK_SPACE_ID }}
|
|
GITBOOK_API_KEY: ${{ secrets.GITBOOK_API_KEY }}
|
|
|
|
# Notion
|
|
NOTION_INTEGRATION_TOKEN: ${{ secrets.NOTION_INTEGRATION_TOKEN }}
|
|
|
|
# Highspot
|
|
HIGHSPOT_KEY: ${{ secrets.HIGHSPOT_KEY }}
|
|
HIGHSPOT_SECRET: ${{ secrets.HIGHSPOT_SECRET }}
|
|
|
|
# Slack
|
|
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
|
|
|
|
# Teams
|
|
TEAMS_APPLICATION_ID: ${{ secrets.TEAMS_APPLICATION_ID }}
|
|
TEAMS_DIRECTORY_ID: ${{ secrets.TEAMS_DIRECTORY_ID }}
|
|
TEAMS_SECRET: ${{ secrets.TEAMS_SECRET }}
|
|
|
|
jobs:
|
|
connectors-check:
|
|
# See https://runs-on.com/runners/linux/
|
|
runs-on: [runs-on, runner=8cpu-linux-x64, "run-id=${{ github.run_id }}"]
|
|
|
|
env:
|
|
PYTHONPATH: ./backend
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.11"
|
|
cache: "pip"
|
|
cache-dependency-path: |
|
|
backend/requirements/default.txt
|
|
backend/requirements/dev.txt
|
|
|
|
- name: Install Dependencies
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
pip install --retries 5 --timeout 30 -r backend/requirements/default.txt
|
|
pip install --retries 5 --timeout 30 -r backend/requirements/dev.txt
|
|
playwright install chromium
|
|
playwright install-deps chromium
|
|
|
|
- name: Run Tests
|
|
shell: script -q -e -c "bash --noprofile --norc -eo pipefail {0}"
|
|
run: |
|
|
py.test \
|
|
-n 8 \
|
|
--dist loadfile \
|
|
--durations=8 \
|
|
-o junit_family=xunit2 \
|
|
-xv \
|
|
--ff \
|
|
backend/tests/daily/connectors
|
|
|
|
- name: Alert on Failure
|
|
if: failure() && github.event_name == 'schedule'
|
|
env:
|
|
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
|
|
run: |
|
|
curl -X POST \
|
|
-H 'Content-type: application/json' \
|
|
--data '{"text":"Scheduled Connector Tests failed! Check the run at: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"}' \
|
|
$SLACK_WEBHOOK
|