|
|
|
name: Deploy to EC2
|
|
|
|
on:
|
|
|
|
workflow_dispatch: # allow manual run
|
|
|
|
push:
|
|
|
|
branches:
|
|
|
|
- master
|
|
|
|
paths:
|
|
|
|
- 'src/**'
|
|
|
|
- 'public/**'
|
|
|
|
- 'editor/**'
|
|
|
|
jobs:
|
|
|
|
deploy:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
|
|
- name: Checkout code
|
|
|
|
uses: actions/checkout@v2
|
|
|
|
with:
|
|
|
|
fetch-depth: 2
|
|
|
|
- uses: actions/setup-node@v1
|
|
|
|
with:
|
|
|
|
node-version: 20
|
|
|
|
- uses: pnpm/action-setup@v3.0.0
|
|
|
|
with:
|
|
|
|
version: 8.15.6
|
|
|
|
|
|
|
|
# --------------------
|
|
|
|
# Setup configuration
|
|
|
|
# --------------------
|
|
|
|
- name: Prepare configuration files
|
|
|
|
run: |
|
|
|
|
git clone https://${{ secrets.GH_PAT }}@github.com/roadmapsh/infra-config.git configuration --depth 1
|
|
|
|
- name: Copy configuration files
|
|
|
|
run: |
|
|
|
|
cp configuration/dist/github/developer-roadmap.env .env
|
|
|
|
|
|
|
|
# --------------------
|
|
|
|
# Prepare the build
|
|
|
|
# --------------------
|
|
|
|
- name: Install dependencies
|
|
|
|
run: |
|
|
|
|
pnpm install
|
|
|
|
- name: Generate build
|
|
|
|
run: |
|
|
|
|
git clone https://${{ secrets.GH_PAT }}@github.com/roadmapsh/web-draw.git .temp/web-draw --depth 1
|
|
|
|
npm run generate-renderer
|
|
|
|
npm run compress:images
|
|
|
|
npm run build
|
|
|
|
|
|
|
|
# --------------------
|
|
|
|
# Deploy to EC2
|
|
|
|
# --------------------
|
|
|
|
- uses: webfactory/ssh-agent@v0.7.0
|
|
|
|
with:
|
|
|
|
ssh-private-key: ${{ secrets.EC2_PRIVATE_KEY }}
|
|
|
|
- name: Deploy app to EC2
|
|
|
|
run: |
|
|
|
|
rsync -apvz --delete --no-times --exclude "configuration" -e "ssh -o StrictHostKeyChecking=no" -p ./ ${{ secrets.EC2_USERNAME }}@${{ secrets.EC2_HOST }}:/var/www/roadmap.sh/
|
|
|
|
- name: Restart PM2
|
|
|
|
uses: appleboy/ssh-action@master
|
|
|
|
with:
|
|
|
|
host: ${{ secrets.EC2_HOST }}
|
|
|
|
username: ${{ secrets.EC2_USERNAME }}
|
|
|
|
key: ${{ secrets.EC2_PRIVATE_KEY }}
|
|
|
|
script: |
|
|
|
|
cd /var/www/roadmap.sh
|
|
|
|
sudo pm2 restart web-roadmap
|
|
|
|
|
|
|
|
# --------------------
|
|
|
|
# Clear cloudfront cache
|
|
|
|
# --------------------
|
|
|
|
- name: Clear Cloudfront Caching
|
|
|
|
run: |
|
|
|
|
curl -L \
|
|
|
|
-X POST \
|
|
|
|
-H "Accept: application/vnd.github+json" \
|
|
|
|
-H "Authorization: Bearer ${{ secrets.GH_PAT }}" \
|
|
|
|
-H "X-GitHub-Api-Version: 2022-11-28" \
|
|
|
|
https://api.github.com/repos/roadmapsh/infra-ansible/actions/workflows/playbook.yml/dispatches \
|
|
|
|
-d '{ "ref":"master", "inputs": { "playbook": "roadmap_web.yml", "tags": "cloudfront", "is_verbose": false } }'
|