name: Build and Publish Portfolio on: push: branches: [main] tags: - "v*" # Trigger on version tags like v1.0.0 pull_request: branches: [main] jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: "24" cache: "" - name: Install dependencies run: npm ci - name: Upload build artifacts uses: actions/upload-artifact@v3 with: name: dist path: dist/ publish: needs: build runs-on: ubuntu-latest if: startsWith(github.ref, 'refs/tags/v') # Only publish on version tags steps: - name: Checkout code uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: "24" cache: "" - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: ${{ var.AWS_REGION }} - name: Install dependencies run: npm i - name: Deploy run: npm run-script cdk -- deploy