Skip to content

Kestrel End-to-End Testing #171

Kestrel End-to-End Testing

Kestrel End-to-End Testing #171

name: Kestrel End-to-End Testing
on:
workflow_dispatch:
inputs:
organization:
description: 'Kestrel repo organization'
required: true
default: 'opencybersecurityalliance'
repository:
description: 'Kestrel repo name'
required: true
default: 'kestrel-lang'
branch:
description: 'Kestrel repo branch'
required: true
default: 'develop'
# This allows a subsequently queued workflow run to interrupt previous runs
concurrency:
group: '${{ github.workflow }} @ ${{ github.head_ref || github.ref }}'
cancel-in-progress: true
jobs:
kestrel-end-to-end-testing:
runs-on: ubuntu-22.04
env:
kestrel_analytics_branch: release
venv_activate:
steps:
- name: Worflow Information
run: |
echo "Triggered by ${{ github.actor }} through a ${{ github.event_name }} event."
echo "Running on a ${{ runner.os }} server hosted by GitHub"
echo "Running in ${{ github.repository }} repository, ${{ github.ref }} branch."
echo "HOME = ${HOME}"
mkdir -p ${HOME}/fedsearchtest
- name: Code Checkout
uses: actions/checkout@v3
- name: Create Virtual Environment
run: |
./federated-search-core/setup/create-venv.sh
source "$HOME/fedsearchtest/fedsearchtest/bin/activate"
echo "venv_activate=$VIRTUAL_ENV/bin/activate" >> $GITHUB_ENV
- name: Setup latest pip environment
run: |
source ${{ env.venv_activate }}
python -m pip install --upgrade pip setuptools wheel
- name: Kestrel Code Checkout
uses: actions/checkout@v3
with:
repository: ${{ github.event.inputs.organization }}/${{ github.event.inputs.repository }}
ref: ${{ github.event.inputs.branch }}
path: './kestrel-lang'
- name: Kestrel Analytics Code Checkout
uses: actions/checkout@v3
with:
repository: opencybersecurityalliance/kestrel-analytics
ref: ${{ env.kestrel_analytics_branch }}
path: './kestrel-analytics'
- name: Install kestrel from Source Code
run: |
source ${{ env.venv_activate }}
./application-test/kestrel/setup/install-kestrel.sh
- name: Elasticsearch instance setup
run: |
source ${{ env.venv_activate }}
./federated-search-core/setup/elastic-ecs/install-elastic.sh
- name: Import test data in elastic instance
run: ./federated-search-core/setup/elastic-ecs/import-data.sh
- name: Finalize and check Kestrel and Elasticsearch deployment in the test environment
run: |
source ${{ env.venv_activate }}
export KESTREL_STIXSHIFTER_CONFIG=${HOME}/fedsearchtest/kestrel-stixshifter-config.yaml
./application-test/kestrel/setup/deploy-kestrel.sh
- name: Install Kestrel Analytics
run: ./application-test/kestrel-analytics/setup/install-kestrel-analytics.sh
- name: Run End-to-End Tests
run: |
source ${{ env.venv_activate }}
./application-test/kestrel/test/run-tests.sh
- name: Cleanup
run: |
./federated-search-core/setup/elastic-ecs/clean-elastic.sh
docker network rm elastic
rm -rf data
- name: Job Status
run: echo "Job status is ${{ job.status }}."