Skip to content

Commit adc8669

Browse files
Refactor CI/CD to use GitHub-hosted runners
Updated CI/CD workflow to use GitHub-hosted runners and added SSH tunnel setup for RDS access.
1 parent bc00d7f commit adc8669

File tree

1 file changed

+18
-14
lines changed

1 file changed

+18
-14
lines changed

.github/workflows/ci-cd.yml

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ on:
88

99
jobs:
1010
build-and-test:
11-
12-
runs-on: [self-hosted, linux] # Runs inside your VPC for RDS access
11+
runs-on: ubuntu-latest # GitHub-hosted runner
1312

1413
steps:
1514
- name: Checkout code
@@ -23,20 +22,31 @@ jobs:
2322
- name: Install dependencies
2423
run: npm install
2524

25+
- name: Setup SSH key for tunnel
26+
run: |
27+
echo "${{ secrets.EC2_KEY }}" > ec2_key.pem
28+
chmod 600 ec2_key.pem
29+
30+
- name: Start SSH tunnel to private RDS
31+
run: |
32+
ssh -i ec2_key.pem -o StrictHostKeyChecking=no -N -L 5432:${{ secrets.DB_HOST }}:5432 ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} &
33+
echo "SSH tunnel started"
34+
35+
- name: Wait for tunnel to be ready
36+
run: sleep 5
37+
2638
- name: Run tests
2739
env:
28-
# RDS private endpoint
29-
30-
DB_HOST: ${{ secrets.DB_HOST }}
40+
DB_HOST: localhost # Connect via local port forwarded to RDS
3141
DB_USER: ${{ secrets.DB_USER }}
3242
DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
3343
DB_NAME: ${{ secrets.DB_NAME }}
34-
DB_PORT: ${{ secrets.DB_PORT }}
44+
DB_PORT: 5432
3545
run: npm test || echo "Skipping tests temporarily"
3646

3747
deploy:
3848
needs: build-and-test
39-
runs-on: [self-hosted, linux]
49+
runs-on: ubuntu-latest
4050
steps:
4151
- name: Checkout code
4252
uses: actions/checkout@v3
@@ -63,7 +73,6 @@ jobs:
6373
id: deploy
6474
run: |
6575
LAMBDA_NAME="${{ secrets.LAMBDA_FUNCTION_NAME }}"
66-
6776
if aws lambda get-alias --function-name $LAMBDA_NAME --name prod; then
6877
PREV_VERSION=$(aws lambda get-alias --function-name $LAMBDA_NAME --name prod --query 'FunctionVersion' --output text)
6978
else
@@ -72,26 +81,21 @@ jobs:
7281
PREV_VERSION=$CUR_VERSION
7382
fi
7483
echo "Previous Lambda version: $PREV_VERSION"
75-
7684
aws lambda update-function-code --function-name $LAMBDA_NAME --zip-file fileb://function.zip
77-
7885
echo "Waiting for Lambda update to complete..."
7986
while true; do
8087
STATUS=$(aws lambda get-function --function-name $LAMBDA_NAME --query 'Configuration.LastUpdateStatus' --output text)
8188
echo "Lambda update status: $STATUS"
82-
if [ "$STATUS" == "Successful" ]; then
83-
break
89+
if [ "$STATUS" == "Successful" ]; then break
8490
elif [ "$STATUS" == "Failed" ]; then
8591
echo "Lambda update failed. Exiting."
8692
exit 1
8793
else
8894
sleep 5
8995
fi
9096
done
91-
9297
NEW_VERSION=$(aws lambda publish-version --function-name $LAMBDA_NAME --query 'Version' --output text)
9398
echo "New Lambda version: $NEW_VERSION"
94-
9599
aws lambda update-alias --function-name $LAMBDA_NAME --name prod --function-version $NEW_VERSION || \
96100
aws lambda update-alias --function-name $LAMBDA_NAME --name prod --function-version $PREV_VERSION
97101

0 commit comments

Comments
 (0)