name: 'Buster Deploy' description: 'Deploy semantic models to Buster using the CLI' author: 'Buster' branding: icon: 'upload-cloud' color: 'green' inputs: api-key: description: 'Buster API key (falls back to BUSTER_API_KEY)' required: false default: '' host: description: 'Buster API host URL (falls back to BUSTER_HOST or https://api.buster.so)' required: false default: '' directory: description: 'Directory containing buster.yml and models to deploy' required: false default: '.' environment: description: 'Target environment (e.g., production, staging)' required: false default: '' force: description: 'Force deployment (adds --force)' required: false default: 'true' verbose: description: 'Verbose output (adds --verbose)' required: false default: 'false' runs: using: 'composite' steps: - name: Require Buster CLI shell: bash run: | if ! command -v buster &>/dev/null && ! command -v buster.exe &>/dev/null; then echo "Buster CLI not found. Add a step to install it (e.g., buster-so/buster-actions/install)." exit 1 fi - name: Set credentials/env shell: bash run: | set -e API_KEY="${{ inputs.api-key }}" if [[ -z "$API_KEY" ]]; then API_KEY="${BUSTER_API_KEY:-}" fi if [[ -z "$API_KEY" ]]; then echo "No API key provided. Set input 'api-key' or env BUSTER_API_KEY." exit 1 fi echo "BUSTER_API_KEY=$API_KEY" >> "$GITHUB_ENV" HOST="${{ inputs.host }}" if [[ -z "$HOST" ]]; then HOST="${BUSTER_HOST:-https://api.buster.so}" fi echo "BUSTER_HOST=$HOST" >> "$GITHUB_ENV" - name: Deploy shell: bash working-directory: ${{ inputs.directory }} run: | set -e CMD="buster deploy" [[ -n "${{ inputs.environment }}" ]] && CMD="$CMD --environment ${{ inputs.environment }}" [[ "${{ inputs.force }}" == "true" ]] && CMD="$CMD --force" [[ "${{ inputs.verbose }}" == "true" ]] && CMD="$CMD --verbose" echo "Running: $CMD" $CMD