Deploy to EC2 #616
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Deploy to EC2 | |
on: | |
workflow_dispatch: # allow manual run | |
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/[email protected] | |
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/[email protected] | |
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 } }' |