70 lines
1.5 KiB
YAML
70 lines
1.5 KiB
YAML
name: Deploy with Serverless Framework
|
|
|
|
permissions:
|
|
id-token: write
|
|
contents: read
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
paths:
|
|
- "tasker-server/**"
|
|
|
|
jobs:
|
|
checkout-code:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v3
|
|
|
|
install-deps:
|
|
runs-on: ubuntu-latest
|
|
needs: checkout-code
|
|
steps:
|
|
- name: Install AWS CLI
|
|
run: |
|
|
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
|
|
unzip awscliv2.zip
|
|
sudo ./aws/install
|
|
|
|
- name: Verify AWS CLI Installation
|
|
run: aws --version
|
|
|
|
- name: Install Node.js
|
|
uses: actions/setup-node@v3
|
|
with:
|
|
node-version: "20"
|
|
|
|
- name: Install Serverless Framework
|
|
run: npm install -g serverless
|
|
|
|
run-tests:
|
|
runs-on: ubuntu-latest
|
|
needs: install-deps
|
|
steps:
|
|
- name: Run Tests
|
|
run: |
|
|
cd tasker-server
|
|
npm install
|
|
npm test:ci
|
|
|
|
assume-role:
|
|
runs-on: ubuntu-latest
|
|
needs: install-deps
|
|
steps:
|
|
- name: Configure AWS Credentials
|
|
uses: aws-actions/configure-aws-credentials@v3
|
|
with:
|
|
role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
|
|
aws-region: ${{ secrets.AWS_REGION }}
|
|
|
|
deploy-serverless:
|
|
runs-on: ubuntu-latest
|
|
needs: [checkout-code, assume-role, install-deps]
|
|
steps:
|
|
- name: Deploy Serverless Application
|
|
run: |
|
|
cd tasker-server
|
|
serverless deploy
|