Add unit tests to push workflow #21
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Integration Tests | |
on: | |
pull_request: | |
types: [opened, edited, synchronize, reopened, ready_for_review] | |
branches: | |
- "**" | |
push: | |
branches: | |
- main | |
jobs: | |
integration-tests: | |
name: "Integration Tests" | |
runs-on: ubuntu-latest | |
steps: | |
#---------------------------------------------- | |
# Check out repo | |
#---------------------------------------------- | |
- name: Check out repository | |
uses: actions/checkout@v3 | |
#---------------------------------------------- | |
# Get docker compose | |
#---------------------------------------------- | |
- name: Initialize Docker Compose | |
uses: isbang/compose-action@v1.5.1 | |
#---------------------------------------------- | |
# Get changed files | |
#---------------------------------------------- | |
- name: Get changed files | |
id: changed-files | |
uses: tj-actions/changed-files@v40 | |
#---------------------------------------------- | |
# Get changed plugins | |
#---------------------------------------------- | |
- name: Get changed plugins | |
id: changed-plugins | |
run: | | |
# Collects all the plugin names that have changes. | |
# If there is directory that isn't a plugin then it will need to skip it. Currently there is none. | |
declare -a changed_dirs=() | |
for dir in ./*/; do | |
current_folder=$(basename "$dir") | |
for changed_file in ${{ steps.changed-files.outputs.all_changed_files }}; do | |
if [[ $changed_file == *"$current_folder"* ]]; then | |
if ! [[ ${changed_dirs[*]} =~ $current_folder ]]; then | |
changed_dirs+=("$current_folder") | |
fi | |
fi | |
done | |
done | |
echo "changed-plugins=${changed_dirs[*]}" >> $GITHUB_OUTPUT | |
#---------------------------------------------- | |
# Get changed plugins | |
#---------------------------------------------- | |
- name: Run Integration Tests | |
id: integration-tests | |
run: | | |
for dir in ${{ steps.changed-plugins.outputs.changed-plugins }}; do | |
echo "Running integration tests for $dir" | |
cd $dir/integration | |
docker compose build | |
docker compose run tests | |
cd ../.. | |
done |