Files
bec_shared_actions/action.yml
2025-09-09 13:15:05 +02:00

109 lines
3.9 KiB
YAML

name: "BEC Plugin Repo Tests"
description: "Install and test a BEC plugin repository"
inputs:
BEC_CORE_BRANCH: # id of input
required: false
default: "main"
description: "Branch of BEC Core to install"
OPHYD_DEVICES_BRANCH: # id of input
required: false
default: "main"
description: "Branch of Ophyd Devices to install"
BEC_WIDGETS_BRANCH: # id of input
required: false
default: "main"
description: "Branch of BEC Widgets to install"
BEC_PLUGIN_REPO_URL: # id of input
required: true
description: "URL of the BEC plugin repository to install"
BEC_PLUGIN_REPO_BRANCH: # id of input
required: false
default: "main"
description: "Branch of the BEC plugin repository to install"
PYTHON_VERSION: # id of input
required: false
default: "3.11"
description: "Python version to use"
runs:
using: "composite"
steps:
- name: Checkout BEC Plugin Repository
shell: bash
id: plugin_checkout
run: |
# Create a temporary directory for the plugin repository
mkdir -p ./_checkout_/
cd ./_checkout_/
# Clone the repository with fallback for branch
if git clone --depth 1 --branch "${{ inputs.BEC_PLUGIN_REPO_BRANCH }}" "${{ inputs.BEC_PLUGIN_REPO_URL }}"; then
echo "Successfully cloned with branch ${{ inputs.BEC_PLUGIN_REPO_BRANCH }}"
else
echo "Failed to clone with branch ${{ inputs.BEC_PLUGIN_REPO_BRANCH }}, trying without specific branch"
git clone --depth 1 "${{ inputs.BEC_PLUGIN_REPO_URL }}"
fi
cd ../
# get the plugin repository name from the installed directory
PLUGIN_REPO_NAME=$(basename "${{ inputs.BEC_PLUGIN_REPO_URL }}" .git)
echo "PLUGIN_REPO_NAME=${PLUGIN_REPO_NAME}" >> $GITEA_ENV
echo "Plugin repository name: $PLUGIN_REPO_NAME"
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: ${{ inputs.PYTHON_VERSION }}
- name: Checkout BEC Core
uses: actions/checkout@v4
with:
repository: bec/bec
ref: ${{ inputs.BEC_CORE_BRANCH }}
path: ./_checkout_/bec
- name: Checkout Ophyd Devices
uses: actions/checkout@v4
with:
repository: bec/ophyd_devices
ref: ${{ inputs.OPHYD_DEVICES_BRANCH }}
path: ./_checkout_/ophyd_devices
- name: Checkout BEC Widgets
uses: actions/checkout@v4
with:
repository: bec/bec_widgets
ref: ${{ inputs.BEC_WIDGETS_BRANCH }}
path: ./_checkout_/bec_widgets
- name: Install dependencies
shell: bash
run: |
sudo apt-get update
sudo apt-get install -y libgl1 libegl1 x11-utils libxkbcommon-x11-0 libdbus-1-3 xvfb
sudo apt-get -y install libnss3 libxdamage1 libasound2t64 libatomic1 libxcursor1
- name: Install Python dependencies
shell: bash
run: |
pip install uv
# print the current directory to verify the structure
echo "Current directory: $(pwd)"
echo "Available directories: $(ls _checkout_)"
PLUGIN_REPO_NAME=$(basename "${{ inputs.BEC_PLUGIN_REPO_URL }}" .git)
echo "Plugin repository name: $PLUGIN_REPO_NAME"
uv pip install --system -e ./_checkout_/ophyd_devices[dev]
uv pip install --system -e ./_checkout_/bec/bec_lib[dev]
uv pip install --system -e ./_checkout_/bec/bec_ipython_client[dev]
uv pip install --system -e ./_checkout_/bec/bec_server[dev]
uv pip install --system -e ./_checkout_/bec_widgets[dev]
uv pip install --system -e ./_checkout_/${PLUGIN_REPO_NAME}[dev]
- name: Run Pytest
shell: bash
run: |
PLUGIN_REPO_NAME=$(basename "${{ inputs.BEC_PLUGIN_REPO_URL }}" .git)
echo "Running tests for: $PLUGIN_REPO_NAME"
cd ./_checkout_/${PLUGIN_REPO_NAME}
pytest -v --maxfail=2 --random-order ./tests