Deploy to EC2 #708
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: | |
jobs: | |
deploy: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 2 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- uses: pnpm/[email protected] | |
with: | |
version: 9 | |
# ------------------- | |
# 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 Production 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 Application 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 } }' |