88
99jobs :
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
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