You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
106 lines
3.9 KiB
106 lines
3.9 KiB
2 years ago
|
## Infrastructure
|
||
|
|
||
|
This application is running on [GOV.UK PaaS](https://www.cloud.service.gov.uk/). To deploy you need to:
|
||
|
|
||
|
1. Contact your organisation manager to get an account in `dluhc-core` organization and in the relevant spaces (staging/production).
|
||
|
|
||
|
2. [Install the Cloud Foundry CLI](https://docs.cloudfoundry.org/cf-cli/install-go-cli.html)
|
||
|
|
||
|
3. Login:\
|
||
|
`cf login -a api.london.cloud.service.gov.uk -u <your_username>`
|
||
|
|
||
|
4. Set your deployment target (staging/production):\
|
||
|
`cf target -o dluhc-core -s <deploy_environment>`
|
||
|
|
||
|
5. Deploy:\
|
||
|
`cf push dluhc-core --strategy rolling`. This will use the [manifest file](staging_manifest.yml)
|
||
|
|
||
|
Once the app is deployed:
|
||
|
|
||
|
1. Get a Rails console:\
|
||
|
`cf ssh dluhc-core-staging -t -c "/tmp/lifecycle/launcher /home/vcap/app 'rails console' ''"`
|
||
|
|
||
|
2. Check logs:\
|
||
|
`cf logs dluhc-core-staging --recent`
|
||
|
|
||
|
### Troubleshooting deployments
|
||
|
|
||
|
A failed Github deployment action will occasionally leave a Cloud Foundry deployment in a broken state. As a result all subsequent Github deployment actions will also fail with the message `Cannot update this process while a deployment is in flight`.
|
||
|
|
||
|
`
|
||
|
cf cancel-deployment dluhc-core
|
||
|
`
|
||
|
|
||
|
You'd then need to check the logs and fix the issue that caused the initial deployment to fail.
|
||
|
|
||
|
## CI/CD
|
||
|
|
||
|
When a commit is made to `main` the following GitHub action jobs are triggered:
|
||
|
|
||
|
1. **Test**: RSpec runs our test suite
|
||
|
2. **Deploy**: If the Test stage passes, this job will deploy the app to our GOV.UK PaaS account using the Cloud Foundry CLI
|
||
|
|
||
|
When a pull request is opened to `main` only the Test stage runs.
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
## Setting up Infrastructure for a new environment
|
||
|
|
||
|
### Staging
|
||
3 years ago
|
|
||
|
1. Login:\
|
||
3 years ago
|
`cf login -a api.london.cloud.service.gov.uk -u <your_username>`
|
||
3 years ago
|
|
||
|
2. Set your deployment target (staging):\
|
||
3 years ago
|
`cf target -o dluhc-core -s staging`
|
||
3 years ago
|
|
||
|
3. Create required Postgres and S3 bucket backing services (this will take ~15 mins to finish creating):\
|
||
|
`cf create-service postgres tiny-unencrypted-13 dluhc-core-staging-postgres`
|
||
|
|
||
|
`cf create-service aws-s3-bucket default dluhc-core-staging-import-bucket`
|
||
|
|
||
|
`cf create-service aws-s3-bucket default dluhc-core-staging-export-bucket`
|
||
|
|
||
3 years ago
|
4. Deploy manifest:\
|
||
|
`cf push dluhc-core-staging --strategy rolling`
|
||
|
|
||
|
5. Bind S3 services to app:\
|
||
3 years ago
|
`cf bind-service dluhc-core-staging dluhc-core-staging-import-bucket -c '{"permissions": "read-only"}'`
|
||
|
|
||
|
`cf bind-service dluhc-core-staging dluhc-core-staging-export-bucket -c '{"permissions": "read-write"}'`
|
||
|
|
||
3 years ago
|
6. Create a service keys for accessing the S3 bucket from outside Gov PaaS:\
|
||
|
`cf create-service-key dluhc-core-staging-import-bucket data-import -c '{"allow_external_access": true}'`
|
||
|
|
||
|
`cf create-service-key dluhc-core-staging-export-bucket data-export -c '{"allow_external_access": true, "permissions": "read-only"}'`
|
||
|
|
||
3 years ago
|
|
||
2 years ago
|
### Production
|
||
3 years ago
|
|
||
|
1. Login:\
|
||
|
`cf login -a api.london.cloud.service.gov.uk -u <your_username>`
|
||
|
|
||
|
2. Set your deployment target (production):\
|
||
|
`cf target -o dluhc-core -s production`
|
||
|
|
||
|
3. Create required Postgres and S3 bucket backing services (this will take ~15 mins to finish creating):\
|
||
|
`cf create-service postgres small-ha-13 dluhc-core-production-postgres`
|
||
|
|
||
|
`cf create-service aws-s3-bucket default dluhc-core-production-import-bucket`
|
||
|
|
||
|
`cf create-service aws-s3-bucket default dluhc-core-production-export-bucket`
|
||
|
|
||
3 years ago
|
4. Deploy manifest:\
|
||
3 years ago
|
`cf push dluhc-core-production --strategy rolling`
|
||
|
|
||
|
5. Bind S3 services to app:\
|
||
|
`cf bind-service dluhc-core-production dluhc-core-production-import-bucket -c '{"permissions": "read-only"}'`
|
||
|
|
||
|
`cf bind-service dluhc-core-production dluhc-core-production-export-bucket -c '{"permissions": "read-write"}'`
|
||
3 years ago
|
|
||
|
6. Create a service keys for accessing the S3 bucket from outside Gov PaaS:\
|
||
|
`cf create-service-key dluhc-core-production-import-bucket data-import -c '{"allow_external_access": true}'`
|
||
|
|
||
|
`cf create-service-key dluhc-core-production-export-bucket data-export -c '{"allow_external_access": true, "permissions": "read-only"}'`
|