generated from DFE-Digital/govuk-rails-boilerplate
-
Notifications
You must be signed in to change notification settings - Fork 1
140 lines (124 loc) · 6.15 KB
/
deploy_to_review_app.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
name: Create Review App
on:
pull_request:
branches: [ main ]
types: [ opened, synchronize, reopened ]
paths-ignore:
- 'documentation/**'
jobs:
deploy:
name: Deploy to Review App
if: ${{ github.actor != 'dependabot[bot]' }}
runs-on: ubuntu-20.04
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Install CloudFoundry CLI
shell: bash
run: |
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 cf7-cli
- name: Login to DockerHub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_DEV_PASSWORD }}
- name: Build and push docker image
uses: docker/build-push-action@v3
id: docker_build_push
with:
context: .
build-args: |
BUILDKIT_INLINE_CACHE=1
GIT_COMMIT_SHA=${{ github.sha }}
push: true
tags: dfedigital/early-careers-framework-dev:npq-registration-review-app-${{ github.event.number }}
provenance: false
- name: Deploy to Gov.uk PaaS
id: deploy-to-paas
shell: bash
env:
CF_DOCKER_PASSWORD: ${{ secrets.DOCKER_DEV_PASSWORD }}
PAAS_ORGANISATION: dfe
# This is a shared PAAS space
PAAS_SPACE: earlycareers-framework-dev
ENV_STUB: review-app-${{ github.event.number }}
ENV_STUB_DB: review-app-db
APP_NAME: npq-registration
REMOTE_DOCKER_IMAGE_NAME: dfedigital/early-careers-framework-dev
CF_USERNAME: ${{ secrets.GOVPAAS_DEV_USERNAME }}
CF_PASSWORD: ${{ secrets.GOVPAAS_DEV_PASSWORD }}
run: |
cf api https://api.london.cloud.service.gov.uk
cf auth
cf target -o "${{ env.PAAS_ORGANISATION }}" -s "${{ env.PAAS_SPACE }}"
cf push "${{ env.APP_NAME }}"-"${{ env.ENV_STUB }}" \
--manifest ./config/manifests/review-app-manifest.yml \
--var DOCKER_IMAGE_ID="${{ steps.docker_build_push.outputs.digest }}" \
--var SECRET_KEY_BASE="${{ secrets.RAILS_SECRET_KEY_BASE_DEV }}" \
--var GOVUK_NOTIFY_API_KEY="${{ secrets.GOVUK_NOTIFY_API_KEY_DEV }}" \
--var TRA_OIDC_DOMAIN="${{ secrets.TRA_OIDC_DOMAIN_DEV }}" \
--var TRA_OIDC_CLIENT_ID="${{ secrets.TRA_OIDC_CLIENT_ID_DEV }}" \
--var TRA_OIDC_CLIENT_SECRET="${{ secrets.TRA_OIDC_CLIENT_SECRET_DEV }}" \
--var TRA_OIDC_REDIRECT_URI="${{ secrets.TRA_OIDC_REDIRECT_URI_DEV }}" \
--var APP_NAME="${{ env.APP_NAME }}" \
--var ENV_STUB="${{ env.ENV_STUB }}" \
--var ENV_STUB_DB="${{ env.ENV_STUB_DB }}" \
--var ECF_APP_BEARER_TOKEN="${{ secrets.ECF_APP_BEARER_TOKEN_DEV }}" \
--var SENTRY_DSN="${{ secrets.SENTRY_DSN }}" \
--var GET_AN_IDENTITY_WEBHOOK_SECRET="${{ secrets.GET_AN_IDENTITY_WEBHOOK_SECRET_REVIEW_APP }}" \
--docker-image "${{ env.REMOTE_DOCKER_IMAGE_NAME }}":"${{ env.APP_NAME }}"-"${{ env.ENV_STUB }}" \
--docker-username "${{ secrets.DOCKER_USERNAME }}" \
--strategy rolling
cf run-task "${{ env.APP_NAME }}"-"${{ env.ENV_STUB }}" \
--command "cd /app && /usr/local/bundle/bin/bundle exec rails feature_flags:initialize" \
--process worker \
--name initialize-feature-flags
- name: Ensure review app base data is in place
id: seed-db
shell: bash
env:
CF_DOCKER_PASSWORD: ${{ secrets.DOCKER_DEV_PASSWORD }}
PAAS_ORGANISATION: dfe
# This is a shared PAAS space
PAAS_SPACE: earlycareers-framework-dev
ENV_STUB: review-app-${{ github.event.number }}
APP_NAME: npq-registration
CF_USERNAME: ${{ secrets.GOVPAAS_DEV_USERNAME }}
CF_PASSWORD: ${{ secrets.GOVPAAS_DEV_PASSWORD }}
run: |
cf api https://api.london.cloud.service.gov.uk
cf auth
cf target -o "${{ env.PAAS_ORGANISATION }}" -s "${{ env.PAAS_SPACE }}"
cf run-task "${{ env.APP_NAME }}"-"${{ env.ENV_STUB }}" \
--command "cd /app && /usr/local/bundle/bin/bundle exec rails db:seed" \
--process worker \
--name run-db-seed
cf run-task "${{ env.APP_NAME }}"-"${{ env.ENV_STUB }}" \
--command "cd /app && /usr/local/bundle/bin/bundle exec rails runner 'ImportGiasSchoolsJob.perform_later'" \
--process worker \
--name schedule_school_import
cf run-task "${{ env.APP_NAME }}"-"${{ env.ENV_STUB }}" \
--command "cd /app && /usr/local/bundle/bin/bundle exec rails runner 'ApplicationSynchronizationJob.perform_later'" \
--process worker \
--name application_synchronization_job
cf run-task "${{ env.APP_NAME }}"-"${{ env.ENV_STUB }}" \
--command "cd /app && /usr/local/bundle/bin/bundle exec rails \"private_childcare_providers:import[lib/private_childcare_providers/2023-03-31/childcare_providers.csv, childcare_providers]\"" \
--process worker \
--name import_childcare_providers
cf run-task "${{ env.APP_NAME }}"-"${{ env.ENV_STUB }}" \
--command "cd /app && /usr/local/bundle/bin/bundle exec rails \"private_childcare_providers:import[lib/private_childcare_providers/2023-03-31/childminder_agencies.csv, childminder_agencies]\"" \
--process worker \
--name import_childminder_agencies
- name: comment on PR
uses: unsplash/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
msg: "Created review app at https://npq-registration-review-app-${{ github.event.number }}.london.cloudapps.digital"
check_for_duplicate_msg: true
duplicate_msg_pattern: Created review app at*