Skip to content

chore: bumo version #26

chore: bumo version

chore: bumo version #26

name: backend
on:
push:
paths:
- 'apps/backend/**'
branches:
- '**'
pull_request:
paths:
- 'apps/backend/**'
branches:
- '**'
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Use Node.js 20
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install Pnpm
uses: pnpm/action-setup@v4
with:
version: 9.14.2
- name: Install dependencies
run: pnpm install
- name: Create .env file
run: |
mkdir -p ./apps/backend
echo "DATABASE_USER=${{ secrets.DATABASE_USER }}" >> ./apps/backend/.env
echo "DATABASE_PWD=${{ secrets.DATABASE_PWD }}" >> ./apps/backend/.env
echo "DATABASE_HOST=${{ secrets.DATABASE_HOST }}" >> ./apps/backend/.env
echo "DATABASE_PORT=${{ secrets.DATABASE_PORT }}" >> ./apps/backend/.env
echo "DATABASE_COLLECTION=${{ secrets.DATABASE_COLLECTION }}" >> ./apps/backend/.env
echo "BANDWAGON_SECRET_KEY=${{ secrets.BANDWAGON_SECRET_KEY }}" >> ./apps/backend/.env
echo "BANDWAGON_SERVER_ID=${{ secrets.BANDWAGON_SERVER_ID }}" >> ./apps/backend/.env
echo "KEY_CLOAK_URL=${{ secrets.KEY_CLOAK_URL }}" >> ./apps/backend/.env
echo "KEY_CLOAK_REALM=${{ secrets.KEY_CLOAK_REALM }}" >> ./apps/backend/.env
echo "KEY_CLOAK_CLIENT_ID=${{ secrets.KEY_CLOAK_CLIENT_ID }}" >> ./apps/backend/.env
echo "KEY_CLOAK_CLIENT_SECRET=${{ secrets.KEY_CLOAK_CLIENT_SECRET }}" >> ./apps/backend/.env
echo "NODE_ENV=production" >> ./apps/backend/.env
- name: Pre compilation
run: pnpm run build --filter backend
# テスト成功時はこちらのステップが実行される
- name: Slack Notification on Success at Testing Stage
if: success()
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOKS }}
SLACK_CHANNEL: github-actions
SLACK_TITLE: Test Success
SLACK_COLOR: good
SLACK_FOOTER: 'Powered by Yancey Inc. and its affiliates.'
# テスト失敗時はこちらのステップが実行される
- name: Slack Notification on Failure at Testing Stage
uses: rtCamp/action-slack-notify@v2
if: failure()
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOKS }}
SLACK_CHANNEL: github-actions
SLACK_TITLE: Test Failure
SLACK_COLOR: danger
SLACK_FOOTER: 'Powered by Yancey Inc. and its affiliates.'
deployment:
runs-on: ubuntu-latest
continue-on-error: true
needs: test
if: github.ref == 'refs/heads/master'
steps:
- uses: actions/checkout@v4
- name: Use Node.js 20
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install Pnpm
uses: pnpm/action-setup@v4
with:
version: 9.14.2
- name: Install dependencies
run: pnpm install
- name: Create .env file
run: |
mkdir -p ./apps/backend
echo "DATABASE_USER=${{ secrets.DATABASE_USER }}" >> ./apps/backend/.env
echo "DATABASE_PWD=${{ secrets.DATABASE_PWD }}" >> ./apps/backend/.env
echo "DATABASE_HOST=${{ secrets.DATABASE_HOST }}" >> ./apps/backend/.env
echo "DATABASE_PORT=${{ secrets.DATABASE_PORT }}" >> ./apps/backend/.env
echo "DATABASE_COLLECTION=${{ secrets.DATABASE_COLLECTION }}" >> ./apps/backend/.env
echo "BANDWAGON_SECRET_KEY=${{ secrets.BANDWAGON_SECRET_KEY }}" >> ./apps/backend/.env
echo "BANDWAGON_SERVER_ID=${{ secrets.BANDWAGON_SERVER_ID }}" >> ./apps/backend/.env
echo "KEY_CLOAK_URL=${{ secrets.KEY_CLOAK_URL }}" >> ./apps/backend/.env
echo "KEY_CLOAK_REALM=${{ secrets.KEY_CLOAK_REALM }}" >> ./apps/backend/.env
echo "KEY_CLOAK_CLIENT_ID=${{ secrets.KEY_CLOAK_CLIENT_ID }}" >> ./apps/backend/.env
echo "KEY_CLOAK_CLIENT_SECRET=${{ secrets.KEY_CLOAK_CLIENT_SECRET }}" >> ./apps/backend/.env
echo "NODE_ENV=production" >> ./apps/backend/.env
- name: Compilation
run: pnpm run build --filter backend
- name: Prepare files for deployment
run: |
mkdir -p dist
cp -r apps/backend/dist/* dist/
- name: Copy file via ssh key
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
port: ${{ secrets.PORT }}
key: ${{ secrets.SSH_KEY }}
source: 'dist/*'
target: '/var/www/beg-monorepo/apps/backend'
overwrite: true
- name: SSH to Server and Run Command
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
port: ${{ secrets.PORT }}
key: ${{ secrets.SSH_KEY }}
script: |
cd /var/www/beg-monorepo/apps/backend
/home/${{ secrets.USERNAME }}/.local/share/pnpm/pm2 reload ecosystem.config.js
# テスト成功時はこちらのステップが実行される
- name: Slack Notification on Success at Deployment Stage
if: success()
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOKS }}
SLACK_CHANNEL: github-actions
SLACK_TITLE: Deploy Success
SLACK_COLOR: good
SLACK_FOOTER: 'Powered by Yancey Inc. and its affiliates.'
# テスト失敗時はこちらのステップが実行される
- name: Slack Notification on Failure at Deployment Stage
uses: rtCamp/action-slack-notify@v2
if: failure()
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOKS }}
SLACK_CHANNEL: github-actions
SLACK_TITLE: Deploy Failure
SLACK_COLOR: danger
SLACK_FOOTER: 'Powered by Yancey Inc. and its affiliates.'