@ -5,213 +5,13 @@ on:
types : [ released]
workflow_dispatch:
env:
REPO_URL : communitiesuk/submit-social-housing-lettings-and-sales-data
defaults:
run:
shell : bash
jobs:
test:
name : Test
runs-on : ubuntu-latest
outputs:
releasetag : ${{ steps.latestrelease.outputs.releasetag }}
services:
postgres:
image : postgres:13.5
env:
POSTGRES_PASSWORD : password
POSTGRES_USER : postgres
POSTGRES_DB : data_collector
ports:
- 5432 : 5432
# Needed because the Postgres container does not provide a health check
# tmpfs makes database faster by using RAM
options : >-
--mount type=tmpfs,destination=/var/lib/postgresql/data
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
RAILS_ENV : test
GEMFILE_RUBY_VERSION : 3.1 .1
DB_HOST : localhost
DB_DATABASE : data_collector
DB_USERNAME : postgres
DB_PASSWORD : password
RAILS_MASTER_KEY : ${{ secrets.RAILS_MASTER_KEY }}
PARALLEL_TEST_PROCESSORS : 4
steps:
- name : Get latest release with tag
id : latestrelease
run : |
echo "releasetag=$(curl -s https://api.github.com/repos/${REPO_URL}/releases/latest | jq '.tag_name' | sed 's/\"//g')" >> $GITHUB_OUTPUT
- name : Confirm release tag
run : |
echo ${{ steps.latestrelease.outputs.releasetag }}
- name : Checkout tag
uses : actions/checkout@v3
with:
ref : ${{ steps.latestrelease.outputs.releasetag }}
- name : Set up Ruby
uses : ruby/setup-ruby@v1
with:
bundler-cache : true
- name : Set up node
uses : actions/setup-node@v3
with:
cache : yarn
node-version : 20
- name : Create database
run : |
bundle exec rake parallel:setup
- name : Compile Assets
run : |
bundle exec rake assets:precompile
- name : Run tests
run : |
bundle exec rake parallel:spec['spec\/(?!features)']
feature_test:
name : Feature Tests
if : '!github.event.pull_request.draft'
runs-on : ubuntu-latest
services:
postgres:
image : postgres:13.5
env:
POSTGRES_PASSWORD : password
POSTGRES_USER : postgres
POSTGRES_DB : data_collector
ports:
- 5432 : 5432
# Needed because the Postgres container does not provide a health check
# tmpfs makes database faster by using RAM
options : >-
--mount type=tmpfs,destination=/var/lib/postgresql/data
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
RAILS_ENV : test
GEMFILE_RUBY_VERSION : 3.1 .1
DB_HOST : localhost
DB_DATABASE : data_collector
DB_USERNAME : postgres
DB_PASSWORD : password
RAILS_MASTER_KEY : ${{ secrets.RAILS_MASTER_KEY }}
steps:
- name : Checkout
uses : actions/checkout@v3
- name : Set up Ruby
uses : ruby/setup-ruby@v1
with:
bundler-cache : true
- name : Set up Node.js
uses : actions/setup-node@v3
with:
cache : yarn
node-version : 20
- name : Create database
run : |
bundle exec rake db:prepare
- name : Compile assets
run : |
bundle exec rake assets:precompile
- name : Run tests
run : |
bundle exec rspec spec/features --fail-fast
lint:
name : Lint
runs-on : ubuntu-latest
steps:
- name : Get latest release with tag
id : latestrelease
run : |
echo "::set-output name=releasetag::$(curl -s https://api.github.com/repos/${REPO_URL}/releases/latest | jq '.tag_name' | sed 's/\"//g')"
- name : Confirm release tag
run : |
echo ${{ steps.latestrelease.outputs.releasetag }}
- name : Checkout tag
uses : actions/checkout@v3
with:
ref : ${{ steps.latestrelease.outputs.releasetag }}
- name : Set up Ruby
uses : ruby/setup-ruby@v1
with:
bundler-cache : true
- name : Set up Node.js
uses : actions/setup-node@v3
with:
cache : yarn
node-version : 20
- name : Install packages and symlink local dependencies
run : |
yarn install --immutable --immutable-cache --check-cache
- name : Lint
run : |
bundle exec rake lint
audit:
name : Audit dependencies
runs-on : ubuntu-latest
steps:
- name : Get latest release with tag
id : latestrelease
run : |
echo "::set-output name=releasetag::$(curl -s https://api.github.com/repos/${REPO_URL}/releases/latest | jq '.tag_name' | sed 's/\"//g')"
- name : Confirm release tag
run : |
echo ${{ steps.latestrelease.outputs.releasetag }}
- name : Checkout tag
uses : actions/checkout@v3
with:
ref : ${{ steps.latestrelease.outputs.releasetag }}
- name : Set up Ruby
uses : ruby/setup-ruby@v1
with:
bundler-cache : true
- name : Audit
run : |
bundle exec bundler-audit
aws_deploy:
name : AWS Deploy
needs : [ lint, test, feature_test, audit]
uses : ./.github/workflows/aws_deploy.yml
with:
aws_account_id : 977287343304