From 0a05343d8630d4ab4569ae2aa6cb705e1f2e16b8 Mon Sep 17 00:00:00 2001 From: Viktor Barzin Date: Tue, 17 Mar 2026 23:58:46 +0000 Subject: [PATCH] fix(provision): use $VAR instead of ${VAR} to avoid Woodpecker interpolation Woodpecker performs compile-time substitution on ${...} patterns, replacing pipeline variables with empty strings. Using $VAR without braces lets the shell evaluate them at runtime. --- .woodpecker/provision-user.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.woodpecker/provision-user.yml b/.woodpecker/provision-user.yml index 6dddf719..e44942ce 100644 --- a/.woodpecker/provision-user.yml +++ b/.woodpecker/provision-user.yml @@ -13,15 +13,15 @@ steps: image: alpine commands: - | - if [ -z "${CI_PIPELINE_VARIABLE_USERNAME}" ] || [ -z "${CI_PIPELINE_VARIABLE_EMAIL}" ]; then + if [ -z "$CI_PIPELINE_VARIABLE_USERNAME" ] || [ -z "$CI_PIPELINE_VARIABLE_EMAIL" ]; then echo "ERROR: USERNAME and EMAIL variables are required" echo "Trigger with: POST /api/repos/{id}/pipelines {branch:master, variables:{USERNAME:x, EMAIL:y}}" exit 1 fi - echo "Provisioning user: ${CI_PIPELINE_VARIABLE_USERNAME} (${CI_PIPELINE_VARIABLE_EMAIL})" + echo "Provisioning user: $CI_PIPELINE_VARIABLE_USERNAME ($CI_PIPELINE_VARIABLE_EMAIL)" # Write vars to shared file for subsequent steps - echo "export PROVISION_USERNAME=${CI_PIPELINE_VARIABLE_USERNAME}" > .provision-env - echo "export PROVISION_EMAIL=${CI_PIPELINE_VARIABLE_EMAIL}" >> .provision-env + echo "export PROVISION_USERNAME=$CI_PIPELINE_VARIABLE_USERNAME" > .provision-env + echo "export PROVISION_EMAIL=$CI_PIPELINE_VARIABLE_EMAIL" >> .provision-env - name: prepare image: alpine @@ -187,7 +187,7 @@ steps: commands: - | curl -s -X POST -H 'Content-type: application/json' \ - --data "{\"channel\":\"general\",\"text\":\"Woodpecker CI: User provisioning for ${CI_PIPELINE_VARIABLE_USERNAME:-unknown} ${CI_PIPELINE_STATUS}\"}" \ + --data "{\"channel\":\"general\",\"text\":\"Woodpecker CI: User provisioning $CI_PIPELINE_STATUS\"}" \ "$SLACK_WEBHOOK" || true environment: SLACK_WEBHOOK: