From ea1631756f106cd5593396f2bdd5470be568fb3c Mon Sep 17 00:00:00 2001 From: Yann Autissier Date: Thu, 5 Dec 2024 00:15:02 +0000 Subject: [PATCH 1/3] add drone integration --- .drone.yml | 51 ++++++++++++++++++++++++++++++++ docker/Dockerfile | 17 +++++++++++ docker/docker-compose.labels.yml | 8 +++++ docker/docker-compose.local.yml | 7 +++++ docker/docker-compose.yml | 12 ++++++++ 5 files changed, 95 insertions(+) create mode 100644 .drone.yml create mode 100644 docker/Dockerfile create mode 100644 docker/docker-compose.labels.yml create mode 100644 docker/docker-compose.local.yml create mode 100644 docker/docker-compose.yml diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..ef57a98 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,51 @@ +--- +kind: pipeline +type: docker +name: testing + +steps: +- name: build + image: docker:dind + environment: + COMPOSE_PROJECT_NAME: adv-testing-${DRONE_COMMIT_BRANCH//\//-} + NUXT_APP_BASE_URL: /${DRONE_COMMIT_BRANCH}/ + SERVICE_3000_CHECK_HTTP: /${DRONE_COMMIT_BRANCH}/ + SERVICE_3000_TAGS: urlprefix-testing.async.io/adv/${DRONE_COMMIT_BRANCH}/* + commands: + - docker compose -f docker/docker-compose.yml -f docker/docker-compose.labels.yml up --build -d + volumes: + - name: dockersock + path: /var/run/docker.sock + +- name: notify + image: appleboy/drone-telegram + when: + status: + - success + - failure + settings: + token: + from_secret: telegram_token + to: + from_secret: telegram_chat_id_atr + format: markdown + message: > + {{#success build.status}} + ✅ `{{commit.email}}` a mis à jour la branche `{{commit.branch}}` sur le repo `{{repo.name}}`: + ``` + {{commit.message}} + ``` + 🌐 https://testing.async.io/adv/{{commit.branch}}/ + {{else}} + ❌ Le build #{{build.number}} du repo `{{repo.name}}` est un gros fail... + 📝 Commit de {{commit.email}} sur la branche `{{commit.branch}}`: + ``` + {{commit.message}} + ``` + 🌐 {{ build.link }} + {{/success}} + +volumes: +- name: dockersock + host: + path: /var/run/docker.sock diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..313ff96 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,17 @@ +ARG NODE_VERSION=22 +FROM node:${NODE_VERSION}-alpine AS base +WORKDIR /app + +FROM base AS build +COPY package.json package-lock.json ./ +RUN npm install +COPY --link ./ ./ + +FROM build AS master +RUN npm run build + +FROM base AS prod +ENV NODE_ENV=production +# COPY --from=build /app/node_modules /app/node_modules +COPY --from=master /app/.output /app/.output +CMD [ "node", ".output/server/index.mjs" ] diff --git a/docker/docker-compose.labels.yml b/docker/docker-compose.labels.yml new file mode 100644 index 0000000..01a2509 --- /dev/null +++ b/docker/docker-compose.labels.yml @@ -0,0 +1,8 @@ +version: "3" + +services: + front: + labels: + - SERVICE_3000_CHECK_HTTP=${SERVICE_3000_CHECK_HTTP:-/} + - SERVICE_3000_NAME=${SERVICE_3000_NAME:-${COMPOSE_PROJECT_NAME:-adv}-front-3000} + - SERVICE_3000_TAGS=${SERVICE_3000_TAGS:-urlprefix-adv.localhost/} diff --git a/docker/docker-compose.local.yml b/docker/docker-compose.local.yml new file mode 100644 index 0000000..9473895 --- /dev/null +++ b/docker/docker-compose.local.yml @@ -0,0 +1,7 @@ +version: "3" + +services: + front: + ports: + - 3000:3000 + diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 0000000..6c9f3d2 --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,12 @@ +version: "3" + +services: + front: + build: + context: .. + dockerfile: docker/Dockerfile + environment: + NODE_ENV: ${NODE_ENV:-production} + NUXT_APP_BASE_URL: ${NUXT_APP_BASE_URL:-/} + ports: + - 3000 From baa995dcb8fb353f801bcd7a14002ece068d6da4 Mon Sep 17 00:00:00 2001 From: Yann Autissier Date: Thu, 5 Dec 2024 00:35:52 +0000 Subject: [PATCH 2/3] fix typo --- .drone.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.drone.yml b/.drone.yml index ef57a98..b80cfe1 100644 --- a/.drone.yml +++ b/.drone.yml @@ -8,9 +8,9 @@ steps: image: docker:dind environment: COMPOSE_PROJECT_NAME: adv-testing-${DRONE_COMMIT_BRANCH//\//-} - NUXT_APP_BASE_URL: /${DRONE_COMMIT_BRANCH}/ - SERVICE_3000_CHECK_HTTP: /${DRONE_COMMIT_BRANCH}/ - SERVICE_3000_TAGS: urlprefix-testing.async.io/adv/${DRONE_COMMIT_BRANCH}/* + NUXT_APP_BASE_URL: /adv/${DRONE_COMMIT_BRANCH}/ + SERVICE_3000_CHECK_HTTP: /adv/${DRONE_COMMIT_BRANCH}/ + SERVICE_3000_TAGS: urlprefix-testing.asycn.io/adv/${DRONE_COMMIT_BRANCH}/* commands: - docker compose -f docker/docker-compose.yml -f docker/docker-compose.labels.yml up --build -d volumes: @@ -35,7 +35,7 @@ steps: ``` {{commit.message}} ``` - 🌐 https://testing.async.io/adv/{{commit.branch}}/ + 🌐 https://testing.asycn.io/adv/{{commit.branch}}/ {{else}} ❌ Le build #{{build.number}} du repo `{{repo.name}}` est un gros fail... 📝 Commit de {{commit.email}} sur la branche `{{commit.branch}}`: From 1293724c35b89c27b1284f59dc44cb30bca7a1f5 Mon Sep 17 00:00:00 2001 From: Yann Autissier Date: Fri, 6 Dec 2024 00:46:45 +0000 Subject: [PATCH 3/3] publish website when push on main --- .dockerignore | 6 ++++++ .drone.yml | 30 ++++++++++++++++++++++++------ docker/Dockerfile | 7 +++++-- 3 files changed, 35 insertions(+), 8 deletions(-) create mode 100644 .dockerignore diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..ae7ece6 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +/.drone.yml +/.nuxt +/.output +/docker +/node_modules +/.git* diff --git a/.drone.yml b/.drone.yml index b80cfe1..e7dc00e 100644 --- a/.drone.yml +++ b/.drone.yml @@ -7,22 +7,40 @@ steps: - name: build image: docker:dind environment: - COMPOSE_PROJECT_NAME: adv-testing-${DRONE_COMMIT_BRANCH//\//-} - NUXT_APP_BASE_URL: /adv/${DRONE_COMMIT_BRANCH}/ - SERVICE_3000_CHECK_HTTP: /adv/${DRONE_COMMIT_BRANCH}/ - SERVICE_3000_TAGS: urlprefix-testing.asycn.io/adv/${DRONE_COMMIT_BRANCH}/* + COMPOSE_PROJECT_NAME: dav-testing-${DRONE_COMMIT_BRANCH//\//-} + NUXT_APP_BASE_URL: /${DRONE_REPO_OWNER}/${DRONE_REPO_NAME}/${DRONE_COMMIT_BRANCH}/ + SERVICE_3000_CHECK_HTTP: /${DRONE_REPO_OWNER}/${DRONE_REPO_NAME}/${DRONE_COMMIT_BRANCH}/ + SERVICE_3000_TAGS: urlprefix-testing.asycn.io/${DRONE_REPO_OWNER}/${DRONE_REPO_NAME}/${DRONE_COMMIT_BRANCH}/* commands: + - docker build --target static --output /drone/src/.output/public -f docker/Dockerfile . - docker compose -f docker/docker-compose.yml -f docker/docker-compose.labels.yml up --build -d volumes: - name: dockersock path: /var/run/docker.sock +- name: publish + image: appleboy/drone-scp + settings: + username: + from_secret: ssh_username + password: + from_secret: ssh_password + host: open.us.org + port: 22 + source: /drone/src/.output/public/ + target: /dav/www/ + debug: true + when: + branch: + - main + event: + - push + - name: notify image: appleboy/drone-telegram when: status: - success - - failure settings: token: from_secret: telegram_token @@ -35,7 +53,7 @@ steps: ``` {{commit.message}} ``` - 🌐 https://testing.asycn.io/adv/{{commit.branch}}/ + 🌐 https://testing.asycn.io/${DRONE_REPO_OWNER}/${DRONE_REPO_NAME}/{{commit.branch}}/ {{else}} ❌ Le build #{{build.number}} du repo `{{repo.name}}` est un gros fail... 📝 Commit de {{commit.email}} sur la branche `{{commit.branch}}`: diff --git a/docker/Dockerfile b/docker/Dockerfile index 313ff96..5db03c8 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -6,12 +6,15 @@ FROM base AS build COPY package.json package-lock.json ./ RUN npm install COPY --link ./ ./ +RUN npm run build FROM build AS master -RUN npm run build +RUN npm run generate + +FROM scratch AS static +COPY --from=master /app/.output/public . FROM base AS prod ENV NODE_ENV=production -# COPY --from=build /app/node_modules /app/node_modules COPY --from=master /app/.output /app/.output CMD [ "node", ".output/server/index.mjs" ]