Skip to content
Draft
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
294 changes: 14 additions & 280 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -103,308 +103,42 @@ commands:
sls deploy --stage <<parameters.stage>> --conceal

jobs:
check-code-formatting:
executor: docker-dotnet
steps:
- checkout
- run:
name: Install dotnet format
command: dotnet tool install dotnet-format --tool-path ./dotnet-format-local/
- run:
name: Run formatter check
command: ./dotnet-format-local/dotnet-format --check
build-and-test:
executor: docker-python
steps:
- checkout
- setup_remote_docker
- run:
name: build
command: docker compose build configuration-api-test
- run:
name: Run tests
command: docker compose run configuration-api-test
- run:
name: Prepare the report
command: |
mkdir coverage
docker cp $(docker ps -aqf "name=configuration-api-test"):/app/coverage ./
sed -i "s|/app/|$(pwd)/|g" coverage/*/coverage.opencover.xml
- sonarcloud/scan
assume-role-development:
executor: docker-python
steps:
- assume-role-and-persist-workspace:
aws-account: $AWS_ACCOUNT_DEVELOPMENT
assume-role-staging:
assume-role-disaster-recovery:
executor: docker-python
steps:
- assume-role-and-persist-workspace:
aws-account: $AWS_ACCOUNT_STAGING
assume-role-production:
executor: docker-python
steps:
- assume-role-and-persist-workspace:
aws-account: $AWS_ACCOUNT_PRODUCTION
terraform-init-and-apply-to-development:
executor: docker-terraform
steps:
- terraform-init-then-apply:
environment: "development"
terraform-init-and-apply-to-staging:
executor: docker-terraform
steps:
- terraform-init-then-apply:
environment: "staging"
terraform-init-and-apply-to-production:
aws-account: $AWS_ACCOUNT_DISASTER_RECOVERY
terraform-init-and-apply-to-disaster-recovery:
executor: docker-terraform
steps:
- terraform-init-then-apply:
environment: "production"
preview-development-terraform:
executor: docker-terraform
steps:
- terraform-preview:
environment: "development"
preview-staging-terraform:
executor: docker-terraform
steps:
- terraform-preview:
environment: "staging"
preview-production-terraform:
preview-disaster-recovery-terraform:
executor: docker-terraform
steps:
- terraform-preview:
environment: "production"
deploy-to-development:
executor: docker-dotnet
steps:
- deploy-lambda:
stage: "development"
deploy-to-staging:
executor: docker-dotnet
steps:
- deploy-lambda:
stage: "staging"
deploy-to-production:
deploy-to-disaster-recovery:
executor: docker-dotnet
steps:
- deploy-lambda:
stage: "production"
assume-role-pre-production:
executor: docker-python
steps:
- assume-role-and-persist-workspace:
aws-account: $AWS_ACCOUNT_PRE_PRODUCTION
preview-pre-production-terraform:
executor: docker-terraform
steps:
- terraform-preview:
environment: "pre-production"
terraform-init-and-apply-pre-production:
executor: docker-terraform
steps:
- terraform-init-then-apply:
environment: "pre-production"
deploy-to-pre-production:
executor: docker-dotnet
steps:
- deploy-lambda:
stage: "pre-production"

workflows:
feature:
jobs:
- check-code-formatting:
context: api-nuget-token-context
filters:
branches:
ignore:
- master
- release
- build-and-test:
context:
- api-nuget-token-context
- SonarCloud
filters:
branches:
ignore:
- master
- release
- assume-role-development:
context: api-assume-role-housing-development-context
filters:
branches:
ignore:
- master
- release
- preview-development-terraform:
requires:
- assume-role-development
- assume-role-staging:
context: api-assume-role-housing-staging-context
filters:
branches:
ignore:
- master
- release
- preview-staging-terraform:
requires:
- assume-role-staging
- assume-role-production:
context: api-assume-role-housing-production-context
filters:
branches:
ignore:
- master
- release
- preview-production-terraform:
requires:
- assume-role-production
development:
jobs:
- check-code-formatting:
context: api-nuget-token-context
filters:
branches:
only: master
- build-and-test:
context:
- api-nuget-token-context
- SonarCloud
filters:
branches:
only: master
- assume-role-development:
context: api-assume-role-housing-development-context
requires:
- build-and-test
filters:
branches:
only: master
- terraform-init-and-apply-to-development:
requires:
- assume-role-development
filters:
branches:
only: master
- deploy-to-development:
context:
- api-nuget-token-context
- "Serverless Framework"
requires:
- terraform-init-and-apply-to-development
filters:
branches:
only: master
staging-and-production:
disaster-recovery:
jobs:
- check-code-formatting:
context: api-nuget-token-context
filters:
branches:
only: release
- build-and-test:
context:
- api-nuget-token-context
- SonarCloud
filters:
branches:
only: release
- assume-role-staging:
context: api-assume-role-housing-staging-context
- assume-role-disaster-recovery:
context: api-assume-role-disaster-recovery-context
- terraform-init-and-apply-to-disaster-recovery:
requires:
- build-and-test
filters:
branches:
only: release
- terraform-init-and-apply-to-staging:
requires:
- assume-role-staging
filters:
branches:
only: release
- deploy-to-staging:
context:
- api-nuget-token-context
- "Serverless Framework"
requires:
- terraform-init-and-apply-to-staging
filters:
branches:
only: release
- permit-production-terraform-release:
- assume-role-disaster-recovery
- permit-disaster-recovery-release:
type: approval
requires:
- deploy-to-staging
- assume-role-production:
context: api-assume-role-housing-production-context
requires:
- permit-production-terraform-release
filters:
branches:
only: release
- terraform-init-and-apply-to-production:
requires:
- assume-role-production
filters:
branches:
only: release
- permit-production-release:
type: approval
requires:
- terraform-init-and-apply-to-production
filters:
branches:
only: release
- deploy-to-production:
- terraform-init-and-apply-to-disaster-recovery
- deploy-to-disaster-recovery:
context:
- api-nuget-token-context
- "Serverless Framework"
requires:
- permit-production-release
filters:
branches:
only: release

deploy-terraform-pre-production:
jobs:
- permit-pre-production-terraform-workflow:
type: approval
filters:
branches:
only: release
- assume-role-pre-production:
context: api-assume-role-housing-pre-production-context
requires:
- permit-pre-production-terraform-workflow
- preview-pre-production-terraform:
requires:
- assume-role-pre-production
- permit-pre-production-terraform-deployment:
type: approval
requires:
- preview-pre-production-terraform
- terraform-init-and-apply-pre-production:
requires:
- permit-pre-production-terraform-deployment

deploy-code-pre-production:
jobs:
- build-and-test:
filters:
branches:
only: release
context:
- api-nuget-token-context
- SonarCloud
- assume-role-pre-production:
context: api-assume-role-housing-pre-production-context
requires:
- build-and-test
- deploy-to-pre-production:
context:
- api-nuget-token-context
- "Serverless Framework"
requires:
- assume-role-pre-production
- permit-disaster-recovery-release
14 changes: 7 additions & 7 deletions ConfigurationApi/V1/Gateway/S3ConfigurationGateway.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,19 +26,19 @@ public async Task<ApiConfiguration> Get(string type)
{
GetObjectRequest request = new GetObjectRequest { BucketName = _bucketName, Key = type };

try
{
// try
// {
using (GetObjectResponse response = await _amazonS3Client.GetObjectAsync(request))
using (Stream responseStream = response.ResponseStream)
using (StreamReader reader = new StreamReader(responseStream))
{
return JsonConvert.DeserializeObject<ApiConfiguration>(reader.ReadToEnd());
}
}
catch
{
return null;
}
// }
// catch
// {
// return null;
// }
}
}
}
Loading
Loading