50 lines
1.8 KiB
YAML
50 lines
1.8 KiB
YAML
name: '[Support] Assign asset label'
|
|
on:
|
|
pull_request_target:
|
|
types:
|
|
- opened
|
|
# Remove all permissions by default
|
|
permissions: {}
|
|
jobs:
|
|
assign-label:
|
|
name: Assign label
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
pull-requests: write
|
|
steps:
|
|
- id: get-asset
|
|
name: Get modified assets
|
|
env:
|
|
DIFF_URL: "${{github.event.pull_request.diff_url}}"
|
|
TEMP_FILE: "${{runner.temp}}/pr-${{github.event.number}}.diff"
|
|
run: |
|
|
# This request doesn't consume API calls.
|
|
curl -Lkso $TEMP_FILE $DIFF_URL
|
|
files_changed="$(sed -nr 's/[\-\+]{3} [ab]\/(.*)/\1/p' $TEMP_FILE | sort | uniq)"
|
|
# Adding || true to avoid "Process exited with code 1" errors
|
|
assets=($(echo "$files_changed" | xargs dirname | sed -nr "s|bitnami/([^/]*).*|\1|p" | sort | uniq || true))
|
|
|
|
if [[ "${#assets[@]}" -ne "1" ]]; then
|
|
echo "result=skip" >> $GITHUB_OUTPUT
|
|
echo "message=Label cannot be set, cannot infer a single label from: ${assets[@]}" >> $GITHUB_OUTPUT
|
|
echo "name=NONE" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "result=ok" >> $GITHUB_OUTPUT
|
|
echo "message=Adding label '${assets}'" >> $GITHUB_OUTPUT
|
|
echo "name=${assets}" >> $GITHUB_OUTPUT
|
|
fi
|
|
- name: Show messages
|
|
uses: actions/github-script@v6
|
|
with:
|
|
script: |
|
|
if ("${{ steps.get-asset.outputs.result }}" != "ok" ) {
|
|
core.warning("${{ steps.get-asset.outputs.message }}")
|
|
} else {
|
|
core.info("${{ steps.get-asset.outputs.message }}")
|
|
}
|
|
- name: Labeling
|
|
if: ${{ steps.get-asset.outputs.result == 'ok' }}
|
|
uses: fmulero/labeler@1.1.0
|
|
with:
|
|
add-labels: "${{ steps.get-asset.outputs.name }}"
|