mirror of
https://github.com/coder/coder.git
synced 2025-03-14 10:09:57 +00:00
94 lines
1.8 KiB
Bash
Executable File
94 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Usage: ./deploy-pr.sh [--dry-run -n] [--yes -y] [--experiments -e <experiments>] [--build -b] [--deploy -d]
|
|
# deploys the current branch to a PR environment and posts login credentials to
|
|
# [#pr-deployments](https://codercom.slack.com/archives/C05DNE982E8) Slack channel
|
|
|
|
set -euo pipefail
|
|
# shellcheck source=scripts/lib.sh
|
|
source "$(dirname "${BASH_SOURCE[0]}")/lib.sh"
|
|
cdroot
|
|
|
|
# default settings
|
|
dryRun=false
|
|
confirm=true
|
|
build=false
|
|
deploy=false
|
|
experiments=""
|
|
|
|
# parse arguments
|
|
while (("$#")); do
|
|
case "$1" in
|
|
-b | --build)
|
|
build=true
|
|
shift
|
|
;;
|
|
-d | --deploy)
|
|
deploy=true
|
|
shift
|
|
;;
|
|
-n | --dry-run)
|
|
dryRun=true
|
|
shift
|
|
;;
|
|
-e | --experiments)
|
|
if [ -n "$2" ] && [ "${2:0:1}" != "-" ]; then
|
|
experiments="$2"
|
|
shift
|
|
else
|
|
echo "Error: Argument for $1 is missing" >&2
|
|
exit 1
|
|
fi
|
|
shift
|
|
;;
|
|
-y | --yes)
|
|
confirm=false
|
|
shift
|
|
;;
|
|
--)
|
|
shift
|
|
break
|
|
;;
|
|
--*)
|
|
echo "Error: Unsupported flag $1" >&2
|
|
exit 1
|
|
;;
|
|
*)
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# confirm if not passed -y or --yes
|
|
if $confirm; then
|
|
read -p "Are you sure you want to deploy? (y/n) " -n 1 -r
|
|
echo
|
|
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# Authenticate gh CLI
|
|
gh_auth
|
|
|
|
# get branch name and pr number
|
|
branchName=$(gh pr view --json headRefName | jq -r .headRefName)
|
|
prNumber=$(gh pr view --json number | jq -r .number)
|
|
|
|
if [[ "$dryRun" = true ]]; then
|
|
echo "dry run"
|
|
echo "branchName: ${branchName}"
|
|
echo "prNumber: ${prNumber}"
|
|
echo "experiments: ${experiments}"
|
|
echo "build: ${build}"
|
|
echo "deploy: ${deploy}"
|
|
exit 0
|
|
fi
|
|
|
|
echo "branchName: ${branchName}"
|
|
echo "prNumber: ${prNumber}"
|
|
echo "experiments: ${experiments}"
|
|
echo "build: ${build}"
|
|
echo "deploy: ${deploy}"
|
|
|
|
gh workflow run pr-deploy.yaml --ref "${branchName}" -f "experiments=${experiments}" -f "build=${build}" -f "deploy=${deploy}"
|