constellation/.github/actions/versionsapi/action.yml

86 lines
2.4 KiB
YAML
Raw Normal View History

name: versionsapi
description: "A GitHub Action to interact with the versions API"
#
# !!! Attention !!!
#
# Calls with command 'add' and 'remove' need synchronization.
# Don't use this action directly for these commands.
# Use the 'versionsapi' workflow instead.
#
inputs:
command:
description: Command to run
required: true
ref:
description: --ref flag
required: false
stream:
description: --stream flag
required: false
version:
description: --version flag
required: false
version_path:
description: --version-path flag
required: false
add_latest:
description: --latest flag (boolean)
required: false
default: "false"
add_release:
description: --release flag (boolean)
required: false
default: "false"
rm_all:
description: --all flag (boolean)
required: false
default: "false"
dryrun:
description: --dryrun flag (boolean)
required: false
default: "false"
outputs:
output:
description: Output of the command
value: ${{ steps.run.outputs.output }}
runs:
using: composite
steps:
- name: Get versionsapi binary
shell: bash
run: |
containerID=$(docker create "ghcr.io/edgelesssys/constellation/versionsapi-ci-cli:latest")
docker cp ${containerID}:/versionsapi .
- name: Run versionsapi
id: run
shell: bash
run: |
out=$(
./versionsapi \
${{ inputs.command }} \
${{ inputs.ref != '' && format('--ref="{0}"', inputs.ref) || '' }} \
${{ inputs.stream != '' && format('--stream="{0}"', inputs.stream) || '' }} \
${{ inputs.version != '' && format('--version="{0}"', inputs.version) || '' }} \
${{ inputs.version_path != '' && format('--version-path="{0}"', inputs.version_path) || '' }} \
${{ inputs.add_latest == 'true' && '--latest' || '' }} \
${{ inputs.add_release == 'true' && '--release' || '' }} \
${{ inputs.rm_all == 'true' && '--all' || '' }} \
${{ inputs.dryrun == 'true' && '--dryrun' || '' }}
)
# Multiline output is not supported by GitHub Actions,
# and if we encode it, it is redacted as secret. 🤦
# So we have to workaround by writing it to a file.
if [[ ${{ inputs.command }} == 'list' ]]; then
echo "$out" > versionsapi_output.txt
exit 0
fi
echo "output=${out}" >> "$GITHUB_OUTPUT"
echo "${out}"