diff --git a/.github/workflows/danak-deploy.yaml b/.github/workflows/danak-deploy.yaml new file mode 100644 index 0000000..7f3f8d0 --- /dev/null +++ b/.github/workflows/danak-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: 00da393c33ca35fd455fae0e8d2cae0ae10cddd524da78c74eb71c5383d39b01 + CAPROVER_APP_NAME: asan-service-gps-front + 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/liara.yaml b/.github/workflows/liara.yaml deleted file mode 100644 index fd3b065..0000000 --- a/.github/workflows/liara.yaml +++ /dev/null @@ -1,87 +0,0 @@ -name: CD-Liara -on: - push: - branches: - - main -jobs: - deploy: - runs-on: ubuntu-latest - - env: - DISCORD_WEBHOOK_URL: 'https://canary.discord.com/api/webhooks/1266738294226554953/xLG8rouRFIAJJGSgroDyjorzkh1vxn6b2QqlLM44Y1rONt8F0rGkAB5v5VKY1h_znQW6' - APP_NAME: asan-service-gps - LIARA_TOKEN: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySUQiOiI2NGVkY2ZmYWJiODUyOWZmNWFmOTU3YmEiLCJpYXQiOjE3MjUzOTMwODF9.JaGcGDs3o2TpBe96U-ZC2SVyyN6gLSMwC_AE1IBHULc - - 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 --port=3000 - - 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..483334b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,25 @@ +FROM node:20-alpine AS builder + +# RUN corepack enable yarn && corepack prepare yarn@latest --activate +# Install tzdata to support timezone settings +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 + +WORKDIR /build +COPY package*.json ./ +RUN npm install +COPY . ./ +RUN npm run build + +FROM nginx:stable-alpine AS production-stage + +COPY --from=builder /build/build /usr/share/nginx/html + +COPY --from=builder /build/nginx.con[f] /etc/nginx/conf.d/default.conf +RUN cat /etc/nginx/conf.d/default.conf + +EXPOSE 80 + +CMD ["nginx", "-g", "daemon off;"] diff --git a/liara.json b/liara.json deleted file mode 100644 index 7b56f35..0000000 --- a/liara.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "app":"asan-service-gps", - "port":"3000", - "node": { - "version": "18" - } -} \ No newline at end of file diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..c7189fb --- /dev/null +++ b/nginx.conf @@ -0,0 +1,19 @@ +server { + listen 80; + server_name localhost; + + location / { + root /usr/share/nginx/html; + index index.html; + try_files $uri $uri/ /index.html =404; + } + + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } + + location /health { + return 200; + } +} \ No newline at end of file