From 0a50b08e17b51e35c0193dc6fe1f650a50d8d9da Mon Sep 17 00:00:00 2001 From: mahyargdz Date: Sun, 20 Oct 2024 15:59:21 +0330 Subject: [PATCH] feat: add ci cd files do not edit those files --- .github/workflows/Deploy.yaml | 48 +++++++++++++++++++ .github/workflows/main.yml | 87 ----------------------------------- Dockerfile | 47 +++++++++++++++++++ liara.json | 14 ------ nuxt.config.js | 2 +- server/database.js | 3 +- 6 files changed, 98 insertions(+), 103 deletions(-) create mode 100644 .github/workflows/Deploy.yaml delete mode 100644 .github/workflows/main.yml create mode 100644 Dockerfile delete mode 100644 liara.json diff --git a/.github/workflows/Deploy.yaml b/.github/workflows/Deploy.yaml new file mode 100644 index 0000000..7275650 --- /dev/null +++ b/.github/workflows/Deploy.yaml @@ -0,0 +1,48 @@ +name: deploy to danak + +on: + push: + branches: + - main + +jobs: + build_and_deploy: + runs-on: ubuntu-latest + + env: + DANAK_SERVER: "https://captain.run.danakcorp.com" + APP_TOKEN: 03786e2259b28db4b190733ab5e01505edf290820c69fa98d9b6961cbc79283b + CAPROVER_APP_NAME: asan-service + GITHUB_TOKEN: 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 + + steps: + - name: Check out repositorys + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: zmihamid + password: ${{ env.GITHUB_TOKEN }} + + - name: Preset Image Name + run: echo "IMAGE_URL=$(echo ghcr.io/zmihamid/${{ github.event.repository.name }}:$(echo ${{ github.sha }} | cut -c1-7) | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV + + - name: Build and push Docker Image + uses: docker/build-push-action@v5 + with: + context: . + file: ./Dockerfile + push: true + tags: ${{ env.IMAGE_URL }} + + - name: Install CapRover CLI + run: npm install -g caprover + + - name: deploy to server + run: | + caprover deploy -a $CAPROVER_APP_NAME -u $DANAK_SERVER --appToken $APP_TOKEN -i "$IMAGE_URL" diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index d589223..0000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,87 +0,0 @@ -name: CD-Liara -on: - push: - branches: - - main -jobs: - deploy: - runs-on: ubuntu-latest - - env: - DISCORD_WEBHOOK_URL: 'https://discord.com/api/webhooks/1269741326543487006/NVr2BlA8FTrIfIybH6FqWkb4SAFqy5R7HRFs75HfI7gEegvkuuPZhHToimOC5mOtOeLG' - LIARA_TOKEN: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySUQiOiI2NGVkY2ZmYWJiODUyOWZmNWFmOTU3YmEiLCJpYXQiOjE3MjkwOTQxODR9.PSFIR9J5SbOJeaB0pFH7BhQdrxVn6tsaD6kyLJn-yIU - APP_NAME: asanservice - - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: "18" - - name: Set up environment - run: | - echo "COMMIT_MESSAGE=$(echo '${{ github.event.head_commit.message }}' | jq -aRs .)" >> $GITHUB_ENV - - name: update-liara - - run: | - npm i -g @liara/cli@6 - liara deploy --app="$APP_NAME" --api-token="$LIARA_TOKEN" --no-app-logs - - name: Deploy Stage - if: success() - uses: fjogeleit/http-request-action@v1 - with: - url: ${{ env.DISCORD_WEBHOOK_URL }} - method: 'POST' - customHeaders: '{"Content-Type": "application/json"}' - data: '{ - "content": "Github push ${{ github.repository }} / ${{ github.event.head_commit.timestamp }} / ${{github.event.head_commit.author.name}}", - "embeds": [ - { - "title": "${{ github.repository }}", - "description": "Success deploy", - "url": "http://github.com/${{ github.repository }}", - "color": 32768, - "fields": [ - { - "name": "${{github.event.head_commit.author.name}}", - "value": ${{ env.COMMIT_MESSAGE }} - } - ], - "author": { - "name": "${{ github.actor }}" - }, - "timestamp": "${{ github.event.head_commit.timestamp }}" - } - ], - "username": "${{github.event.head_commit.author.name}}", - "attachments": [] - }' - - name: Deploy Stage - if: failure() - uses: fjogeleit/http-request-action@v1 - with: - url: ${{ env.DISCORD_WEBHOOK_URL }} - method: 'POST' - customHeaders: '{"Content-Type": "application/json"}' - data: '{ - "content": " Failed to deploy ${{ github.repository }} / ${{ github.event.head_commit.timestamp }} / ${{github.event.head_commit.author.name}}", - "embeds": [ - { - "title": "${{ github.repository }}", - "description": "Failed to deploy", - "url": "http://github.com/${{ github.repository }}", - "color": 16711680, - "fields": [ - { - "name": "${{github.event.head_commit.author.name}}", - "value": ${{ env.COMMIT_MESSAGE }} - } - ], - "author": { - "name": "${{ github.actor }}" - }, - "timestamp": "${{ github.event.head_commit.timestamp }}" - } - ], - "username": "${{github.event.head_commit.author.name}}", - "attachments": [] - }' diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..52a4cc4 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,47 @@ +FROM node:20-alpine AS base + +RUN apk add --no-cache tzdata + +# Set the timezone to Asia/Tehran +RUN cp /usr/share/zoneinfo/Asia/Tehran /etc/localtime && echo "Asia/Tehran" > /etc/timezone + +FROM base AS deps +WORKDIR /temp-deps +COPY package*.json ./ +RUN npm install + +FROM base AS builder +WORKDIR /build +COPY . ./ +COPY --from=deps /temp-deps/node_modules ./node_modules +RUN npm run build +RUN npm install --omit=dev + + +FROM base AS runner +WORKDIR /app +ENV NUXT_TELEMETRY_DISABLED=1 + + +RUN addgroup -S appgroup && adduser -S appuser -G appgroup +RUN chown -R appuser:appgroup /app + +# COPY --from=builder --chown=appuser:appgroup /build/.nuxt ./.nuxt +# COPY --from=builder --chown=appuser:appgroup /build/static ./static +# COPY --from=builder --chown=appuser:appgroup /build/package.json ./ +# COPY --from=builder --chown=appuser:appgroup /build/node_modules/ ./node_modules/ +COPY --from=builder --chown=appuser:appgroup /build ./ + + +USER appuser + +# Set environment variables +ENV NODE_ENV=production +ENV PORT=3000 +ENV HOSTNAME="0.0.0.0" + + +EXPOSE 3000 + +# Start the Nuxt 2 app +CMD ["npm", "start"] diff --git a/liara.json b/liara.json deleted file mode 100644 index 3f6f04c..0000000 --- a/liara.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "app":"asanservice", - "port":"7420", - "disks":[ - { - "name": "uploads", - "mountTo": "static/uploads" - } - ], - "node": { - "version": "18" - } - -} diff --git a/nuxt.config.js b/nuxt.config.js index 5ff433a..28bd5fc 100644 --- a/nuxt.config.js +++ b/nuxt.config.js @@ -193,7 +193,7 @@ export default { complaint:"با سلام و احترام. ضمن خوش آمدگویی به شما مشتری گرامی به آگاهی می‌رساند امکان ثبت شکایات شما در سامانه رسیدگی به شکایات شرکت آسان سرویس فراهم است. شما عزیزان می‌توانید شکایت خود را در آن ثبت نمائید. این واحد وظیفه پاسخگویی و رسیدگی به شکایات را بر عهده دارد. چنانچه از نحوه ارائه خدمات در هریک از شعب و یا نمایندگی‌های داریا همراه در سطح کشور، در زمینه‌های نقض قوانین، کوتاهی یا عدم انجام وظیفه، اطاله رسیدگی، عدم پاسخگویی، یا ضعف در ارائه خدمات، شکایتی داشته و شخصاَ ذینفع آن بوده و از شرکت آسان سرویس درخواست رسیدگی دارید می‌توانید شکایت خود را در این سامانه ثبت نموده تا وفق مقررات به آن رسیدگی شده و پاسخ لازم ارائه گردد.", survey:"با سلام و احترام. ضمن خوش آمدگویی به شما مشتری گرامی به آگاهی می‌رساند امکان ثبت نظر شما در سامانه نظرسنجی شرکت آسان سرویس فراهم است. شما عزیزان می‌توانید نظر خود را درباره خدمات ما در این سامانه ثبت کنید .", // Asan market - apiAsanMarket:"https://api-asanmarket.iran.liara.run" + apiAsanMarket:"https://api.asanmarket.co" }, privateRuntimeConfig: {} } diff --git a/server/database.js b/server/database.js index 5dc997a..070dc70 100644 --- a/server/database.js +++ b/server/database.js @@ -2,7 +2,8 @@ const mongoose = require('mongoose') // mongodb database connection string. change it as per your needs. here "mydb" is the name of the database. You don't need to create DB from mongodb terminal. mongoose create the database automatically. const inHostUrl = 'mongodb://root:KPTt76tImNBBMm4Kor8QA9gB@asan-service:27017/asanserv_database?authSource=admin' -const outHostUrl = 'mongodb://root:KPTt76tImNBBMm4Kor8QA9gB@hotaka.liara.cloud:33794/asanserv_database?authSource=admin' +// const outHostUrl = 'mongodb://root:KPTt76tImNBBMm4Kor8QA9gB@hotaka.liara.cloud:33794/asanserv_database?authSource=admin' +const outHostUrl = 'mongodb://root:9a82d91402ee06cb@srv-captain--asan-service-db:27017/asanserv_database?authSource=admin' const init = ()=>{ try { mongoose.connect(outHostUrl, {