From 9eaf6f45fc61c6e7737ed2caa998a823d301e8e9 Mon Sep 17 00:00:00 2001 From: Chae Jeong Ah Date: Tue, 9 Jan 2024 01:23:19 +0900 Subject: [PATCH] =?UTF-8?q?Feat:=20=ED=91=B8=EC=8B=9C=20=EC=84=9C=EB=B2=84?= =?UTF-8?q?=20=EC=9D=B8=ED=94=84=EB=9D=BC=20=EC=9D=B4=EC=A0=84=EC=97=90=20?= =?UTF-8?q?=EB=94=B0=EB=A5=B8=20actions=20script=20=EB=B3=80=EA=B2=BD=20(#?= =?UTF-8?q?49)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Feat: develop to oracle actions script * Fix: upgrade node version and tag dev * Fix: fix typo in docker tagging * Fix: remove docker tagging to time command * Fix: docker tag using commit hash * Fix: change dev app port * Fix: fix typo in yml * Feat: dev 환경 빌드, 배포 스크립트 * Fix: fix NODE_ENV * Fix: change target branch for test * Fix: change release script command * Fix: change target branch to develop * Build: fix dockerfile node version * Fix: deploy.yml action name * Feat: prod actions script (test) * Fix: change fcm credential env * Feat: production actions script * Fix: change slack channel webhook to prod --- .github/workflows/develop.yml | 68 +++++++++++++++-------------------- .github/workflows/main.yml | 68 +++++++++++++++-------------------- Dockerfile | 2 +- Dockerfile.dev | 4 +-- src/index.ts | 7 +++- 5 files changed, 67 insertions(+), 82 deletions(-) diff --git a/.github/workflows/develop.yml b/.github/workflows/develop.yml index 07fca3f..4f61602 100644 --- a/.github/workflows/develop.yml +++ b/.github/workflows/develop.yml @@ -10,17 +10,13 @@ jobs: PORT: ${{ secrets.PORT }} MONGODB_URI_DEV: ${{ secrets.MONGODB_URI_DEV }} MONGODB_URI_PROD: ${{ secrets.MONGODB_URI_PROD }} - AWS_ACCESS_KEY_ID_DEV: ${{ secrets.AWS_SECRET_ACCESS_KEY_DEV }} - AWS_SECRET_ACCESS_KEY_DEV: ${{ secrets.AWS_SECRET_ACCESS_DEV }} - AWS_ACCESS_KEY_ID_PROD: ${{ secrets.AWS_SECRET_ACCESS_KEY_PROD }} - AWS_SECRET_ACCESS_KEY_PROD: ${{ secrets.AWS_SECRET_ACCESS_PROD }} REGION: ${{ secrets.REGION }} runs-on: ubuntu-latest strategy: matrix: - node-version: [16.x] + node-version: [18.x] steps: - uses: actions/checkout@v2 @@ -36,11 +32,7 @@ jobs: echo MONGODB_URI_DEV=${{ secrets.MONGODB_URI_DEV }} >> .env echo MONGODB_URI_PROD=${{ secrets.MONGODB_URI_PROD }} >> .env echo PORT=${{ secrets.PORT }} >> .env - echo AWS_ACCESS_KEY_ID_DEV=${{ secrets.AWS_ACCESS_KEY_ID_DEV }} >> .env - echo AWS_SECRET_ACCESS_KEY_DEV=${{ secrets.AWS_SECRET_ACCESS_KEY_DEV }} >> .env - echo AWS_ACCESS_KEY_ID_PROD=${{ secrets.AWS_ACCESS_KEY_ID_PROD }} >> .env - echo AWS_SECRET_ACCESS_KEY_PROD=${{ secrets.AWS_SECRET_ACCESS_KEY_PROD }} >> .env - echo REGION=${{ secrets.REGION }} >> .env + echo DEV_PORT=${{ secrets.DEV_PORT }} >> .env echo DOCKERFILE=Dockerfile.dev >> .env cat .env @@ -57,38 +49,36 @@ jobs: - name: Run build run: yarn build - - name: Build the Docker image - run: docker build -t havit/havit-server-dev -f Dockerfile.dev . - - - name: Generate Deployment Package - run: zip -r deploy.zip * - - - name: Add .env to deploy.zip - run: zip deploy.zip .env - - - name: Get timestamp - uses: gerred/actions/current-time@master - id: current-time - - - name: Run string replace - uses: frabert/replace-string-action@master - id: format-time + - name: Login to Docker Hub + uses: docker/login-action@v1 with: - pattern: '[:\.]+' - string: '${{ steps.current-time.outputs.time }}' - replace-with: '-' - flags: 'g' + username: ${{secrets.DOCKER_HUB_USERNAME}} + password: ${{secrets.DOCKER_HUB_TOKEN}} - - name: Deploy to EB - uses: einaregilsson/beanstalk-deploy@v14 + - name: build and tagging release to DockerHub + env: + NAME: ${{secrets.DOCKER_HUB_USERNAME}} + REPO: havit-push + run: | + shortHash=$(git rev-parse --short ${{ github.sha }}) + docker build -t $REPO -f Dockerfile.dev . + docker tag $REPO:latest $NAME/$REPO:latest + docker tag $REPO:latest $NAME/$REPO:dev + docker tag $REPO:latest $NAME/$REPO:dev-$shortHash + docker push $NAME/$REPO:latest + docker push $NAME/$REPO:dev + docker push $NAME/$REPO:dev-$shortHash + + - name: Run Deploy Script + uses: appleboy/ssh-action@master with: - aws_access_key: ${{ secrets.AWS_ACCESS_KEY_ID_DEV }} - aws_secret_key: ${{ secrets.AWS_SECRET_ACCESS_KEY_DEV }} - application_name: havit-server-dev - environment_name: Havitserverdev-env - version_label: 'havit-server-dev${{ steps.format-time.outputs.replaced }}' - region: ${{ secrets.REGION }} - deployment_package: deploy.zip + host: ${{ secrets.REMOTE_IP }} + username: ${{ secrets.REMOTE_SSH_ID }} + key: ${{ secrets.REMOTE_SSH_KEY }} + port: ${{ secrets.REMOTE_SSH_PORT }} + script: | + cd /opt/havit/docker + sudo /opt/havit/docker/dev-deploy.sh - name: action-slack uses: 8398a7/action-slack@v3 diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 786dcf5..bdc2398 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -10,17 +10,13 @@ jobs: PORT: ${{ secrets.PORT }} MONGODB_URI_DEV: ${{ secrets.MONGODB_URI_DEV }} MONGODB_URI_PROD: ${{ secrets.MONGODB_URI_PROD }} - AWS_ACCESS_KEY_ID_DEV: ${{ secrets.AWS_SECRET_ACCESS_KEY_DEV }} - AWS_SECRET_ACCESS_KEY_DEV: ${{ secrets.AWS_SECRET_ACCESS_DEV }} - AWS_ACCESS_KEY_ID_PROD: ${{ secrets.AWS_SECRET_ACCESS_KEY_PROD }} - AWS_SECRET_ACCESS_KEY_PROD: ${{ secrets.AWS_SECRET_ACCESS_PROD }} REGION: ${{ secrets.REGION }} runs-on: ubuntu-latest strategy: matrix: - node-version: [16.x] + node-version: [18.x] steps: - uses: actions/checkout@v2 @@ -36,11 +32,7 @@ jobs: echo MONGODB_URI_DEV=${{ secrets.MONGODB_URI_DEV }} >> .env echo MONGODB_URI_PROD=${{ secrets.MONGODB_URI_PROD }} >> .env echo PORT=${{ secrets.PORT }} >> .env - echo AWS_ACCESS_KEY_ID_DEV=${{ secrets.AWS_ACCESS_KEY_ID_DEV }} >> .env - echo AWS_SECRET_ACCESS_KEY_DEV=${{ secrets.AWS_SECRET_ACCESS_KEY_DEV }} >> .env - echo AWS_ACCESS_KEY_ID_PROD=${{ secrets.AWS_ACCESS_KEY_ID_PROD }} >> .env - echo AWS_SECRET_ACCESS_KEY_PROD=${{ secrets.AWS_SECRET_ACCESS_KEY_PROD }} >> .env - echo REGION=${{ secrets.REGION }} >> .env + echo DEV_PORT=${{ secrets.DEV_PORT }} >> .env echo DOCKERFILE=Dockerfile >> .env cat .env @@ -57,38 +49,36 @@ jobs: - name: Run build run: yarn build - - name: Build the Docker image - run: docker build -t havit/havit-server-prod -f Dockerfile . - - - name: Generate Deployment Package - run: zip -r deploy.zip * - - - name: Add .env to deploy.zip - run: zip deploy.zip .env - - - name: Get timestamp - uses: gerred/actions/current-time@master - id: current-time - - - name: Run string replace - uses: frabert/replace-string-action@master - id: format-time + - name: Login to Docker Hub + uses: docker/login-action@v1 with: - pattern: '[:\.]+' - string: '${{ steps.current-time.outputs.time }}' - replace-with: '-' - flags: 'g' + username: ${{secrets.DOCKER_HUB_USERNAME}} + password: ${{secrets.DOCKER_HUB_TOKEN}} - - name: Deploy to EB - uses: einaregilsson/beanstalk-deploy@v14 + - name: build and tagging release to DockerHub + env: + NAME: ${{secrets.DOCKER_HUB_USERNAME}} + REPO: havit-push + run: | + shortHash=$(git rev-parse --short ${{ github.sha }}) + docker build -t $REPO -f Dockerfile . + docker tag $REPO:latest $NAME/$REPO:latest + docker tag $REPO:latest $NAME/$REPO:prod + docker tag $REPO:latest $NAME/$REPO:prod-$shortHash + docker push $NAME/$REPO:latest + docker push $NAME/$REPO:prod + docker push $NAME/$REPO:prod-$shortHash + + - name: Run Deploy Script + uses: appleboy/ssh-action@master with: - aws_access_key: ${{ secrets.AWS_ACCESS_KEY_ID_PROD }} - aws_secret_key: ${{ secrets.AWS_SECRET_ACCESS_KEY_PROD }} - application_name: havit-server-prod - environment_name: Havitserverprod-env - version_label: 'havit-server-prod${{ steps.format-time.outputs.replaced }}' - region: ${{ secrets.REGION }} - deployment_package: deploy.zip + host: ${{ secrets.REMOTE_IP }} + username: ${{ secrets.REMOTE_SSH_ID }} + key: ${{ secrets.REMOTE_SSH_KEY }} + port: ${{ secrets.REMOTE_SSH_PORT }} + script: | + cd /opt/havit/docker + sudo /opt/havit/docker/deploy.sh - name: action-slack uses: 8398a7/action-slack@v3 diff --git a/Dockerfile b/Dockerfile index c235b64..ab15ed6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:16-alpine +FROM node:18-alpine WORKDIR /usr/app diff --git a/Dockerfile.dev b/Dockerfile.dev index e27adc0..0109ae0 100644 --- a/Dockerfile.dev +++ b/Dockerfile.dev @@ -1,4 +1,4 @@ -FROM node:16-alpine +FROM node:18-alpine WORKDIR /usr/app @@ -12,6 +12,6 @@ RUN yarn ADD . . -EXPOSE 8081 +EXPOSE 8080 ENTRYPOINT ["cross-env", "NODE_ENV=development", "node", "dist"] diff --git a/src/index.ts b/src/index.ts index 9a48cea..83817ce 100644 --- a/src/index.ts +++ b/src/index.ts @@ -20,8 +20,13 @@ app.use(function (err, req, res, next) { res.render('error'); }); +const port = + process.env.NODE_ENV === 'development' + ? process.env.DEV_PORT + : process.env.PORT; + app - .listen(process.env.PORT, () => { + .listen(port, () => { console.log(` ################################################ 🛡️ Server listening on port 🛡️