computer-scienceangular-roadmapbackend-roadmapblockchain-roadmapdba-roadmapdeveloper-roadmapdevops-roadmapfrontend-roadmapgo-roadmaphactoberfestjava-roadmapjavascript-roadmapnodejs-roadmappython-roadmapqa-roadmapreact-roadmaproadmapstudy-planvue-roadmapweb3-roadmap
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.5 KiB
79 lines
2.5 KiB
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 } }' |