mirror of
https://github.com/bec-project/ophyd_devices.git
synced 2026-02-21 01:38:41 +01:00
99 lines
3.3 KiB
YAML
99 lines
3.3 KiB
YAML
name: Update device list
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
|
|
jobs:
|
|
device_list_update:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: read
|
|
concurrency:
|
|
group: device-list-update-${{ github.ref_name }}
|
|
cancel-in-progress: true
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0 # required for git diff / reset
|
|
ssh-key: ${{ secrets.CI_DEPLOY_SSH_KEY }}
|
|
ssh-known-hosts: ${{ secrets.CI_DEPLOY_SSH_KNOWN_HOSTS }}
|
|
|
|
- name: Set up Python
|
|
uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.11"
|
|
|
|
- name: Setup | Force release branch to be at workflow sha
|
|
run: |
|
|
git reset --hard ${{ github.sha }}
|
|
|
|
- name: Evaluate | Verify upstream has NOT changed
|
|
shell: bash
|
|
run: |
|
|
set +o pipefail
|
|
|
|
UPSTREAM_BRANCH_NAME="$(git status -sb | head -n 1 | cut -d' ' -f2 | grep -E '\.{3}' | cut -d'.' -f4)"
|
|
printf '%s\n' "Upstream branch name: $UPSTREAM_BRANCH_NAME"
|
|
|
|
set -o pipefail
|
|
|
|
if [ -z "$UPSTREAM_BRANCH_NAME" ]; then
|
|
printf >&2 '%s\n' "::error::Unable to determine upstream branch name!"
|
|
exit 1
|
|
fi
|
|
|
|
git fetch "${UPSTREAM_BRANCH_NAME%%/*}"
|
|
|
|
if ! UPSTREAM_SHA="$(git rev-parse "$UPSTREAM_BRANCH_NAME")"; then
|
|
printf >&2 '%s\n' "::error::Unable to determine upstream branch sha!"
|
|
exit 1
|
|
fi
|
|
|
|
HEAD_SHA="$(git rev-parse HEAD)"
|
|
|
|
if [ "$HEAD_SHA" != "$UPSTREAM_SHA" ]; then
|
|
printf >&2 '%s\n' "[HEAD SHA] $HEAD_SHA != $UPSTREAM_SHA [UPSTREAM SHA]"
|
|
printf >&2 '%s\n' "::error::Upstream has changed, aborting release..."
|
|
exit 1
|
|
fi
|
|
|
|
printf '%s\n' "Verified upstream branch has not changed, continuing..."
|
|
|
|
- name: Install Python dependencies
|
|
run: |
|
|
pip install .
|
|
|
|
- name: Generate device list
|
|
run: |
|
|
python .github/scripts/retrieve_device_classes.py \
|
|
"ophyd_devices" \
|
|
"./ophyd_devices/devices/device_list.md" \
|
|
--ignore areadetector.plugins
|
|
|
|
- name: Commit and push if device list changed
|
|
run: |
|
|
FILE="./ophyd_devices/devices/device_list.md"
|
|
|
|
if [ -f "$FILE" ]; then
|
|
git add "$FILE"
|
|
|
|
git config user.name "github-actions[bot]"
|
|
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
|
|
if ! git diff-index --quiet HEAD --; then
|
|
git commit -m "docs: Update device list"
|
|
|
|
git push origin "${{ github.ref_name }}"
|
|
|
|
echo "Device list updated"
|
|
else
|
|
echo "No changes detected"
|
|
fi
|
|
else
|
|
echo "Device list file not found"
|
|
fi
|