Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feature/document-env-vars #249

Merged
merged 6 commits into from Aug 20, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 1 addition & 2 deletions .bp-config/options.json
Expand Up @@ -6,7 +6,6 @@
"ADDITIONAL_PREPROCESS_CMDS": [
"php artisan migrate --force",
"php artisan config:cache",
"php artisan route:cache",
"php artisan ck:decrypt-oauth-keys --public-key-name=oauth-public-staging.key --private-key-name=oauth-private-staging.key"
"php artisan route:cache"
]
}
20 changes: 3 additions & 17 deletions .cfignore
@@ -1,19 +1,5 @@
/database/diagrams/*.bak
/.github
/bootstrap/cache/packages.php
/bootstrap/cache/services.php
/node_modules
#/public/css
#/public/js
#/public/hot
#/public/storage
#/public/mix-manifest.json
/storage/*.key
/vendor
/.idea
/.vscode
/.vagrant
Homestead.json
Homestead.yaml
npm-debug.log
yarn-error.log
.env

/.github
32 changes: 28 additions & 4 deletions .env.example
@@ -1,41 +1,65 @@
# The name of the application.
APP_NAME="Connected Kingston"
# The application environment.
APP_ENV=local
# The unique application key.
APP_KEY=
# If the application is in debug mode.
APP_DEBUG=true
# The URL the application is hosted on (used in the CLI).
APP_URL=http://localhost
# The URL of the admin web app.
BACKEND_URI=http://localhost:8080

# The logging configuration.
LOG_CHANNEL=stack
BUGSNAG_API_KEY=

DB_CONNECTION=mysql
# The database configuation.
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=connected_kingston
DB_USERNAME=connected_kingston
DB_PASSWORD=secret

# The AWS credentials.
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=

# The filesystem configuration.
FILESYSTEM_CLOUD=local_cloud
AWS_BUCKET=

# The sessions configuration.
SESSION_LIFETIME=20

# The queue configuration.
QUEUE_DRIVER=sync

# The Redis configuration.
REDIS_CLUSTER=redis
REDIS_SCHEME=tcp
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=7000

# The geocoding configuration.
GEOCODE_DRIVER=google
GOOGLE_API_KEY=

# The email configuration.
EMAIL_DRIVER=log

# The SMS configuration.
SMS_DRIVER=log

# The GOV.UK Notify credentails.
GOV_NOTIFY_API_KEY=
GLOBAL_ADMIN_EMAIL=info+connected-kingston@ayup.agency
BACKEND_URI=http://localhost:8080
OTP_ENABLED=false
FILESYSTEM_CLOUD=local_cloud

# The Elasticsearch configuration.
SCOUT_ELASTIC_HOST=elasticsearch

# If 2FA should be required.
OTP_ENABLED=false
130 changes: 34 additions & 96 deletions .travis.yml
@@ -1,115 +1,53 @@
language: php

php:
- "7.2"

env:
- >
COMPOSER_PROCESS_TIMEOUT=0
ES_VERSION=6.3.0
ES_DOWNLOAD_URL=https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-${ES_VERSION}.tar.gz

services:
- redis-server

addons:
apt:
sources:
- mysql-5.7-trusty
packages:
- mysql-server

dist: trusty

sudo: required

if: tag IS blank

branches:
only:
- master
- develop

cache:
directories:
- vendor
- node_modules

before_install:
- wget -q -O - https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key | sudo apt-key add -
- echo "deb https://packages.cloudfoundry.org/debian stable main" | sudo tee /etc/apt/sources.list.d/cloudfoundry-cli.list
- sudo apt-get update
- sudo apt-get install -y --allow-unauthenticated cf-cli
- wget ${ES_DOWNLOAD_URL} -P /tmp
- mkdir -p /opt/elasticsearch-${ES_VERSION} && tar -xzf /tmp/elasticsearch-${ES_VERSION}.tar.gz -C /opt/elasticsearch-${ES_VERSION}
- /opt/elasticsearch-${ES_VERSION}/bin/elasticsearch &
language: python
python:
- "2.7"

install:
- composer self-update
- composer install --no-interaction
- npm install
- npm run dev
sudo: required
services:
- docker

before_script:
- sudo -i service elasticsearch start && sleep 10
- mysql -e 'create database ck_testing;'
- php artisan migrate --force
- php artisan passport:keys
- sudo service mysql stop
- ./develop build
- ./develop up -d
- ./develop composer install
- ./develop run --rm -T app mv .env.example .env
- ./develop artisan key:generate
- ./develop artisan passport:keys

script:
- composer test:style
- composer test:unit
- ./develop composer test:style
- ./develop composer test:unit

after_failure:
- cat storage/logs/testing.log

before_deploy: |
if ! [[ ${HAS_RAN_BEFORE_DEPLOY} ]]; then
export HAS_RAN_BEFORE_DEPLOY="TRUE"

# AWS CLI.
curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"
unzip awscli-bundle.zip
sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws

# CloudFoundry CLI.
wget -q -O - https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key | sudo apt-key add -
echo "deb https://packages.cloudfoundry.org/debian stable main" | sudo tee /etc/apt/sources.list.d/cloudfoundry-cli.list
sudo apt-get update && sudo apt-get install -y --allow-unauthenticated cf-cli
fi

deploy:
- provider: script
script: bash scripts/Deploy.sh
skip_cleanup: true
on:
repo: RoyalBoroughKingston/ck-api
branch: develop
- provider: codedeploy
revision_type: github
access_key_id:
secure: OHgcyqIqktrpJN8F9/Q2UZP5Q5V6EFqj26DIqzVaPUq/o0sm9u+JF1+JBHMtXroRtVYWBmofEn7bfmas3vTTaHwUutj/cbqTwMdSGq+JCLxAlm+Guvqh0aN/8lc8dfrkqeenaI9+ymRYVNVcc0OqimugO1INdysjaTmvZmCEE8gAX2KmfusuDscgw3sC4/Auk3JekfvVpB/JnhVVZNzpoT6DBn+tCYcv00Mk2MAFVxkZpKrjm54sAhiBfZFmeHnaQCcTIsIVV8rIEX2lmIfx2k/DBRjpLMlsjJtvii7nsTUKCSX3XNJzSUD+hKTy4Dwgt3svgaPpX1Fl01uFoXWY2Z2/cPGjTymbGVsdQ12NfmfhdiId9Q3dgwIOkFt64vnmne8YKaAn9qyxLHfpN3qxnvSZfxN6fnRmRK1CxCSwIQ8l/3u8di46NpXAQBMJZgNx8bRdnA09lW7/WAuYYQYxnKz72giHCOAJ1MwkD2EgklJMzOUIo8smJrcAEsosscOEZdIKzmbPvutY+5zrzUHoPyVMf2mLj9AT86IggbQysuG7+vSL6laBTr/BUjhye8fn6Oq2n+qfNNfd+bvWX2VU9baN9xkJfGhYJD9IBasxP2h3J5FTKIxa6LOmmq2zVAeVz7qyHLLMNOz99nJqTilhvTKLhUfiS+7Krwqwz7liFdk=
secret_access_key:
secure: Go8xNf3Z4+OOGyJ8NlwL9RUD8boyX1+5WN59L6nHUx3TYVKE0qtyBMb1m1SGyZVhvUN1vC+rYNX1AOA5hMhLBuG3VsSVJGjMBGWJfoXo1PfMg6AyinrCWeUuntR3TXA2RE3urt404QkF8hz+0Mbj4aBEa/qxciQ37eSK7d1T2kSeVcihJzVcXo8hYB1Z9Acq1XbQQAdxwQC1mrw7KfKWQi3hsYoVRXfbatCux9Tx/8F14BPsjHCL6zrEuw1KTzOf5RgAbAZWXbPIK/9kPtHKHWv007bhQ0gMP5A248fMRSHeqBmZ4t1IkCt61fvQUnR3kf7ZQvJHN5nsRRIJhMDbOvqqwKTy0inCMHB5EGW2vc9oF5Q/YQMyNITjSMrkwUn9E23geB7HFNASoUN4wH/FSiB++GC+8QbDpEzFi7vLTIxxDScjT8iFJozp8LIq6s1pkdvV07tiRwayx0R2HK4GkzJH9q0JN5e5DDLMPoaDQqshGm+mc3wu1L9hN9Z0wJqHbWMs6iBv3Zj5KJbyt++s26+DSo3VJgUlA66lSJRfxsFVO23uyBAsda09gLgRCqZjfNddoBcdys62qP0kyIcbNyEAsrMJI8irW6rkcIa9BxbXPmpYc2djJtHJdSAjWIbe+/F8rOl90YOsno3cbvjMNSDKimm4xB4CucN42gJkvkw=
application: CK-API-v2
deployment_group: CK-API-v2-Deployment-Production
region: eu-west-1
script: ./.travis/deploy
skip_cleanup: true
on:
repo: RoyalBoroughKingston/ck-api
branch: master
- provider: codedeploy
revision_type: github
access_key_id:
secure: OHgcyqIqktrpJN8F9/Q2UZP5Q5V6EFqj26DIqzVaPUq/o0sm9u+JF1+JBHMtXroRtVYWBmofEn7bfmas3vTTaHwUutj/cbqTwMdSGq+JCLxAlm+Guvqh0aN/8lc8dfrkqeenaI9+ymRYVNVcc0OqimugO1INdysjaTmvZmCEE8gAX2KmfusuDscgw3sC4/Auk3JekfvVpB/JnhVVZNzpoT6DBn+tCYcv00Mk2MAFVxkZpKrjm54sAhiBfZFmeHnaQCcTIsIVV8rIEX2lmIfx2k/DBRjpLMlsjJtvii7nsTUKCSX3XNJzSUD+hKTy4Dwgt3svgaPpX1Fl01uFoXWY2Z2/cPGjTymbGVsdQ12NfmfhdiId9Q3dgwIOkFt64vnmne8YKaAn9qyxLHfpN3qxnvSZfxN6fnRmRK1CxCSwIQ8l/3u8di46NpXAQBMJZgNx8bRdnA09lW7/WAuYYQYxnKz72giHCOAJ1MwkD2EgklJMzOUIo8smJrcAEsosscOEZdIKzmbPvutY+5zrzUHoPyVMf2mLj9AT86IggbQysuG7+vSL6laBTr/BUjhye8fn6Oq2n+qfNNfd+bvWX2VU9baN9xkJfGhYJD9IBasxP2h3J5FTKIxa6LOmmq2zVAeVz7qyHLLMNOz99nJqTilhvTKLhUfiS+7Krwqwz7liFdk=
secret_access_key:
secure: Go8xNf3Z4+OOGyJ8NlwL9RUD8boyX1+5WN59L6nHUx3TYVKE0qtyBMb1m1SGyZVhvUN1vC+rYNX1AOA5hMhLBuG3VsSVJGjMBGWJfoXo1PfMg6AyinrCWeUuntR3TXA2RE3urt404QkF8hz+0Mbj4aBEa/qxciQ37eSK7d1T2kSeVcihJzVcXo8hYB1Z9Acq1XbQQAdxwQC1mrw7KfKWQi3hsYoVRXfbatCux9Tx/8F14BPsjHCL6zrEuw1KTzOf5RgAbAZWXbPIK/9kPtHKHWv007bhQ0gMP5A248fMRSHeqBmZ4t1IkCt61fvQUnR3kf7ZQvJHN5nsRRIJhMDbOvqqwKTy0inCMHB5EGW2vc9oF5Q/YQMyNITjSMrkwUn9E23geB7HFNASoUN4wH/FSiB++GC+8QbDpEzFi7vLTIxxDScjT8iFJozp8LIq6s1pkdvV07tiRwayx0R2HK4GkzJH9q0JN5e5DDLMPoaDQqshGm+mc3wu1L9hN9Z0wJqHbWMs6iBv3Zj5KJbyt++s26+DSo3VJgUlA66lSJRfxsFVO23uyBAsda09gLgRCqZjfNddoBcdys62qP0kyIcbNyEAsrMJI8irW6rkcIa9BxbXPmpYc2djJtHJdSAjWIbe+/F8rOl90YOsno3cbvjMNSDKimm4xB4CucN42gJkvkw=
application: CK-API-Queue
deployment_group: ck-queue-workers
region: eu-west-1
skip_cleanup: true
on:
repo: RoyalBoroughKingston/ck-api
branch: master
- provider: codedeploy
revision_type: github
access_key_id:
secure: OHgcyqIqktrpJN8F9/Q2UZP5Q5V6EFqj26DIqzVaPUq/o0sm9u+JF1+JBHMtXroRtVYWBmofEn7bfmas3vTTaHwUutj/cbqTwMdSGq+JCLxAlm+Guvqh0aN/8lc8dfrkqeenaI9+ymRYVNVcc0OqimugO1INdysjaTmvZmCEE8gAX2KmfusuDscgw3sC4/Auk3JekfvVpB/JnhVVZNzpoT6DBn+tCYcv00Mk2MAFVxkZpKrjm54sAhiBfZFmeHnaQCcTIsIVV8rIEX2lmIfx2k/DBRjpLMlsjJtvii7nsTUKCSX3XNJzSUD+hKTy4Dwgt3svgaPpX1Fl01uFoXWY2Z2/cPGjTymbGVsdQ12NfmfhdiId9Q3dgwIOkFt64vnmne8YKaAn9qyxLHfpN3qxnvSZfxN6fnRmRK1CxCSwIQ8l/3u8di46NpXAQBMJZgNx8bRdnA09lW7/WAuYYQYxnKz72giHCOAJ1MwkD2EgklJMzOUIo8smJrcAEsosscOEZdIKzmbPvutY+5zrzUHoPyVMf2mLj9AT86IggbQysuG7+vSL6laBTr/BUjhye8fn6Oq2n+qfNNfd+bvWX2VU9baN9xkJfGhYJD9IBasxP2h3J5FTKIxa6LOmmq2zVAeVz7qyHLLMNOz99nJqTilhvTKLhUfiS+7Krwqwz7liFdk=
secret_access_key:
secure: Go8xNf3Z4+OOGyJ8NlwL9RUD8boyX1+5WN59L6nHUx3TYVKE0qtyBMb1m1SGyZVhvUN1vC+rYNX1AOA5hMhLBuG3VsSVJGjMBGWJfoXo1PfMg6AyinrCWeUuntR3TXA2RE3urt404QkF8hz+0Mbj4aBEa/qxciQ37eSK7d1T2kSeVcihJzVcXo8hYB1Z9Acq1XbQQAdxwQC1mrw7KfKWQi3hsYoVRXfbatCux9Tx/8F14BPsjHCL6zrEuw1KTzOf5RgAbAZWXbPIK/9kPtHKHWv007bhQ0gMP5A248fMRSHeqBmZ4t1IkCt61fvQUnR3kf7ZQvJHN5nsRRIJhMDbOvqqwKTy0inCMHB5EGW2vc9oF5Q/YQMyNITjSMrkwUn9E23geB7HFNASoUN4wH/FSiB++GC+8QbDpEzFi7vLTIxxDScjT8iFJozp8LIq6s1pkdvV07tiRwayx0R2HK4GkzJH9q0JN5e5DDLMPoaDQqshGm+mc3wu1L9hN9Z0wJqHbWMs6iBv3Zj5KJbyt++s26+DSo3VJgUlA66lSJRfxsFVO23uyBAsda09gLgRCqZjfNddoBcdys62qP0kyIcbNyEAsrMJI8irW6rkcIa9BxbXPmpYc2djJtHJdSAjWIbe+/F8rOl90YOsno3cbvjMNSDKimm4xB4CucN42gJkvkw=
application: CK-API-Scheduler
deployment_group: CK-API-Scheduler-Deployment-Production
region: eu-west-1
skip_cleanup: true
on:
repo: RoyalBoroughKingston/ck-api
branch: master

notifications:
slack:
secure: "UYQa59/m3YMI/8Ycdsh6B6fc11k9Qy0ZJG2VovLwLhZLPZiN+wCvt70cqvGwSDvDLIhU2QgVMe7/oTl2vrHpJNdkTKuy/wbVrJkBK9q2/i/WF8YxCdrfsXFphXF3M90OjblvT3AHRakvoNGN4ChV3VDXWr7hG3+leJSBWXRszvztlGZ2ag6xxDqglY5rj+xVQh2rjAIEVvwr8BahLLpYWYl+tcKzHrK0X1tXHXf0VqdJI29Y4GggyroCSknLmD40c2Bcr4BwHmBkcGBCFIO0cIAEV2qxjejCxCoOVFlucqKcR4BH0lkf8FmRhuhgBD32mCFa7zYXUNmwj5KaIMsvZDI2wAQiIR/zYUeqxRriij20ag7IpaTyJY2VNXbUtb+/tHAg/Zd7MHhdgIjRSbrPnaFKz7920HvPcUXLFr9saBC+DuI9ratqWwhAoi2UtAFgfbx/oA8Ztzp9bpZoYf6D/4XWeKt8p3o1dhbDng1j6uZPSyhxGJ8EuiWu9iiyd9MbZU2A9K3Qi7dHs9m7d5wVHS0yf0N4jbiTbO/5G4/ZS71D50lfeAyjTBlfLhtHengVqbl5JVgXnW/MgSxawJPdYxv4CeiWrjvzn4VtPvKFtZUVQ9EeDcMD7PVPwjgPuMY5AeLNSll43jMU8j/wqrM0GhfzHqvy52JijV0BmPAvS/I="
branch:
- master
- develop
59 changes: 59 additions & 0 deletions .travis/deploy
@@ -0,0 +1,59 @@
#!/usr/bin/env bash

# Requires the following environment variables:
# $TRAVIS_BRANCH = The branch the build is against.
# $CF_API = The URI of the Cloud Foundry instance.
# $CF_USERNAME = The Cloud Foundry username.
# $CF_PASSWORD = The Cloud Foundry password.
# $CF_ORGANISATION = The Cloud Foundry organisation.
# $CF_SPACE = The Cloud Foundry space.

# Bail out on first error.
set -e

# Get the environment from the branch.
case ${TRAVIS_BRANCH} in
master )
ENVIRONMENT=production
;;
develop )
ENVIRONMENT=staging
;;
esac

# Declare the configuration variables for the deployment.
echo "Setting deployment configuration for ${ENVIRONMENT}..."
ENV_SECRET_ID=".env.api.${ENVIRONMENT}"
PUBLIC_KEY_SECRET_ID="oauth-public.key.${ENVIRONMENT}"
PRIVATE_KEY_SECRET_ID="oauth-private.key.${ENVIRONMENT}"
SECRETS_FILE=".travis/secrets.${ENVIRONMENT}.yml"

# Get the .env file.
echo "Downloading .env file..."
rm .env
aws secretsmanager get-secret-value \
--secret-id ${ENV_SECRET_ID} | \
python -c "import json,sys;obj=json.load(sys.stdin);print obj['SecretString'];" > .env

# Get the OAuth keys.
echo "Downloading public OAuth key..."
rm storage/oauth-public.key
aws secretsmanager get-secret-value \
--secret-id ${PUBLIC_KEY_SECRET_ID} | \
python -c "import json,sys;obj=json.load(sys.stdin);print obj['SecretString'];" > storage/oauth-public.key

echo "Downloading private OAuth key..."
rm storage/oauth-private.key
aws secretsmanager get-secret-value \
--secret-id ${PRIVATE_KEY_SECRET_ID} | \
python -c "import json,sys;obj=json.load(sys.stdin);print obj['SecretString'];" > storage/oauth-private.key

# Connect to the Cloud Foundry API.
echo "Logging into Cloud Foundry..."
cf api $CF_API

# Login to Cloud Foundry.
cf login -u $CF_USERNAME -p $CF_PASSWORD -o $CF_ORGANISATION -s $CF_SPACE

# Deploy.
cf push --vars-file "${SECRETS_FILE}"
2 changes: 2 additions & 0 deletions .travis/secrets.production.yml
@@ -0,0 +1,2 @@
---
route: api.connectedkingston.co.uk
2 changes: 2 additions & 0 deletions .travis/secrets.staging.yml
@@ -0,0 +1,2 @@
---
route: api.staging.connectedkingston.co.uk
50 changes: 0 additions & 50 deletions app/Console/Commands/Ck/DecryptOauthKeysCommand.php

This file was deleted.