refactor(examples) Update embedded-devices
example (#4381)
#23428
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: Baselines | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/main' && github.run_id || github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
env: | |
FLWR_TELEMETRY_ENABLED: 0 | |
jobs: | |
changes: | |
runs-on: ubuntu-22.04 | |
permissions: | |
pull-requests: read | |
outputs: | |
baselines: ${{ steps.filter.outputs.changes }} | |
steps: | |
- uses: actions/checkout@v4 | |
- shell: bash | |
run: | | |
# create a list of all directories in baselines | |
{ | |
echo 'FILTER_PATHS<<EOF' | |
FILTER="" | |
while read -d $'\0' BASELINES_PATH; do | |
DIR=$(basename $BASELINES_PATH) | |
FILTER+=$(echo "$DIR: ${BASELINES_PATH}/**\n") | |
done < <(find baselines -maxdepth 1 \ | |
-name ".*" -prune -o \ | |
-path "baselines/doc" -prune -o \ | |
-path "baselines/dev" -prune -o \ | |
-path "baselines/baseline_template" -prune -o \ | |
-path "baselines/flwr_baselines" -prune -o \ | |
-type d -print0) | |
FILTER=$(echo -e "$FILTER") | |
# remove first line | |
FILTER=${FILTER#*$'\n'} | |
echo "$FILTER" | |
echo EOF | |
} >> "$GITHUB_ENV" | |
- uses: dorny/paths-filter@v3 | |
id: filter | |
with: | |
filters: ${{ env.FILTER_PATHS }} | |
- if: ${{ github.event.pull_request.head.repo.fork }} | |
run: | | |
CHANGES=$(echo "${{ toJson(steps.filter.outputs.changes) }}" | jq '. | length') | |
if [ "$CHANGES" -gt 1 ]; then | |
echo "::error ::The changes should only apply to a single baseline." | |
exit 1 | |
fi | |
test: | |
runs-on: ubuntu-22.04 | |
needs: changes | |
if: ${{ needs.changes.outputs.baselines != '' && toJson(fromJson(needs.changes.outputs.baselines)) != '[]' }} | |
strategy: | |
matrix: | |
baseline: ${{ fromJSON(needs.changes.outputs.baselines) }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Bootstrap | |
uses: ./.github/actions/bootstrap | |
with: | |
python-version: '3.10' | |
- name: Install dependencies | |
working-directory: baselines/${{ matrix.baseline }} | |
run: python -m poetry install | |
- name: Testing ${{ matrix.baseline }} | |
working-directory: baselines | |
run: ./dev/test-baseline.sh ${{ matrix.baseline }} | |
- name: Test Structure of ${{ matrix.baseline }} | |
working-directory: baselines | |
run: ./dev/test-baseline-structure.sh ${{ matrix.baseline }} |