ci: deploy — нормализация refs/heads/* и refs/tags/* (Forgejo main)
All checks were successful
CI / test (push) Successful in 38s
All checks were successful
CI / test (push) Successful in 38s
Made-with: Cursor
This commit is contained in:
@ -21,16 +21,26 @@ jobs:
|
||||
env:
|
||||
RAW_REF: ${{ inputs.ref }}
|
||||
run: |
|
||||
# Forgejo иногда подставляет refs/heads/main вместо main — иначе нет origin/refs/heads/main.
|
||||
normalize_ref() {
|
||||
case "$1" in
|
||||
refs/heads/*) echo "${1#refs/heads/}" ;;
|
||||
refs/tags/*) echo "${1#refs/tags/}" ;;
|
||||
*) echo "$1" ;;
|
||||
esac
|
||||
}
|
||||
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
|
||||
R=$(printf '%s' "$RAW_REF" | tr -d '\r\n' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')
|
||||
# Теги в git: v1.7.0; если ввели 1.7.0 — подставляем v (иначе checkout не находит ref).
|
||||
R=$(normalize_ref "$R")
|
||||
# Теги в git: v1.7.0; если ввели 1.7.0 — подставляем v.
|
||||
if echo "$R" | grep -qE '^[0-9]+\.[0-9]+\.[0-9]+$'; then
|
||||
echo "::notice::Указано $R без префикса v — деплой на v${R}"
|
||||
R="v${R}"
|
||||
fi
|
||||
echo "ref=$R" >> "$GITHUB_OUTPUT"
|
||||
else
|
||||
echo "ref=${{ github.ref_name }}" >> "$GITHUB_OUTPUT"
|
||||
R=$(normalize_ref "${{ github.ref_name }}")
|
||||
echo "ref=$R" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
|
||||
# Без секретов appleboy/ssh-action падает с «missing server host» — даём явную подсказку.
|
||||
|
||||
Reference in New Issue
Block a user