Merge branch 'production' of https://gitea.miduway.space/levis/ebook into production
All checks were successful
Deploy Nuxt App / deploy (push) Successful in 1m53s

This commit is contained in:
2025-06-19 21:07:57 +04:00
8 changed files with 100 additions and 163 deletions

View File

@ -1,4 +1,4 @@
name: Deploy Application name: Deploy Nuxt App
on: [push] on: [push]
jobs: jobs:
@ -8,27 +8,37 @@ jobs:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v3 uses: actions/checkout@v3
with: with:
token: 0406afe7de6547e850dd62c84976c6def23a5193 token: ${{ secrets.TOKEN }}
- name: Install curl - name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '22'
- name: Install dependencies and build
run: | run: |
if command -v apt-get &> /dev/null; then npm install
apt-get update && apt-get install -y curl npm run build
elif command -v apk &> /dev/null; then
apk add --no-cache curl
elif command -v yum &> /dev/null; then
yum install -y curl
fi
- name: Upload config files to server - name: Prepare deployment files
run: |
tar -czf deploy.tar.gz dist Dockerfile docker-compose.yml
- name: Upload files via Gitea API
env: env:
GITEA_API: "https://gitea.miduway.space/api/v1/repos/levis/ebook/raw/main" GITEA_API: "https://gitea.miduway.space/api/v1/repos/levis/ebook/raw/production"
GITEA_TOKEN: "0406afe7de6547e850dd62c84976c6def23a5193" GITEA_TOKEN: ${{ secrets.TOKEN }}
run: | run: |
for file in docker-compose.yml Dockerfile; do for file in Dockerfile docker-compose.yml; do
echo "Uploading $file"
curl -X PUT \ curl -X PUT \
-H "Authorization: token $GITEA_TOKEN" \ -H "Authorization: token $TOKEN" \
-H "Content-Type: text/plain" \
-T "$file" \ -T "$file" \
"$GITEA_API/$file" "$GITEA_API/$file?branch=main"
done done
curl -X PUT \
-H "Authorization: token $TOKEN" \
-H "Content-Type: application/gzip" \
-T "deploy.tar.gz" \
"$GITEA_API/deploy.tar.gz?branch=main"

2
.gitignore vendored
View File

@ -24,5 +24,5 @@ dist-ssr
*.sln *.sln
*.sw? *.sw?
.nuxt
frontend.env frontend.env

3
.nuxt/nuxt.d.ts vendored
View File

@ -4,6 +4,7 @@
/// <reference types="@pinia/nuxt" /> /// <reference types="@pinia/nuxt" />
/// <reference types="@nuxtjs/tailwindcss" /> /// <reference types="@nuxtjs/tailwindcss" />
/// <reference types="@pinia/nuxt" /> /// <reference types="@pinia/nuxt" />
/// <reference types="@pinia/nuxt" />
/// <reference types="@nuxt/devtools" /> /// <reference types="@nuxt/devtools" />
/// <reference types="@nuxt/telemetry" /> /// <reference types="@nuxt/telemetry" />
/// <reference path="types/builder-env.d.ts" /> /// <reference path="types/builder-env.d.ts" />
@ -25,4 +26,4 @@
/// <reference path="types/nitro.d.ts" /> /// <reference path="types/nitro.d.ts" />
/// <reference path="./eslint-typegen.d.ts" /> /// <reference path="./eslint-typegen.d.ts" />
export {} export {};

View File

@ -1,14 +1,30 @@
// generated by the @nuxtjs/tailwindcss <https://github.com/nuxt-modules/tailwindcss> module at 6/18/2025, 10:02:46 AM // generated by the @nuxtjs/tailwindcss <https://github.com/nuxt-modules/tailwindcss> module at 6/19/2025, 4:53:06 PM
import "@nuxtjs/tailwindcss/config-ctx" import "@nuxtjs/tailwindcss/config-ctx";
import configMerger from "@nuxtjs/tailwindcss/merger"; import configMerger from "@nuxtjs/tailwindcss/merger";
import cfg2 from "./../../tailwind.config.ts"; import cfg2 from "./../../tailwind.config.ts";
const config = [ const config = [
{"content":{"files":["/Users/dkoziavin/code/sub-projects/e-book/components/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/dkoziavin/code/sub-projects/e-book/components/global/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/dkoziavin/code/sub-projects/e-book/components/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/dkoziavin/code/sub-projects/e-book/layouts/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/dkoziavin/code/sub-projects/e-book/plugins/**/*.{js,ts,mjs}","/Users/dkoziavin/code/sub-projects/e-book/composables/**/*.{js,ts,mjs}","/Users/dkoziavin/code/sub-projects/e-book/utils/**/*.{js,ts,mjs}","/Users/dkoziavin/code/sub-projects/e-book/pages/**/*.{vue,js,jsx,mjs,ts,tsx}","/Users/dkoziavin/code/sub-projects/e-book/{A,a}pp.{vue,js,jsx,mjs,ts,tsx}","/Users/dkoziavin/code/sub-projects/e-book/{E,e}rror.{vue,js,jsx,mjs,ts,tsx}","/Users/dkoziavin/code/sub-projects/e-book/app.config.{js,ts,mjs}"]}}, {
{}, content: {
cfg2 files: [
"/home/levis/miduway/www/ebook.miduway.space/components/**/*.{vue,js,jsx,mjs,ts,tsx}",
"/home/levis/miduway/www/ebook.miduway.space/components/global/**/*.{vue,js,jsx,mjs,ts,tsx}",
"/home/levis/miduway/www/ebook.miduway.space/components/**/*.{vue,js,jsx,mjs,ts,tsx}",
"/home/levis/miduway/www/ebook.miduway.space/layouts/**/*.{vue,js,jsx,mjs,ts,tsx}",
"/home/levis/miduway/www/ebook.miduway.space/plugins/**/*.{js,ts,mjs}",
"/home/levis/miduway/www/ebook.miduway.space/composables/**/*.{js,ts,mjs}",
"/home/levis/miduway/www/ebook.miduway.space/utils/**/*.{js,ts,mjs}",
"/home/levis/miduway/www/ebook.miduway.space/pages/**/*.{vue,js,jsx,mjs,ts,tsx}",
"/home/levis/miduway/www/ebook.miduway.space/{A,a}pp.{vue,js,jsx,mjs,ts,tsx}",
"/home/levis/miduway/www/ebook.miduway.space/{E,e}rror.{vue,js,jsx,mjs,ts,tsx}",
"/home/levis/miduway/www/ebook.miduway.space/app.config.{js,ts,mjs}",
],
},
},
{},
cfg2,
].reduce((acc, curr) => configMerger(acc, curr), {}); ].reduce((acc, curr) => configMerger(acc, curr), {});
const resolvedConfig = config; const resolvedConfig = config;
export default resolvedConfig; export default resolvedConfig;

View File

@ -1,135 +1,57 @@
{ {
"compilerOptions": { "compilerOptions": {
"paths": { "paths": {
"nitropack/types": [ "nitropack/types": ["../node_modules/nitropack/types"],
"../node_modules/nitropack/types" "nitropack/runtime": ["../node_modules/nitropack/runtime"],
], "nitropack": ["../node_modules/nitropack"],
"nitropack/runtime": [ "defu": ["../node_modules/defu"],
"../node_modules/nitropack/runtime" "h3": ["../node_modules/h3"],
], "consola": ["../node_modules/consola"],
"nitropack": [ "ofetch": ["../node_modules/ofetch"],
"../node_modules/nitropack" "@unhead/vue": ["../node_modules/@unhead/vue"],
], "@nuxt/devtools": ["../node_modules/@nuxt/devtools"],
"defu": [ "@vue/runtime-core": ["../node_modules/@vue/runtime-core"],
"../node_modules/defu" "@vue/compiler-sfc": ["../node_modules/@vue/compiler-sfc"],
], "vue-router": ["../node_modules/vue-router"],
"h3": [
"../node_modules/h3"
],
"consola": [
"../node_modules/consola"
],
"ofetch": [
"../node_modules/ofetch"
],
"@unhead/vue": [
"../node_modules/@unhead/vue"
],
"@nuxt/devtools": [
"../node_modules/@nuxt/devtools"
],
"@vue/runtime-core": [
"../node_modules/@vue/runtime-core"
],
"@vue/compiler-sfc": [
"../node_modules/@vue/compiler-sfc"
],
"vue-router": [
"../node_modules/vue-router"
],
"vue-router/auto-routes": [ "vue-router/auto-routes": [
"../node_modules/vue-router/vue-router-auto-routes" "../node_modules/vue-router/vue-router-auto-routes"
], ],
"unplugin-vue-router/client": [ "unplugin-vue-router/client": [
"../node_modules/unplugin-vue-router/client" "../node_modules/unplugin-vue-router/client"
], ],
"@nuxt/schema": [ "@nuxt/schema": ["../node_modules/@nuxt/schema"],
"../node_modules/@nuxt/schema" "nuxt": ["../node_modules/nuxt"],
], "vite/client": ["../node_modules/vite/client"],
"nuxt": [ "~": [".."],
"../node_modules/nuxt" "~/*": ["../*"],
], "@": [".."],
"vite/client": [ "@/*": ["../*"],
"../node_modules/vite/client" "~~": [".."],
], "~~/*": ["../*"],
"~": [ "@@": [".."],
".." "@@/*": ["../*"],
], "#shared": ["../shared"],
"~/*": [ "assets": ["../assets"],
"../*" "assets/*": ["../assets/*"],
], "public": ["../public"],
"@": [ "public/*": ["../public/*"],
".." "#app": ["../node_modules/nuxt/dist/app"],
], "#app/*": ["../node_modules/nuxt/dist/app/*"],
"@/*": [ "vue-demi": ["../node_modules/nuxt/dist/app/compat/vue-demi"],
"../*" "#image": ["../node_modules/@nuxt/image/dist/runtime"],
], "#image/*": ["../node_modules/@nuxt/image/dist/runtime/*"],
"~~": [ "pinia": ["../node_modules/pinia/dist/pinia"],
".." "#vue-router": ["../node_modules/vue-router"],
],
"~~/*": [
"../*"
],
"@@": [
".."
],
"@@/*": [
"../*"
],
"#shared": [
"../shared"
],
"assets": [
"../assets"
],
"assets/*": [
"../assets/*"
],
"public": [
"../public"
],
"public/*": [
"../public/*"
],
"#app": [
"../node_modules/nuxt/dist/app"
],
"#app/*": [
"../node_modules/nuxt/dist/app/*"
],
"vue-demi": [
"../node_modules/nuxt/dist/app/compat/vue-demi"
],
"#image": [
"../node_modules/@nuxt/image/dist/runtime"
],
"#image/*": [
"../node_modules/@nuxt/image/dist/runtime/*"
],
"pinia": [
"../node_modules/pinia/dist/pinia"
],
"#vue-router": [
"../node_modules/vue-router"
],
"#unhead/composables": [ "#unhead/composables": [
"../node_modules/nuxt/dist/head/runtime/composables/v3" "../node_modules/nuxt/dist/head/runtime/composables/v3"
], ],
"#imports": [ "#imports": ["./imports"],
"./imports"
],
"#app-manifest": [ "#app-manifest": [
"./manifest/meta/33f39b41-9013-461e-9707-dde64ef0b3e6" "./manifest/meta/f4dfbb73-66a7-4162-b534-4c8db9f3aa74.json"
], ],
"#components": [ "#components": ["./components"],
"./components" "#build": ["."],
], "#build/*": ["./*"]
"#build": [
"."
],
"#build/*": [
"./*"
]
}, },
"esModuleInterop": true, "esModuleInterop": true,
"skipLibCheck": true, "skipLibCheck": true,
@ -145,12 +67,7 @@
"noImplicitOverride": true, "noImplicitOverride": true,
"module": "preserve", "module": "preserve",
"noEmit": true, "noEmit": true,
"lib": [ "lib": ["ESNext", "dom", "dom.iterable", "webworker"],
"ESNext",
"dom",
"dom.iterable",
"webworker"
],
"jsx": "preserve", "jsx": "preserve",
"jsxImportSource": "vue", "jsxImportSource": "vue",
"types": [], "types": [],
@ -206,4 +123,4 @@
"../node_modules/@nuxt/telemetry/runtime/server", "../node_modules/@nuxt/telemetry/runtime/server",
"../node_modules/@nuxt/telemetry/dist/runtime/server" "../node_modules/@nuxt/telemetry/dist/runtime/server"
] ]
} }

View File

@ -137,5 +137,5 @@ export { useEvent } from 'nitropack/runtime/internal/context';
export { defineTask, runTask } from 'nitropack/runtime/internal/task'; export { defineTask, runTask } from 'nitropack/runtime/internal/task';
export { defineNitroErrorHandler } from 'nitropack/runtime/internal/error/utils'; export { defineNitroErrorHandler } from 'nitropack/runtime/internal/error/utils';
export { appendCorsHeaders, appendCorsPreflightHeaders, appendHeader, appendHeaders, appendResponseHeader, appendResponseHeaders, assertMethod, callNodeListener, clearResponseHeaders, clearSession, createApp, createAppEventHandler, createError, createEvent, createEventStream, createRouter, defaultContentType, defineEventHandler, defineLazyEventHandler, defineNodeListener, defineNodeMiddleware, defineRequestMiddleware, defineResponseMiddleware, defineWebSocket, defineWebSocketHandler, deleteCookie, dynamicEventHandler, eventHandler, fetchWithEvent, fromNodeMiddleware, fromPlainHandler, fromWebHandler, getCookie, getHeader, getHeaders, getMethod, getProxyRequestHeaders, getQuery, getRequestFingerprint, getRequestHeader, getRequestHeaders, getRequestHost, getRequestIP, getRequestPath, getRequestProtocol, getRequestURL, getRequestWebStream, getResponseHeader, getResponseHeaders, getResponseStatus, getResponseStatusText, getRouterParam, getRouterParams, getSession, getValidatedQuery, getValidatedRouterParams, handleCacheHeaders, handleCors, isCorsOriginAllowed, isError, isEvent, isEventHandler, isMethod, isPreflightRequest, isStream, isWebResponse, lazyEventHandler, parseCookies, promisifyNodeListener, proxyRequest, readBody, readFormData, readMultipartFormData, readRawBody, readValidatedBody, removeResponseHeader, sanitizeStatusCode, sanitizeStatusMessage, sealSession, send, sendError, sendIterable, sendNoContent, sendProxy, sendRedirect, sendStream, sendWebResponse, serveStatic, setCookie, setHeader, setHeaders, setResponseHeader, setResponseHeaders, setResponseStatus, splitCookiesString, toEventHandler, toNodeListener, toPlainHandler, toWebHandler, toWebRequest, unsealSession, updateSession, useBase, useSession, writeEarlyHints } from 'h3'; export { appendCorsHeaders, appendCorsPreflightHeaders, appendHeader, appendHeaders, appendResponseHeader, appendResponseHeaders, assertMethod, callNodeListener, clearResponseHeaders, clearSession, createApp, createAppEventHandler, createError, createEvent, createEventStream, createRouter, defaultContentType, defineEventHandler, defineLazyEventHandler, defineNodeListener, defineNodeMiddleware, defineRequestMiddleware, defineResponseMiddleware, defineWebSocket, defineWebSocketHandler, deleteCookie, dynamicEventHandler, eventHandler, fetchWithEvent, fromNodeMiddleware, fromPlainHandler, fromWebHandler, getCookie, getHeader, getHeaders, getMethod, getProxyRequestHeaders, getQuery, getRequestFingerprint, getRequestHeader, getRequestHeaders, getRequestHost, getRequestIP, getRequestPath, getRequestProtocol, getRequestURL, getRequestWebStream, getResponseHeader, getResponseHeaders, getResponseStatus, getResponseStatusText, getRouterParam, getRouterParams, getSession, getValidatedQuery, getValidatedRouterParams, handleCacheHeaders, handleCors, isCorsOriginAllowed, isError, isEvent, isEventHandler, isMethod, isPreflightRequest, isStream, isWebResponse, lazyEventHandler, parseCookies, promisifyNodeListener, proxyRequest, readBody, readFormData, readMultipartFormData, readRawBody, readValidatedBody, removeResponseHeader, sanitizeStatusCode, sanitizeStatusMessage, sealSession, send, sendError, sendIterable, sendNoContent, sendProxy, sendRedirect, sendStream, sendWebResponse, serveStatic, setCookie, setHeader, setHeaders, setResponseHeader, setResponseHeaders, setResponseStatus, splitCookiesString, toEventHandler, toNodeListener, toPlainHandler, toWebHandler, toWebRequest, unsealSession, updateSession, useBase, useSession, writeEarlyHints } from 'h3';
export { buildAssetsURL as __buildAssetsURL, publicAssetsURL as __publicAssetsURL } from '/Users/dkoziavin/code/sub-projects/e-book/node_modules/nuxt/dist/core/runtime/nitro/utils/paths'; export { buildAssetsURL as __buildAssetsURL, publicAssetsURL as __publicAssetsURL } from '/home/levis/miduway/www/ebook.miduway.space/node_modules/nuxt/dist/core/runtime/nitro/utils/paths';
export { defineAppConfig } from '/Users/dkoziavin/code/sub-projects/e-book/node_modules/nuxt/dist/core/runtime/nitro/utils/config'; export { defineAppConfig } from '/home/levis/miduway/www/ebook.miduway.space/node_modules/nuxt/dist/core/runtime/nitro/utils/config';

View File

@ -9,7 +9,6 @@ type NuxtAppInjections =
InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/revive-payload.client.js")> & InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/revive-payload.client.js")> &
InjectionType<typeof import("../../node_modules/nuxt/dist/head/runtime/plugins/unhead.js")> & InjectionType<typeof import("../../node_modules/nuxt/dist/head/runtime/plugins/unhead.js")> &
InjectionType<typeof import("../../node_modules/nuxt/dist/pages/runtime/plugins/router.js")> & InjectionType<typeof import("../../node_modules/nuxt/dist/pages/runtime/plugins/router.js")> &
InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/debug-hooks.js")> &
InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/payload.client.js")> & InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/payload.client.js")> &
InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/navigation-repaint.client.js")> & InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/navigation-repaint.client.js")> &
InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/check-outdated-build.client.js")> & InjectionType<typeof import("../../node_modules/nuxt/dist/app/plugins/check-outdated-build.client.js")> &
@ -23,7 +22,7 @@ declare module '#app' {
interface NuxtApp extends NuxtAppInjections { } interface NuxtApp extends NuxtAppInjections { }
interface NuxtAppLiterals { interface NuxtAppLiterals {
pluginName: 'nuxt:revive-payload:client' | 'nuxt:head' | 'nuxt:router' | 'nuxt:debug:hooks' | 'nuxt:payload' | 'nuxt:revive-payload:server' | 'nuxt:chunk-reload' | 'pinia' | 'nuxt:global-components' | 'nuxt:prefetch' | '@nuxt/icon' pluginName: 'nuxt:revive-payload:client' | 'nuxt:head' | 'nuxt:router' | 'nuxt:payload' | 'nuxt:revive-payload:server' | 'nuxt:chunk-reload' | 'pinia' | 'nuxt:global-components' | 'nuxt:prefetch' | '@nuxt/icon'
} }
} }

View File

@ -1,13 +1,7 @@
FROM node:20 as builder FROM node:22-alpine
WORKDIR /usr/src/app
WORKDIR /app
COPY package*.json ./ COPY package*.json ./
RUN npm install RUN npm install
COPY . . COPY . .
RUN npm run build RUN npm run build
CMD ["node", "dist/server/index.mjs"]
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
COPY ebook.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]