-
Notifications
You must be signed in to change notification settings - Fork 26
135 lines (114 loc) · 3.91 KB
/
ci.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
name: CI
on:
push:
branches: [master, develop]
pull_request:
workflow_call:
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
permissions:
contents: read
jobs:
rspec:
name: Ruby ${{ matrix.ruby }} / PostgreSQL ${{ matrix.postgres }}
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
include:
- { ruby: '3.2', postgres: 13.5 }
services:
postgres:
image: fixmystreet/postgres:${{ matrix.postgres }}
env:
POSTGRES_PASSWORD: postgres
ports:
- '5432:5432'
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
DATABASE_URL: postgres://postgres:postgres@localhost:5432/alaveteli_test
RAILS_ENV: test
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Setup GitHub CLI
run: gh auth login --with-token <<< "${GH_TOKEN}"
- name: Get theme PR description
id: pr_theme_description
run: |
PR_DESCRIPTION=$(gh pr view https://github.com/mysociety/whatdotheyknow-theme/pull/${{ github.event.pull_request.number }} --json body -q '.body')
echo "PR_DESCRIPTION=$PR_DESCRIPTION" >> $GITHUB_ENV
- name: Extract associated required core PR
id: pr_core_url
run: |
PR_CORE_URL=$(echo "$PR_DESCRIPTION" | grep -o 'https://github.com/mysociety/alaveteli/pull/[0-9]*')
echo "PR_CORE_URL=$PR_CORE_URL" >> $GITHUB_ENV
- name: Get core branch name
id: pr_core_branch
run: |
if [[ ! -z "$PR_CORE_URL" ]]; then
PR_NUMBER=$(echo "$PR_CORE_URL" | grep -o '[0-9]*$')
CORE_BRANCH_NAME=$(gh pr view https://github.com/mysociety/alaveteli/pull/$PR_NUMBER --json headRefName -q '.headRefName')
echo "CORE_BRANCH_NAME=$CORE_BRANCH_NAME" >> $GITHUB_ENV
else
echo "CORE_BRANCH_NAME=develop" >> $GITHUB_ENV
fi
- name: Checkout Alaveteli
uses: actions/checkout@v2
with:
repository: mysociety/alaveteli
ref: $CORE_BRANCH_NAME
path: core
submodules: true
fetch-depth: 0
- name: Create Alaveteli theme directory
run: |
mkdir alaveteli-themes
- name: Checkout repository
uses: actions/checkout@v2
with:
path: alaveteli-themes/whatdotheyknow-theme
- name: Install packages
env:
DEBIAN_FRONTEND: noninteractive
run: |
sudo apt-get -y update
sudo apt-get -y install exim4-daemon-light
sudo apt-get -y install `cut -d " " -f 1 config/packages.ubuntu-focal | egrep -v "(^#|wkhtml|bundler|^ruby|^rake)"`
working-directory: core
- name: Install Ruby ${{ matrix.ruby }}
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
bundler-cache: true
working-directory: core
- name: Setup database
run: |
psql postgres://postgres:postgres@localhost:5432 <<-EOSQL
CREATE DATABASE template_utf8 TEMPLATE template0 ENCODING "UTF-8";
UPDATE pg_database SET datistemplate=true WHERE datname='template_utf8';
CREATE DATABASE alaveteli_test TEMPLATE template_utf8;
EOSQL
working-directory: core
- name: Configure application and storage
run: |
cp config/general.yml-example config/general-whatdotheyknow-theme.yml
cp config/storage.yml-example config/storage.yml
working-directory: core
- name: Install theme
run: |
script/switch-theme.rb whatdotheyknow-theme
bundle exec rake themes:install
working-directory: core
- name: Migrate database
run: |
bundle exec rails db:migrate
working-directory: core
- name: Run tests
run: |
bundle exec rspec --format Fivemat lib/themes/whatdotheyknow-theme/spec
working-directory: core