name: Generate Preview or Production URLs on: workflow_call: inputs: mode: description: "Build mode: 'prod' or 'pr'" required: true type: string pr_number: description: 'PR number (required when mode=pr)' required: false type: string runner: description: 'The runner to use for this job' required: false type: string default: 'ubuntu-latest' secrets: BASE_DOMAIN: required: false outputs: backend_url: description: "The backend URL without scheme (e.g., api.example.com)" value: ${{ jobs.generate-urls.outputs.backend_url }} frontend_url: description: "The frontend URL without scheme (e.g., app.example.com)" value: ${{ jobs.generate-urls.outputs.frontend_url }} backend_url_scheme: description: "The backend URL with scheme (e.g., https://api.example.com)" value: ${{ jobs.generate-urls.outputs.backend_url_scheme }} frontend_url_scheme: description: "The frontend URL with scheme (e.g., https://app.example.com)" value: ${{ jobs.generate-urls.outputs.frontend_url_scheme }} jobs: generate-urls: runs-on: ${{ inputs.runner }} outputs: backend_url: ${{ steps.set_urls.outputs.backend_url }} frontend_url: ${{ steps.set_urls.outputs.frontend_url }} backend_url_scheme: ${{ steps.set_urls.outputs.backend_url_scheme }} frontend_url_scheme: ${{ steps.set_urls.outputs.frontend_url_scheme }} steps: - name: Generate URLs id: set_urls env: BASE_DOMAIN: ${{ secrets.BASE_DOMAIN }} run: | set -euo pipefail if [ "${{ inputs.mode }}" = "prod" ]; then BACKEND_URL="api.${BASE_DOMAIN}" FRONTEND_URL="finance.${BASE_DOMAIN}" else # This is your current logic FRONTEND_URL="pr-${{ inputs.pr_number }}.group-8-frontend.pages.dev" BACKEND_URL="api-pr-${{ inputs.pr_number }}.${BASE_DOMAIN}" fi FRONTEND_URL_SCHEME="https://$FRONTEND_URL" BACKEND_URL_SCHEME="https://$BACKEND_URL" # This part correctly writes to GITHUB_OUTPUT for the step echo "backend_url_scheme=$BACKEND_URL_SCHEME" >> $GITHUB_OUTPUT echo "frontend_url_scheme=$FRONTEND_URL_SCHEME" >> $GITHUB_OUTPUT echo "backend_url=$BACKEND_URL" >> $GITHUB_OUTPUT echo "frontend_url=$FRONTEND_URL" >> $GITHUB_OUTPUT