name: API Integration Tests on: push: branches: - feature/openbb-sdk-v4 workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: api-integration-tests: runs-on: ubuntu-latest env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} steps: - name: Slack Notification - Starting uses: act10ns/slack@v1 with: status: starting channel: "#workflows" message: Starting API Integration Test... if: always() - name: Checkout code uses: actions/checkout@v3 - name: Checkout specific ref if: github.event_name == 'pull_request' run: git fetch origin ${{ github.event.pull_request.head.ref }} && git checkout FETCH_HEAD # - name: Setup Python 3.9 # uses: actions/setup-python@v4 # with: # python-version: "3.9" # architecture: x64 # - name: Install Poetry # uses: snok/install-poetry@v1 # with: # version: 1.4.0 # virtualenvs-create: true # virtualenvs-in-project: true - name: Setup Conda run: | wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh bash miniconda.sh -b -p $HOME/miniconda echo "$HOME/miniconda/bin" >> $GITHUB_PATH - name: Create and Activate Conda Environment run: | conda create -n obb-38 python=3.8 -y echo "conda activate obb-38" >> ~/.bashrc source ~/.bashrc # - name: Configure Poetry # run: poetry config virtualenvs.in-project true - name: Install Python Dependencies run: | pip install toml pytest uvicorn importlib-metadata requests # - name: Load cached venv # id: cached-poetry-dependencies # uses: actions/cache@v3 # with: # path: .venv # key: venv-${{ runner.os }}-v1-${{ hashFiles('**/poetry.lock', '**/dev_install.py') }} - name: Install obb Dependencies run: | python ${{ github.workspace }}/openbb_platform/dev_install.py -e - name: Populate System Setting Files run: | mkdir -p ${{ github.workspace }}/.openbb_platform touch ${{ github.workspace }}/.openbb_platform/system_settings.json echo '{"log_collect":false}' > ${{ github.workspace }}/.openbb_platform/system_settings.json - name: Create and Populate user_settings.json from GitHub Secrets run: | touch ${{ github.workspace }}/.openbb_platform/user_settings.json echo '{ "credentials": { "benzinga_api_key": ${{ secrets.BENZINGA_API_KEY }}, "fmp_api_key": "${{ secrets.FMP_API_KEY }}", "polygon_api_key": "${{ secrets.POLYGON_API_KEY }}", "alpha_vantage_api_key": "${{ secrets.ALPHA_VANTAGE_API_KEY }}", "fred_api_key": "${{ secrets.FRED_API_KEY }}" } }' > ${{ github.workspace }}/.openbb_platform/user_settings.json - name: Launch the Uvicorn Process run: | uvicorn openbb_core.api.rest_api:app --host 0.0.0.0 --port 8000 --reload & - name: Wait for 1 minute run: sleep 60 - name: Run Integration Tests run: | pytest ${{ github.workspace }}/openbb_platform -m integration # - name: Upload summary to Slack # uses: adrey/slack-file-upload-action@master # with: # token: ${{ secrets.SLACK_API_TOKEN }} # initial_comment: "API Integration test summary" # title: "Integration test summary" # path: summary.txt # channel: ${{ secrets.SLACK_CHANNEL_ID }} # - name: Slack Notification - Success/Failure # uses: act10ns/slack@v1 # with: # status: ${{ job.status }} # steps: ${{ toJson(steps) }} # channel: '#workflows' # if: always()