diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..d9f0b15 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,30 @@ +stages: + - build + - deploy + +build-dev: + stage: build + when: on_success + only: + - main + image: + name: docker:25.0.3-cli + services: + - name: docker:25.0.3-dind + command: ["--insecure-registry=38.47.185.86:8900"] + script: + - docker logout + - docker login -u $DEPLOY_USERNAME -p $DEPLOY_TOKEN 38.47.185.86:8900 + - docker build -t 38.47.185.86:8900/medols/web-qudo:dev . + - docker push 38.47.185.86:8900/medols/web-qudo:dev + +auto-deploy: + stage: deploy + when: on_success + only: + - main + image: curlimages/curl:latest + services: + - docker:dind + script: + - curl --user admin:$JENKINS_PWD http://38.47.185.86:8080/job/auto-deploy-qudo/build?token=autodeploymedols diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..2b874db --- /dev/null +++ b/Dockerfile @@ -0,0 +1,36 @@ +# Menggunakan image Node.js yang lebih ringan +FROM node:23.5.0-alpine + +# Mengatur port +ENV PORT 3000 + +# Install pnpm secara global +RUN npm install -g pnpm + +# Membuat direktori aplikasi dan mengatur sebagai working directory +WORKDIR /usr/src/app + +# Menyalin file penting terlebih dahulu untuk caching +COPY package.json ./ + +# Menyalin direktori ckeditor5 jika diperlukan +COPY vendor/ckeditor5 ./vendor/ckeditor5 + +# Menyalin env +COPY .env .env + +# Install dependencies +RUN pnpm install +# RUN pnpm install --frozen-lockfile + +# Menyalin source code aplikasi +COPY . . + +# Build aplikasi +RUN NODE_OPTIONS="--max-old-space-size=4096" pnpm next build + +# Expose port untuk server +EXPOSE 3000 + +# Perintah untuk menjalankan aplikasi +CMD ["pnpm", "run", "start"] \ No newline at end of file diff --git a/app/news-services/page.tsx b/app/news-services/page.tsx index a33fd49..758747d 100644 --- a/app/news-services/page.tsx +++ b/app/news-services/page.tsx @@ -5,12 +5,15 @@ import ContentLatest from "@/components/landing-page/content-latest"; import ContentPopular from "@/components/landing-page/content-popular"; import ContentCategory from "@/components/landing-page/category-content"; import FloatingMenuNews from "@/components/landing-page/floating-news"; +import { Suspense } from "react"; export default function NewsAndServicesPage() { return (