From 4ae5e8f830ff927f987a9101ba290dfd8244f036 Mon Sep 17 00:00:00 2001 From: Vadim Date: Thu, 24 Sep 2026 15:27:25 +0300 Subject: [PATCH] ci/cd --- .dockerignore | 7 ++++++ .gitea/workflows/deploy.yaml | 44 +++++++++++++++++++++++++++++++++ Dockerfile | 11 +++++++++ docker-compose.yml | 14 +++++++++++ nginx.conf.template | 19 ++++++++++++++ src/components/IssueDetails.vue | 1 - src/lib/auth-client.ts | 2 +- 7 files changed, 96 insertions(+), 2 deletions(-) create mode 100644 .dockerignore create mode 100644 .gitea/workflows/deploy.yaml create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100644 nginx.conf.template diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..b9410f1 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,7 @@ +node_modules +dist +.git +.idea +.vscode +coverage +*.log diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml new file mode 100644 index 0000000..09d29c4 --- /dev/null +++ b/.gitea/workflows/deploy.yaml @@ -0,0 +1,44 @@ +name: Gitea Actions Demo +run-name: Deploy 🚀 +on: + push: + branches: + - main +env: + IMAGE_NAME: git.madsky.ru/vadim/ulitka-app + DEPLOY_DIR: ulitka-app +concurrency: + group: deploy-frontend + cancel-in-progress: false +jobs: + Deploy: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v6 + - name: Docker build + run: docker build --tag ${{ env.IMAGE_NAME }} . + - name: Login to gitea + uses: docker/login-action@v4 + with: + registry: git.madsky.ru + username: ${{ secrets.USERNAME }} + password: ${{ secrets.TOKEN }} + - name: Push Docker image to gitea registry + run: | + IMAGE_TAG="${{ env.IMAGE_NAME }}:${{ gitea.sha }}" + LATEST_TAG="${{ env.IMAGE_NAME }}:latest" + docker tag ${{ env.IMAGE_NAME }} $IMAGE_TAG + docker tag ${{ env.IMAGE_NAME }} $LATEST_TAG + docker push $IMAGE_TAG + docker push $LATEST_TAG + - name: Execute remote SSH commands + uses: appleboy/ssh-action@v1 + with: + host: ${{ secrets.HOST }} + username: ${{ secrets.USERNAME }} + key: ${{ secrets.PRIVATE_KEY }} + script: | + cd ${{ env.DEPLOY_DIR }} && docker compose pull && docker compose up -d + - name: Ready + run: echo "Success!" diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..79fea0b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM node:lts-alpine AS build +WORKDIR /app +COPY package*.json ./ +RUN npm install +COPY . . +RUN npm run build + +FROM nginx:alpine +COPY nginx.conf.template /etc/nginx/templates/default.conf.template +COPY --from=build /app/dist /usr/share/nginx/html +EXPOSE 80 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..1649285 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,14 @@ +services: + ulitka-app: + image: git.madsky.ru/vadim/ulitka-app:latest + restart: unless-stopped + ports: + - "8080:80" + environment: + BACKEND_UPSTREAM: ulitka:3000 + networks: + - shared_net + +networks: + shared_net: + external: true diff --git a/nginx.conf.template b/nginx.conf.template new file mode 100644 index 0000000..6412ea9 --- /dev/null +++ b/nginx.conf.template @@ -0,0 +1,19 @@ +server { + listen 80; + server_name _; + + root /usr/share/nginx/html; + index index.html; + + location /api/ { + proxy_pass http://${BACKEND_UPSTREAM}/api/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + } + + location / { + try_files $uri /index.html; + } +} diff --git a/src/components/IssueDetails.vue b/src/components/IssueDetails.vue index 53f6689..1ed61f9 100644 --- a/src/components/IssueDetails.vue +++ b/src/components/IssueDetails.vue @@ -1,7 +1,6 @@