-
Notifications
You must be signed in to change notification settings - Fork 18
171 lines (157 loc) · 5.37 KB
/
test-scaffold.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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
name: Test scaffold
on:
push:
branches:
- main
- develop
pull_request:
types:
- opened
- reopened
- ready_for_review
- synchronize
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
DREVOPS_CI_TEST_RESULTS: /tmp/tests
DREVOPS_CI_ARTIFACTS: /tmp/artifacts
GOVCMS_VERSION: 10
jobs:
test:
runs-on: ubuntu-latest
strategy:
max-parallel: 2
matrix:
govcms_image:
- "10.x-latest"
- "10.x-edge"
project_type:
- saas
- paas
fail-fast: false
container:
image: drevops/ci-runner:24.1.0
env:
CI: 1
# Prevent GitHub overriding the Docker config.
DOCKER_CONFIG: /root/.docker
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TZ: "Australia/Melbourne"
# Set runner terminal capabilities.
TERM: xterm-256color
# How often to refresh the cache of the DB dump. Refer to `date` command.
DREVOPS_CI_DB_CACHE_TIMESTAMP: "+%Y%m%d"
# Use cache fallback if the above timestamp does not match.
DREVOPS_CI_DB_CACHE_FALLBACK: "yes"
# Which branch to use as a source of DB caches.
DREVOPS_CI_DB_CACHE_BRANCH: "develop"
# Directory to store test results.
DREVOPS_CI_TEST_RESULTS: ${{ env.DREVOPS_CI_TEST_RESULTS }}
# Directory to store test artifacts.
DREVOPS_CI_ARTIFACTS: ${{ env.DREVOPS_CI_ARTIFACTS }}
# Check only minimal stack requirements.
DREVOPS_DOCTOR_CHECK_MINIMAL: 1
# Directory to store code exported between jobs.
DREVOPS_EXPORT_CODE_DIR: /tmp/workspace/code
# Directory to use for artifact deployments.
DREVOPS_DEPLOY_ARTIFACT_SRC: ""
# Source code location for artifact deployments.
DREVOPS_DEPLOY_ARTIFACT_ROOT: .
# Report file location for artifact deployments.
DREVOPS_DEPLOY_ARTIFACT_REPORT_FILE: /tmp/artifacts/deployment_report.txt
steps:
-
name: Checkout the repo
uses: actions/checkout@main
-
name: Check Docker and Compose version
run: |
echo "[INFO] Docker version."
docker version
echo "[INFO] Docker Compose version."
docker compose version
-
name: Setup Docker network
run: docker network prune -f >/dev/null 2>&1 && docker network inspect amazeeio-network >/dev/null 2>&1 || docker network create amazeeio-network >/dev/null 2>&1 || true
-
name: Process codebase to run in CI
run: |
find . -name "docker-compose.yml" -print0 | xargs -0 -I {} sh -c "sed -i -e ''/###/d'' {} && sed -i -e ''s/##//'' {} && sed -i -e 's#- .:/app:delegated#[]#' {}"
mkdir -p /tmp/workspace/code
cat docker-compose.yml
-
name: Init scaffold
run: ahoy init scaffold-test ${{ matrix.project_type }} ${{ env.GOVCMS_VERSION }}
-
name: Build project
run: ahoy up
env:
GOVCMS_IMAGE_VERSION: ${{ matrix.govcms_image }}
GOVCMS_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-
name: Install GovCMS profile
run: ahoy install
-
name: Notify failures to Slack
if: failure()
uses: slackapi/[email protected]
with:
# See https://github.com/slackapi/slack-github-action?tab=readme-ov-file
channel-id: ${{ vars.SLACK_CHANNEL }}
payload: |
{
"attachments": [
{
"color": "#ff0000",
"blocks": [
{
"type": "header",
"text": {
"type": "plain_text",
"text": "Scaffold test failure"
}
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": "A check has failed, please view the pipeline and rerun."
}
]
},
{
"type": "section",
"fields": [
{
"type": "mrkdwn",
"text": "*Project Type:*\${{ matrix.project_type }}"
},
{
"type": "mrkdwn",
"text": "*GovCMS Image:*\n${{ matrix.govcms_image }}"
}
]
},
{
"type": "actions",
"block_id": "view_pipeline",
"elements": [
{
"type": "button",
"text": {
"type": "plain_text",
"text": "View pipeline"
},
"url": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}/jobs"
}
]
}
]
}
]
}
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}