Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
187 commits
Select commit Hold shift + click to select a range
204010e
Add coffee-project as submodule
Nov 5, 2025
90d8ca9
Add automated setup script for collaborators - no extra work needed
Nov 5, 2025
fbe879e
added coffee project
vatsal-dp Nov 5, 2025
818b428
adding the VCL ip address
smitraval24 Nov 6, 2025
f1f592a
GH workflow for running tests
vatsal-dp Nov 6, 2025
a829140
self hosted runner for test yml
vatsal-dp Nov 6, 2025
c0481f7
Merge pull request #10 from vpatel29/dev
smitraval24 Nov 6, 2025
2bc5714
adding the linting workflow
smitraval24 Nov 6, 2025
679c83e
removed linting errors locally using lint fix
smitraval24 Nov 6, 2025
ecd3afa
Merge pull request #11 from vpatel29/dev
smitraval24 Nov 6, 2025
851b048
Add auto-sync workflow for dev branch
smitraval24 Nov 6, 2025
b90d749
Merge pull request #15 from vpatel29/dev
smitraval24 Nov 6, 2025
dcc60db
adding the runner to sync-dev.yml
smitraval24 Nov 6, 2025
617d3bd
Merge pull request #16 from vpatel29/dev
smitraval24 Nov 6, 2025
9297b41
moved to postgres
vatsal-dp Nov 6, 2025
903f9b3
Merge branch 'dev' of https://github.ncsu.edu/vpatel29/devops-project…
vatsal-dp Nov 6, 2025
2b851cb
dockerization of coffee project with db integrated
smitraval24 Nov 6, 2025
578d696
workflow to deploy updates to vcl2
vatsal-dp Nov 6, 2025
43cc2ae
fix unit test error
vatsal-dp Nov 6, 2025
f787219
now uses self hosted runner
vatsal-dp Nov 6, 2025
5da7075
runs on ubuntu latest
vatsal-dp Nov 6, 2025
c76e09d
runs on self hosted
vatsal-dp Nov 6, 2025
f38abcf
sudo docker for unit test workflow on runner
vatsal-dp Nov 6, 2025
3ae346b
Merge pull request #20 from vpatel29/dev
vatsal-dp Nov 6, 2025
ea51eae
update secret key
vatsal-dp Nov 7, 2025
beb48bf
Merge branch 'dev' of https://github.ncsu.edu/vpatel29/devops-project…
vatsal-dp Nov 7, 2025
c2cfd84
Merge pull request #21 from vpatel29/dev
vatsal-dp Nov 7, 2025
a42b956
vcl1 runner now able to access vcl2 directly and pull recent code and…
smitraval24 Nov 7, 2025
2e0540e
Merge pull request #22 from vpatel29/dev
smitraval24 Nov 7, 2025
91770da
fixing deploy.yml
smitraval24 Nov 7, 2025
539c903
Merge branch 'dev' of https://github.ncsu.edu/vpatel29/devops-project…
smitraval24 Nov 7, 2025
ff8c41e
Merge pull request #23 from vpatel29/dev
smitraval24 Nov 7, 2025
528a983
ssh url change on vcl 2 from https url for repo
smitraval24 Nov 7, 2025
77758db
Merge pull request #24 from vpatel29/dev
smitraval24 Nov 7, 2025
3691049
giving the docker grp permission
smitraval24 Nov 7, 2025
3762d46
Merge branch 'dev' of https://github.ncsu.edu/vpatel29/devops-project…
smitraval24 Nov 7, 2025
3e033c1
Merge pull request #25 from vpatel29/dev
smitraval24 Nov 7, 2025
472e990
backup to vcl3
vatsal-dp Nov 8, 2025
b46a55e
Merge pull request #27 from vpatel29/dev
vatsal-dp Nov 8, 2025
9b44b16
backup to vcl3
vatsal-dp Nov 8, 2025
f749eb0
Merge pull request #28 from vpatel29/dev
vatsal-dp Nov 8, 2025
7eab2b2
database migrate
vatsal-dp Nov 8, 2025
71e3923
Merge pull request #29 from vpatel29/dev
vatsal-dp Nov 8, 2025
1f4a7f9
vcl3 iptable fix
vatsal-dp Nov 8, 2025
49738ae
Merge pull request #30 from vpatel29/dev
vatsal-dp Nov 8, 2025
b349b85
fix repo url
vatsal-dp Nov 8, 2025
0bdebca
Merge branch 'dev' of https://github.ncsu.edu/vpatel29/devops-project…
vatsal-dp Nov 8, 2025
7fa12ec
Merge pull request #31 from vpatel29/dev
vatsal-dp Nov 8, 2025
b070ba3
fix ssh commands
vatsal-dp Nov 8, 2025
5dd1782
Merge pull request #32 from vpatel29/dev
vatsal-dp Nov 8, 2025
864b1b4
fix ssh commands
vatsal-dp Nov 8, 2025
3dc7f84
Auto-sync: merge main back to dev after PR merge
github-actions[bot] Nov 8, 2025
35cd926
Merge pull request #33 from vpatel29/dev
vatsal-dp Nov 8, 2025
aac8898
debug vcl3 ssh
vatsal-dp Nov 9, 2025
40f4589
Merge pull request #34 from vpatel29/dev
vatsal-dp Nov 9, 2025
751b83b
updategithub secret key
vatsal-dp Nov 9, 2025
588252b
Merge branch 'dev' of https://github.ncsu.edu/vpatel29/devops-project…
vatsal-dp Nov 9, 2025
e28dc78
Merge pull request #35 from vpatel29/dev
vatsal-dp Nov 9, 2025
8f470ff
updategithub secret key
vatsal-dp Nov 9, 2025
059fac9
Merge branch 'dev' of https://github.ncsu.edu/vpatel29/devops-project…
vatsal-dp Nov 9, 2025
6d06667
Merge pull request #36 from vpatel29/dev
vatsal-dp Nov 9, 2025
f5de9ba
adding functionality in the website to change price of coffee to see …
smitraval24 Nov 9, 2025
cc5f958
Merge branch 'dev' of https://github.ncsu.edu/vpatel29/devops-project…
smitraval24 Nov 9, 2025
da26a8c
db replication vcl2->vcl3
smitraval24 Nov 9, 2025
78dd5ed
Merge pull request #38 from vpatel29/dev
smitraval24 Nov 9, 2025
5b5d8fe
db replication fix
smitraval24 Nov 9, 2025
ba7d841
Merge branch 'dev' of https://github.ncsu.edu/vpatel29/devops-project…
smitraval24 Nov 9, 2025
af6208f
Merge pull request #39 from vpatel29/dev
smitraval24 Nov 9, 2025
aa40b37
Fix systemd service to work without docker.service dependency
smitraval24 Nov 9, 2025
2832454
Merge branch 'dev' of https://github.ncsu.edu/vpatel29/devops-project…
smitraval24 Nov 9, 2025
a504add
Merge pull request #40 from vpatel29/dev
smitraval24 Nov 9, 2025
8b665cc
Fix replication script heredoc issue
smitraval24 Nov 9, 2025
d2768a9
Merge pull request #41 from vpatel29/dev
smitraval24 Nov 9, 2025
9810f84
Fix replication script variable expansion
smitraval24 Nov 9, 2025
b10473d
Merge branch 'dev' of https://github.ncsu.edu/vpatel29/devops-project…
smitraval24 Nov 9, 2025
239e4fa
Merge pull request #42 from vpatel29/dev
smitraval24 Nov 9, 2025
8ecf31b
Add working database replication script
smitraval24 Nov 9, 2025
8ba63f3
Merge pull request #43 from vpatel29/dev
smitraval24 Nov 9, 2025
1616475
Fix deployment to clean untracked files before pull
smitraval24 Nov 10, 2025
1304bdd
Merge branch 'dev' of https://github.ncsu.edu/vpatel29/devops-project…
smitraval24 Nov 10, 2025
b78e380
Merge pull request #44 from vpatel29/dev
smitraval24 Nov 10, 2025
7d76fee
Remove obsolete version field from docker-compose.yml
smitraval24 Nov 10, 2025
d1206c8
Merge branch 'dev' of https://github.ncsu.edu/vpatel29/devops-project…
smitraval24 Nov 10, 2025
4ff0c3f
Merge pull request #45 from vpatel29/dev
smitraval24 Nov 10, 2025
e9a5be2
adding status report one
smitraval24 Nov 12, 2025
cab114c
Merge branch 'dev' of https://github.ncsu.edu/vpatel29/devops-project…
smitraval24 Nov 12, 2025
0abdf59
Update status_report_1.md
smitraval24 Nov 12, 2025
b068d1c
Merge pull request #46 from vpatel29/dev
smitraval24 Nov 12, 2025
42cda6d
Update status_report_1.md
vatsal-dp Nov 12, 2025
2914a99
Merge pull request #47 from vpatel29/vpatel29-patch-1
vatsal-dp Nov 12, 2025
fb3273f
cloudflare
vatsal-dp Nov 13, 2025
0d0108b
fix tunnel
vatsal-dp Nov 13, 2025
04d131d
fix tunnel
vatsal-dp Nov 13, 2025
d360325
cleanup tunnel
vatsal-dp Nov 13, 2025
b3ebed5
cleanup tunnel
vatsal-dp Nov 13, 2025
88d254a
persistent quick tunnel
vatsal-dp Nov 13, 2025
147f40d
feat: Add automatic rollback on deployment failure
vatsal-dp Nov 20, 2025
baf7b30
test: Add breaking change to test automatic rollback
vatsal-dp Nov 20, 2025
27c7952
Merge pull request #48 from vpatel29/dev
vatsal-dp Nov 20, 2025
c87c2ec
workflow fix
vatsal-dp Nov 20, 2025
84654c8
Merge branch 'dev' of https://github.ncsu.edu/vpatel29/devops-project…
vatsal-dp Nov 20, 2025
a234349
Merge pull request #49 from vpatel29/dev
vatsal-dp Nov 20, 2025
bc5458e
fix: Remove test breaking change, restore normal functionality
vatsal-dp Nov 20, 2025
b3766f7
Merge branch 'dev' of https://github.ncsu.edu/vpatel29/devops-project…
vatsal-dp Nov 20, 2025
47ae962
Merge pull request #50 from vpatel29/dev
vatsal-dp Nov 20, 2025
ef5368d
test: Add breaking change to demonstrate rollback
vatsal-dp Nov 20, 2025
9189e2b
giMerge branch 'dev' of https://github.ncsu.edu/vpatel29/devops-proje…
vatsal-dp Nov 20, 2025
6df75fa
Merge pull request #51 from vpatel29/dev
vatsal-dp Nov 20, 2025
1c9d508
rollback fix
vatsal-dp Nov 20, 2025
4b07f88
Merge branch 'dev' of https://github.ncsu.edu/vpatel29/devops-project…
vatsal-dp Nov 20, 2025
13e43c5
Merge pull request #52 from vpatel29/dev
vatsal-dp Nov 20, 2025
1406ff4
rollback test
vatsal-dp Nov 20, 2025
eec9477
Merge pull request #53 from vpatel29/dev
vatsal-dp Nov 20, 2025
d75575f
working change
vatsal-dp Nov 20, 2025
4f5e81c
Merge pull request #54 from vpatel29/dev
vatsal-dp Nov 20, 2025
a54dfda
going to standby when the primary server is failing
smitraval24 Nov 21, 2025
ae8e1c6
Merge pull request #55 from vpatel29/dev
smitraval24 Nov 21, 2025
dd96fb7
fixing the grp err
smitraval24 Nov 21, 2025
7a204cd
Merge pull request #56 from vpatel29/dev
smitraval24 Nov 21, 2025
46fff22
fix failover script
vatsal-dp Nov 21, 2025
fd8a815
Merge pull request #57 from vpatel29/dev
vatsal-dp Nov 21, 2025
238397c
Fix docker service dependency in failover setup
vatsal-dp Nov 21, 2025
a8f548f
Merge pull request #58 from vpatel29/dev
vatsal-dp Nov 21, 2025
05692b1
Remove Group directive from systemd service
vatsal-dp Nov 21, 2025
8ecaadb
Merge pull request #59 from vpatel29/dev
vatsal-dp Nov 21, 2025
e0a15e2
Fix monitor script - remove -e flag to handle curl failures
vatsal-dp Nov 21, 2025
5c8f5cd
Merge pull request #60 from vpatel29/dev
vatsal-dp Nov 21, 2025
ab7ab22
Add files via upload
smitraval24 Nov 21, 2025
5dace95
Merge pull request #61 from vpatel29/sraval-patch-1
smitraval24 Nov 21, 2025
fa3784c
setup up done for domain name and traffic rerouting in domain itself …
smitraval24 Nov 21, 2025
f2a49f3
Merge pull request #62 from vpatel29/dev
smitraval24 Nov 21, 2025
ecab1a5
Add .gitattributes for Unix line endings and fix setup script
smitraval24 Nov 21, 2025
882a515
Merge pull request #63 from vpatel29/dev
smitraval24 Nov 21, 2025
474f822
making database persistent
smitraval24 Nov 21, 2025
3a5409e
Merge branch 'dev' of https://github.ncsu.edu/vpatel29/devops-project…
smitraval24 Nov 21, 2025
23c54b2
Merge pull request #64 from vpatel29/dev
smitraval24 Nov 21, 2025
2419730
updating readme.md for the recent updates
smitraval24 Nov 21, 2025
e380646
Merge pull request #65 from vpatel29/dev
smitraval24 Nov 21, 2025
201e603
fixing continous refresh and bad gateway error
smitraval24 Nov 21, 2025
248bfb5
Merge pull request #66 from vpatel29/dev
smitraval24 Nov 21, 2025
0075ba2
Automate Cloudflare tunnel configuration deployment
smitraval24 Nov 22, 2025
4e4a506
Implement high availability Cloudflare Tunnel on VCL3
smitraval24 Nov 22, 2025
561fd75
Fix first page load Bad Gateway error
smitraval24 Nov 22, 2025
8a7bf8e
Merge pull request #67 from vpatel29/dev
smitraval24 Nov 22, 2025
de39710
Force pull on VCL3 to avoid merge conflicts
smitraval24 Nov 22, 2025
f282a20
keeping cloudfare tunnel alive
smitraval24 Nov 22, 2025
b2de0c1
Merge pull request #68 from vpatel29/dev
smitraval24 Nov 22, 2025
fd86db3
fix: solving the ignoring of config file via token
smitraval24 Nov 22, 2025
33b35b2
Merge branch 'dev' of https://github.ncsu.edu/vpatel29/devops-project…
smitraval24 Nov 22, 2025
9748ccf
Merge pull request #69 from vpatel29/dev
smitraval24 Nov 22, 2025
51a51ac
removed cloudfare
smitraval24 Nov 27, 2025
c8cb55e
Merge pull request #70 from vpatel29/dev
smitraval24 Nov 27, 2025
8c79866
adding load balancer code from vcl 1 into repo
smitraval24 Nov 27, 2025
17af27f
integrated ansible
smitraval24 Nov 27, 2025
8854f24
Merge branch 'dev' of https://github.ncsu.edu/vpatel29/devops-project…
smitraval24 Nov 27, 2025
569e0df
Merge pull request #71 from vpatel29/dev
smitraval24 Nov 27, 2025
b7f48c4
fixed ansible vcl 1 err
smitraval24 Nov 27, 2025
01cd604
Merge pull request #72 from vpatel29/dev
smitraval24 Nov 27, 2025
47eb754
adding clearing ports and iptables for ansible setup
smitraval24 Nov 27, 2025
97f3a8c
Merge branch 'dev' of https://github.ncsu.edu/vpatel29/devops-project…
smitraval24 Nov 27, 2025
c1c67af
Merge pull request #73 from vpatel29/dev
smitraval24 Nov 27, 2025
072ac5e
setting the password one time in ansible for vcl
smitraval24 Nov 27, 2025
52c9d1f
Merge branch 'main' of https://github.ncsu.edu/vpatel29/devops-projec…
smitraval24 Nov 27, 2025
723fa5e
Merge pull request #74 from vpatel29/dev
smitraval24 Nov 27, 2025
8920cfd
soving vcl 1 connection issue in ansible
smitraval24 Nov 27, 2025
bd422a9
Merge branch 'dev' of https://github.ncsu.edu/vpatel29/devops-project…
smitraval24 Nov 27, 2025
0d829a7
Merge pull request #75 from vpatel29/dev
smitraval24 Nov 27, 2025
8b2bf79
fixing the ansible err
smitraval24 Nov 27, 2025
39d7a13
Merge pull request #76 from vpatel29/dev
smitraval24 Nov 27, 2025
6726642
removing harcoded ip in ansible
smitraval24 Nov 28, 2025
3d8f72c
Merge pull request #77 from vpatel29/dev
smitraval24 Nov 28, 2025
c4ec02d
fixing iptable issue
smitraval24 Nov 28, 2025
0f80dea
Merge branch 'dev' of https://github.ncsu.edu/vpatel29/devops-project…
smitraval24 Nov 28, 2025
d69cf95
Merge pull request #78 from vpatel29/dev
smitraval24 Nov 28, 2025
a74ad16
setup-firewall.yml playbook commented out
smitraval24 Nov 28, 2025
a6d8250
Merge pull request #79 from vpatel29/dev
smitraval24 Nov 28, 2025
59accbe
changing ip address for ansible part to test
smitraval24 Nov 28, 2025
63e9cfc
Merge branch 'dev' of https://github.ncsu.edu/vpatel29/devops-project…
smitraval24 Nov 28, 2025
fc9a6c0
Merge pull request #80 from vpatel29/dev
smitraval24 Nov 28, 2025
1d469af
removed iptable flushing in ansible
smitraval24 Nov 28, 2025
b16775b
Merge pull request #81 from vpatel29/dev
smitraval24 Nov 28, 2025
2218979
addin the code to vcl 3
smitraval24 Nov 28, 2025
7c8070c
Merge branches 'dev' and 'dev' of https://github.ncsu.edu/vpatel29/de…
smitraval24 Nov 28, 2025
8290c73
Merge pull request #82 from vpatel29/dev
smitraval24 Nov 28, 2025
1748678
copying files to vcl 3 ansible
smitraval24 Nov 28, 2025
29f3de3
Merge pull request #83 from vpatel29/dev
smitraval24 Nov 28, 2025
24014ed
Merge remote dev branch, keeping local README
smitraval24 Nov 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Force Unix line endings for shell scripts
*.sh text eol=lf

# Force Unix line endings for other script files
*.bash text eol=lf
187 changes: 187 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,187 @@
name: Deploy to VCL 2
on:
push:
branches:
- main

jobs:
deploy:
name: Deploy coffee app to VCL 2
runs-on: [self-hosted, linux, x64]

steps:
- name: Setup SSH
env:
VCL2_SSH_PRIVATE_KEY: ${{ secrets.VCL2_SSH_PRIVATE_KEY }}
run: |
mkdir -p ~/.ssh
echo "$VCL2_SSH_PRIVATE_KEY" > ~/.ssh/deploy_key
chmod 600 ~/.ssh/deploy_key

# Debug: Check if key file is created and has content
echo "SSH key file created:"
ls -lh ~/.ssh/deploy_key
echo "Key fingerprint (first/last lines only):"
head -n 1 ~/.ssh/deploy_key
tail -n 1 ~/.ssh/deploy_key

- name: Test VCL2 connectivity
env:
VCL2_HOST: ${{ secrets.VCL2_SSH_HOST }}
run: |
echo "Testing network connectivity to VCL2..."
ping -c 3 $VCL2_HOST || echo "Ping failed"
nc -zv $VCL2_HOST 22 || echo "SSH port not reachable"

- name: Deploy to VCL 2
env:
VCL2_USER: ${{ secrets.VCL2_SSH_USER }}
VCL2_HOST: ${{ secrets.VCL2_SSH_HOST }}
PROJECT_DIR: devops-project
run: |
ssh -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no -o ConnectTimeout=10 $VCL2_USER@$VCL2_HOST << 'ENDSSH'
set -e

echo "=== Navigating to project directory ==="
cd $HOME/devops-project

echo "=== Cleaning untracked files ==="
git clean -fd || true

echo "=== Stashing any local changes ==="
git stash || true

echo "=== Pulling latest code from main ==="
git pull origin main

echo "=== Applying stashed changes (if any) ==="
git stash pop || true

echo "=== Navigating to coffee_project ==="
cd coffee_project

echo "=== Stopping old containers ==="
sudo docker-compose down || true

echo "=== Removing old containers and images ==="
sudo docker-compose rm -f || true

echo "=== Building and starting new containers ==="
sudo docker-compose up -d --build

echo "=== Waiting for containers to start ==="
sleep 15

echo "=== Deployment complete! ==="
sudo docker-compose ps
ENDSSH

- name: Run health checks from Actions (VCL2)
id: vcl2_health
env:
VCL2_HOST: ${{ secrets.VCL2_SSH_HOST }}
VCL2_USER: ${{ secrets.VCL2_SSH_USER }}
run: |
echo "Running health checks against VCL2 from Actions runner"
echo "Waiting for services to be ready..."
sleep 10

echo "== App HTTP check =="
# retry HTTP check up to 12 times (60s) against VCL2's external IP
for i in {1..12}; do
if curl -sS -f http://$VCL2_HOST:3000/ >/dev/null 2>&1; then
echo "✓ App is reachable at http://$VCL2_HOST:3000/"
APP_OK=true
break
fi
echo "HTTP not ready ($i/12)"
sleep 5
done

if [ "$APP_OK" != "true" ]; then
echo "✗ App health check failed" >&2
exit 1
fi

echo "== DB check =="
# check postgres via SSH and pg_isready
ssh -i ~/.ssh/deploy_key -o StrictHostKeyChecking=no -o ConnectTimeout=10 $VCL2_USER@$VCL2_HOST << 'ENDSSH'
if sudo docker exec coffee_db pg_isready -U postgres > /dev/null 2>&1; then
echo "✓ Database is ready"
else
echo "✗ Database not ready" >&2
exit 1
fi
ENDSSH

echo "== All health checks passed =="

- name: Backup latest to VCL3 (if VCL2 healthy)
if: success()
continue-on-error: true
env:
VCL3_USER: ${{ secrets.VCL3_SSH_USER }}
VCL3_HOST: ${{ secrets.VCL3_SSH_HOST }}
VCL3_SSH_PRIVATE_KEY: ${{ secrets.VCL3_SSH_PRIVATE_KEY }}
VCL2_USER: ${{ secrets.VCL2_SSH_USER }}
VCL2_HOST: ${{ secrets.VCL2_SSH_HOST }}
run: |
echo "Pulling latest code on VCL3 for backup"

# Check if VCL3 secrets are configured
if [ -z "$VCL3_USER" ] || [ -z "$VCL3_HOST" ]; then
echo "⚠️ VCL3 not configured (missing VCL3_SSH_USER or VCL3_SSH_HOST secrets)"
echo "Skipping VCL3 backup step"
exit 0
fi

# Repo URL is expanded on the runner so remote can clone using HTTPS
REPO_URL="https://github.ncsu.edu/vatsaldp/devops-project"
# Use separate SSH key for VCL3 if available, else reuse the same deploy_key secret
if [ -n "$VCL3_SSH_PRIVATE_KEY" ]; then
echo "Using VCL3 specific SSH key"
echo "$VCL3_SSH_PRIVATE_KEY" > ~/.ssh/vcl3_deploy_key
chmod 600 ~/.ssh/vcl3_deploy_key
SSH_KEY=~/.ssh/vcl3_deploy_key
else
echo "Reusing VCL2 SSH key for VCL3"
SSH_KEY=~/.ssh/deploy_key
fi

# Test connectivity first
if ! nc -zv -w 5 $VCL3_HOST 22 2>&1; then
echo "⚠️ Cannot reach VCL3 at $VCL3_HOST:22"
echo "Skipping VCL3 backup step"
exit 0
fi

# Pull latest code on VCL3
echo "Pulling latest code on VCL3..."
set +e

# Use -T to disable pseudo-tty allocation and add timeouts
timeout 30 ssh -T -i $SSH_KEY \
-o StrictHostKeyChecking=no \
-o ConnectTimeout=10 \
-o ServerAliveInterval=5 \
-o ServerAliveCountMax=3 \
-o BatchMode=yes \
$VCL3_USER@$VCL3_HOST \
'cd ~/devops-project && GIT_TERMINAL_PROMPT=0 git pull origin main 2>&1'

EXIT_CODE=$?
if [ $EXIT_CODE -eq 0 ]; then
echo "✓ VCL3 backup completed successfully"
elif [ $EXIT_CODE -eq 124 ]; then
echo "⚠️ VCL3 backup timed out after 30 seconds"
else
echo "⚠️ VCL3 backup failed (exit code: $EXIT_CODE)"
fi

set -e
rm -f ~/.ssh/vcl3_deploy_key || true

- name: Cleanup SSH key
if: always()
run: |
rm -f ~/.ssh/deploy_key
91 changes: 91 additions & 0 deletions .github/workflows/pr-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
name: PR Tests

on:
pull_request:
branches:
- main

jobs:
lint:
name: Run linting checks
runs-on: [self-hosted, linux, x64]
strategy:
matrix:
node-version: [18.x]
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}

- name: Install dependencies
working-directory: coffee_project
run: npm install

- name: Run ESLint
working-directory: coffee_project
run: npm run lint

test:
name: Run unit tests
runs-on: [self-hosted, linux, x64]
needs: lint
strategy:
matrix:
node-version: [18.x]
env:
DATABASE_URL: postgres://postgres:postgres@localhost:5433/coffee_test
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}

- name: Install dependencies
working-directory: coffee_project
run: npm install

- name: Start Postgres container
run: |
# Stop and remove any existing test postgres container
sudo docker stop coffee-test-postgres || true
sudo docker rm coffee-test-postgres || true

# Start fresh Postgres container for testing
sudo docker run -d \
--name coffee-test-postgres \
-e POSTGRES_DB=coffee_test \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=postgres \
-p 5433:5432 \
postgres:15

echo "Waiting for Postgres to be ready..."
for i in {1..30}; do
if sudo docker exec coffee-test-postgres pg_isready -U postgres > /dev/null 2>&1; then
echo "Postgres is ready!"
break
fi
echo "Waiting... ($i/30)"
sleep 2
done

- name: Run migrations
working-directory: coffee_project
run: npm run migrate

- name: Run tests
working-directory: coffee_project
run: npm test

- name: Cleanup Postgres container
if: always()
run: |
sudo docker stop coffee-test-postgres || true
sudo docker rm coffee-test-postgres || true
33 changes: 33 additions & 0 deletions .github/workflows/sync-dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Sync Dev Branch

on:
pull_request:
types: [closed]
branches:
- main

jobs:
sync-dev:
name: Back-merge main to dev
if: github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'main' && github.event.pull_request.head.ref == 'dev'
runs-on: [self-hosted, linux, x64]

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
ref: main
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}

- name: Configure Git
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"

- name: Merge main back to dev
run: |
git fetch origin dev
git checkout dev
git merge main -m "Auto-sync: merge main back to dev after PR merge"
git push origin dev
51 changes: 51 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Node modules
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Environment variables
.env
.env.local
.env.*.local

# Logs
logs/
*.log

# Database backups
*.sql
*.dump

# OS files
.DS_Store
Thumbs.db
desktop.ini

# IDE files
.vscode/
.idea/
*.swp
*.swo
*~

# Test coverage
coverage/
.nyc_output/

# Build outputs
dist/
build/
*.min.js

# Temporary files
tmp/
temp/
*.tmp

# Docker volumes data (if using bind mounts)
postgres_data/

# Package lock files (optional - remove if you want to commit them)
# package-lock.json
# yarn.lock
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "coffee-project"]
path = coffee-project
url = https://github.ncsu.edu/CSC-519/coffee-project.git
Loading
Loading