Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 29 additions & 3 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,14 @@ jobs:
path: coverage

deploy:
parameters:
deploy_environment:
type: enum
enum:
- staging
- demo
- production
default: staging
docker:
- image: cimg/base:2025.01
steps:
Expand All @@ -162,7 +170,7 @@ jobs:
# echo "Removing prebuilt Rust library (will be rebuilt on CF)..."
# rm -rf ext/widget_renderer/target/release/libwidget_renderer.so 2>/dev/null || true
# rm -f ext/widget_renderer/libwidget_renderer.so 2>/dev/null || true
./.circleci/deploy-sidekiq.sh
./.circleci/deploy-sidekiq.sh << parameters.deploy_environment >>
no_output_timeout: 30m

- run:
Expand All @@ -174,7 +182,7 @@ jobs:
# echo "Removing prebuilt Rust library (will be rebuilt on CF)..."
# rm -rf ext/widget_renderer/target/release/libwidget_renderer.so 2>/dev/null || true
# rm -f ext/widget_renderer/libwidget_renderer.so 2>/dev/null || true
./.circleci/deploy.sh
./.circleci/deploy.sh << parameters.deploy_environment >>
no_output_timeout: 30m

cron_tasks:
Expand Down Expand Up @@ -215,11 +223,29 @@ workflows:
requires:
- build
- deploy:
name: deploy-to-staging
deploy_environment: staging
requires:
- test
filters:
branches:
only:
- develop
- main
- deploy:
name: deploy-to-demo
deploy_environment: demo
requires:
- test
filters:
branches:
only:
- production
- deploy:
name: deploy-to-production
deploy_environment: production
requires:
- test
filters:
branches:
only:
- production
71 changes: 37 additions & 34 deletions .circleci/deploy-sidekiq.sh
Original file line number Diff line number Diff line change
Expand Up @@ -166,40 +166,43 @@ cf_push_with_retry() {
return 1
}

if [ "${CIRCLE_BRANCH}" == "production" ]
then
echo "Logging into cloud.gov"
# Log into CF and push
cf login -a $CF_API_ENDPOINT -u $CF_PRODUCTION_SPACE_DEPLOYER_USERNAME -p $CF_PRODUCTION_SPACE_DEPLOYER_PASSWORD -o $CF_ORG -s prod
echo "PUSHING to PRODUCTION..."
echo "Syncing Login.gov environment variables..."
./.circleci/sync-login-gov-env.sh touchpoints-production-sidekiq-worker
cf_push_with_retry touchpoints-production-sidekiq-worker
echo "Push to Production Complete."
else
echo "Not on the production branch."
fi
TARGET_ENV="${1:-}"

if [ "${CIRCLE_BRANCH}" == "main" ]
then
echo "Logging into cloud.gov"
# Log into CF and push
cf login -a $CF_API_ENDPOINT -u $CF_USERNAME -p $CF_PASSWORD -o $CF_ORG -s $CF_SPACE
echo "Pushing to Demo..."
cf_push_with_retry touchpoints-demo-sidekiq-worker
echo "Push to Demo Complete."
else
echo "Not on the main branch."
if [ -z "$TARGET_ENV" ]; then
echo "Usage: ./.circleci/deploy-sidekiq.sh <production|demo|staging>"
exit 1
fi

if [ "${CIRCLE_BRANCH}" == "develop" ]
then
echo "Logging into cloud.gov"
# Log into CF and push
cf login -a $CF_API_ENDPOINT -u $CF_USERNAME -p $CF_PASSWORD -o $CF_ORG -s $CF_SPACE
echo "Pushing to Staging..."
cf_push_with_retry touchpoints-staging-sidekiq-worker
echo "Push to Staging Complete."
else
echo "Not on the develop branch."
fi
case "$TARGET_ENV" in
production)
echo "Logging into cloud.gov"
# Log into CF and push
cf login -a $CF_API_ENDPOINT -u $CF_PRODUCTION_SPACE_DEPLOYER_USERNAME -p $CF_PRODUCTION_SPACE_DEPLOYER_PASSWORD -o $CF_ORG -s prod
echo "PUSHING to PRODUCTION..."
echo "Syncing Login.gov environment variables..."
./.circleci/sync-login-gov-env.sh touchpoints-production-sidekiq-worker
cf_push_with_retry touchpoints-production-sidekiq-worker
echo "Push to Production Complete."
;;
demo)
echo "Logging into cloud.gov"
# Log into CF and push
cf login -a $CF_API_ENDPOINT -u $CF_USERNAME -p $CF_PASSWORD -o $CF_ORG -s $CF_SPACE
echo "Pushing to Demo..."
cf_push_with_retry touchpoints-demo-sidekiq-worker
echo "Push to Demo Complete."
;;
staging)
echo "Logging into cloud.gov"
# Log into CF and push
cf login -a $CF_API_ENDPOINT -u $CF_USERNAME -p $CF_PASSWORD -o $CF_ORG -s $CF_SPACE
echo "Pushing to Staging..."
cf_push_with_retry touchpoints-staging-sidekiq-worker
echo "Push to Staging Complete."
;;
*)
echo "Unknown environment: $TARGET_ENV"
echo "Usage: ./.circleci/deploy-sidekiq.sh <production|demo|staging>"
exit 1
;;
esac
71 changes: 37 additions & 34 deletions .circleci/deploy.sh
Original file line number Diff line number Diff line change
Expand Up @@ -281,40 +281,43 @@ cf_push_with_retry() {
return 1
}

if [ "${CIRCLE_BRANCH}" == "production" ]
then
echo "Logging into cloud.gov"
# Log into CF and push
cf login -a $CF_API_ENDPOINT -u $CF_PRODUCTION_SPACE_DEPLOYER_USERNAME -p $CF_PRODUCTION_SPACE_DEPLOYER_PASSWORD -o $CF_ORG -s prod
echo "PUSHING web servers to Production..."
echo "Syncing Login.gov environment variables..."
./.circleci/sync-login-gov-env.sh touchpoints
cf_push_with_retry touchpoints touchpoints.yml false
echo "Push to Production Complete."
else
echo "Not on the production branch."
fi
TARGET_ENV="${1:-}"

if [ "${CIRCLE_BRANCH}" == "main" ]
then
echo "Logging into cloud.gov"
# Log into CF and push
cf login -a $CF_API_ENDPOINT -u $CF_USERNAME -p $CF_PASSWORD -o $CF_ORG -s $CF_SPACE
echo "Pushing web servers to Demo..."
cf_push_with_retry touchpoints-demo "" true
echo "Push to Demo Complete."
else
echo "Not on the main branch."
if [ -z "$TARGET_ENV" ]; then
echo "Usage: ./.circleci/deploy.sh <production|demo|staging>"
exit 1
fi

if [ "${CIRCLE_BRANCH}" == "develop" ]
then
echo "Logging into cloud.gov"
# Log into CF and push
cf login -a $CF_API_ENDPOINT -u $CF_USERNAME -p $CF_PASSWORD -o $CF_ORG -s $CF_SPACE
echo "Pushing web servers to Staging..."
cf_push_with_retry touchpoints-staging "" true
echo "Push to Staging Complete."
else
echo "Not on the develop branch."
fi
case "$TARGET_ENV" in
production)
echo "Logging into cloud.gov"
# Log into CF and push
cf login -a $CF_API_ENDPOINT -u $CF_PRODUCTION_SPACE_DEPLOYER_USERNAME -p $CF_PRODUCTION_SPACE_DEPLOYER_PASSWORD -o $CF_ORG -s prod
echo "PUSHING web servers to Production..."
echo "Syncing Login.gov environment variables..."
./.circleci/sync-login-gov-env.sh touchpoints
cf_push_with_retry touchpoints touchpoints.yml false
echo "Push to Production Complete."
;;
demo)
echo "Logging into cloud.gov"
# Log into CF and push
cf login -a $CF_API_ENDPOINT -u $CF_USERNAME -p $CF_PASSWORD -o $CF_ORG -s $CF_SPACE
echo "Pushing web servers to Demo..."
cf_push_with_retry touchpoints-demo "" true
echo "Push to Demo Complete."
;;
staging)
echo "Logging into cloud.gov"
# Log into CF and push
cf login -a $CF_API_ENDPOINT -u $CF_USERNAME -p $CF_PASSWORD -o $CF_ORG -s $CF_SPACE
echo "Pushing web servers to Staging..."
cf_push_with_retry touchpoints-staging "" true
echo "Push to Staging Complete."
;;
*)
echo "Unknown environment: $TARGET_ENV"
echo "Usage: ./.circleci/deploy.sh <production|demo|staging>"
exit 1
;;
esac