Skip to content

Commit 7844d15

Browse files
authored
Merge pull request #110 from jackoturner/JackCICDAutomation
Add CI workflow; improve DB config defaults
2 parents 2e6340e + c425f2f commit 7844d15

2 files changed

Lines changed: 85 additions & 7 deletions

File tree

.github/workflows/ci.yml

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
name: CI Pipeline
2+
3+
on:
4+
push:
5+
branches: [ "main", "develop" ]
6+
pull_request:
7+
branches: [ "main" ]
8+
9+
jobs:
10+
build-and-test:
11+
runs-on: ubuntu-latest
12+
13+
services:
14+
mysql:
15+
image: mysql:8.0
16+
env:
17+
MYSQL_ROOT_PASSWORD: root
18+
MYSQL_ROOT_HOST: "%"
19+
MYSQL_DATABASE: tapthat-db
20+
ports:
21+
- 3306:3306
22+
options: >-
23+
--health-cmd="mysqladmin ping -h 127.0.0.1 -proot"
24+
--health-interval=10s
25+
--health-timeout=5s
26+
--health-retries=5
27+
28+
steps:
29+
- name: Checkout repo
30+
uses: actions/checkout@v4
31+
32+
- name: Set up Node
33+
uses: actions/setup-node@v4
34+
with:
35+
node-version: 20
36+
37+
- name: Install dependencies
38+
run: npm install
39+
40+
- name: Wait for MySQL
41+
run: |
42+
for i in {1..10}; do
43+
nc -z 127.0.0.1 3306 && echo "MySQL ready" && exit 0
44+
echo "Waiting for MySQL..."
45+
sleep 3
46+
done
47+
exit 1
48+
49+
- name: Run schema
50+
run: mysql -h 127.0.0.1 -uroot -proot tapthat-db < schema.sql
51+
52+
- name: Run basic app check
53+
run: node index.js &
54+
55+
- name: Health check
56+
run: |
57+
sleep 5
58+
curl -f http://localhost:3000 || exit 1
59+
60+
- name: Build Docker image
61+
run: docker build -t tapthat-app .

app/services/db.js

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,28 @@ const mysql = require("mysql2");
55
const host =
66
process.env.DB_HOST ||
77
process.env.DB_CONTAINER ||
8-
process.env.MYSQL_HOST;
9-
const port = process.env.DB_PORT || 3306;
10-
const user = process.env.DB_USER || process.env.MYSQL_USER;
11-
const password = process.env.DB_PASSWORD || process.env.MYSQL_PASSWORD;
12-
const database = process.env.DB_NAME || process.env.MYSQL_DATABASE;
8+
process.env.MYSQL_HOST ||
9+
"127.0.0.1";
10+
11+
const port =
12+
process.env.DB_PORT ||
13+
process.env.MYSQL_PORT ||
14+
3306;
15+
16+
const user =
17+
process.env.DB_USER ||
18+
process.env.MYSQL_USER ||
19+
"root";
20+
21+
const password =
22+
process.env.DB_PASSWORD ||
23+
process.env.MYSQL_PASSWORD ||
24+
"password";
25+
26+
const database =
27+
process.env.DB_NAME ||
28+
process.env.MYSQL_DATABASE ||
29+
"tapthat-db";
1330

1431
const pool = mysql.createPool({
1532
host,
@@ -18,7 +35,7 @@ const pool = mysql.createPool({
1835
password,
1936
database,
2037
waitForConnections: true,
21-
connectionLimit: 2,
38+
connectionLimit: 10,
2239
queueLimit: 0,
2340
});
2441

@@ -33,4 +50,4 @@ function query(sql, params, callback) {
3350

3451
module.exports = {
3552
query,
36-
};
53+
};

0 commit comments

Comments
 (0)