Files
ophyd_devices/.github/workflows/device-list-update.yml

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