diff --git a/bender-up-to-date/README.md b/bender-up-to-date/README.md new file mode 100644 index 0000000..cc54a74 --- /dev/null +++ b/bender-up-to-date/README.md @@ -0,0 +1,22 @@ +# Bender up-to-date + +This action runs `bender script -n flist` and checks if all specified files exist in the repository. Useful as a sanity test in repositories that otherwise don't use bender. + +## Action usage + +Simply add the action to your desired upstream workflow. Optionally specify a bender version using `bender-version` (default: latest). We suggest creating a standalone workflow with appropriate trigger rules for this, for example: + +```yaml +name: bender-up-to-date + +on: [ push, pull_request, workflow_dispatch ] + +jobs: + bender-up-to-date: + runs-on: ubuntu-latest + steps: + - name: Check Bender up-to-date + uses: pulp-platform/pulp-actions/bender-up-to-date@v2 + with: + bender-version: 0.27.1 +``` diff --git a/bender-up-to-date/action.yml b/bender-up-to-date/action.yml new file mode 100644 index 0000000..7b5eb77 --- /dev/null +++ b/bender-up-to-date/action.yml @@ -0,0 +1,31 @@ +# Copyright 2023 ETH Zurich and University of Bologna. +# Licensed under the Apache License, Version 2.0, see LICENSE for details. +# SPDX-License-Identifier: Apache-2.0 + +# Author: Nils Wistoff + +name: 'Bender up-to-date' +description: 'Check if all files specified in Bender.yml exist.' + +inputs: + # Optional argument + bender-version: + description: 'Bender version to install (default: latest)' + required: false + default: '' + +runs: + using: "composite" + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + submodules: recursive + - name: Install bender + uses: pulp-platform/pulp-actions/bender-install@v2 + with: + version: ${{ inputs.bender-version }} + - name: Check bender up-to-date + shell: bash + run: | + ${{ github.action_path }}/bender-up-to-date.sh diff --git a/bender-up-to-date/bender-up-to-date.sh b/bender-up-to-date/bender-up-to-date.sh new file mode 100755 index 0000000..0470466 --- /dev/null +++ b/bender-up-to-date/bender-up-to-date.sh @@ -0,0 +1,16 @@ +#!/usr/bin/bash +# +# Copyright 2023 ETH Zurich and University of Bologna. +# Licensed under the Apache License, Version 2.0, see LICENSE for details. +# SPDX-License-Identifier: Apache-2.0 +# +# Nils Wistoff + +set -e + +RESULT=0 +for FILE in $(bender script -n flist | sed "/^\+\S*$/d") +do + [ ! -f "$FILE" ] && { echo "bender-up-to-date: $FILE not found."; RESULT=1; } +done +exit $RESULT