From ad62f72a56631aca8ed3b617c5bb2ad85da12c18 Mon Sep 17 00:00:00 2001 From: decentral1se Date: Tue, 24 Jan 2023 12:39:33 +0100 Subject: [PATCH 1/6] feat: ci/cd deploy --- .drone.yml | 33 +++++++++++++++++++++++++ Dockerfile | 23 +++++++++++++++++ compose.yml | 61 ++++++++++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 35 -------------------------- entrypoint.sh.tmpl | 29 ++++++++++++++++++++++ 5 files changed, 146 insertions(+), 35 deletions(-) create mode 100644 .drone.yml create mode 100644 Dockerfile create mode 100644 compose.yml delete mode 100644 docker-compose.yml create mode 100644 entrypoint.sh.tmpl diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..c16c305 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,33 @@ +--- +kind: pipeline +name: continuous deployment +steps: + - name: build and push new image + image: plugins/docker + settings: + username: + from_secret: docker_reg_username + password: + from_secret: docker_reg_passwd + repo: decentral1se/kios-admin + tags: latest + + - name: deploy image + image: decentral1se/stack-ssh-deploy:latest + environment: + STACK_NAME: kios_admin_lumbung_space + SECRET_PAYLOAD_SECRET_VERSION: v1 + settings: + stack: kios_admin_lumbung_space + host: lumbung.space + deploy_key: + from_secret: drone_ssh_lumbung.space + depends_on: + - build and push new image + +trigger: + branch: + - main + event: + exclude: + - pull_request diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..da92de7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,23 @@ +FROM node:18-alpine as base + +FROM base as builder + +WORKDIR /home/node +COPY package*.json ./ + +COPY . . +RUN yarn install +RUN yarn build + +FROM base as runtime + +ENV NODE_ENV=production + +WORKDIR /home/node +COPY package*.json ./ + +RUN yarn install --production +COPY --from=builder /home/node/dist ./dist +COPY --from=builder /home/node/build ./build + +EXPOSE 3000 diff --git a/compose.yml b/compose.yml new file mode 100644 index 0000000..3c265f0 --- /dev/null +++ b/compose.yml @@ -0,0 +1,61 @@ +--- +version: "3.8" + +services: + app: + image: decentral1se/kios-admin:latest + networks: + - proxy + volumes: + - app:/home/node/app + - node_modules:/home/node/app/node_modules + environment: + MONGODB_URI: mongodb://db:27017/payload + PORT: 3000 + NODE_ENV: production + PAYLOAD_SECRET_FILE: /run/secrets/payload_secret + configs: + - source: app_entrypoint + target: /docker-entrypoint.sh + mode: 0555 + secrets: + - payload_secret + deploy: + update_config: + failure_action: rollback + order: start-first + labels: + - "traefik.enable=true" + - "traefik.http.routers.coop-cloud-site.rule=Host(`kios-admin.lumbung.space`, `www.kios-admin.lumbung.space`)" + - "traefik.http.routers.coop-cloud-site.entrypoints=web-secure" + - "traefik.http.services.coop-cloud-site.loadbalancer.server.port=3000" + - "traefik.http.routers.coop-cloud-site.tls.certresolver=production" + + db: + image: mongo:6.0.3 + command: + - "--storageEngine=wiredTiger" + volumes: + - data:/data/db + logging: + driver: none + +volumes: + app: + node_modules: + data: + +networks: + proxy: + external: true + +secrets: + payload_secret: + external: true + name: ${STACK_NAME}_payload_secret_${SECRET_PAYLOAD_SECRET_VERSION} + +configs: + app_entrypoint: + name: ${STACK_NAME}_app_entrypoint_${APP_ENTRYPOINT_VERSION} + file: entrypoint.sh.tmpl + template_driver: golang diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 1a2d20e..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,35 +0,0 @@ -version: '3' - -services: - - payload: - image: node:18-alpine - ports: - - "3000:3000" - volumes: - - .:/home/node/app - - node_modules:/home/node/app/node_modules - working_dir: /home/node/app/ - command: sh -c "yarn install && yarn dev" - depends_on: - - mongo - environment: - MONGODB_URI: mongodb://mongo:27017/payload - PORT: 3000 - NODE_ENV: development - PAYLOAD_SECRET: TESTING - - mongo: - image: mongo:latest - ports: - - "27017:27017" - command: - - --storageEngine=wiredTiger - volumes: - - data:/data/db - logging: - driver: none - -volumes: - data: - node_modules: diff --git a/entrypoint.sh.tmpl b/entrypoint.sh.tmpl new file mode 100644 index 0000000..d45469a --- /dev/null +++ b/entrypoint.sh.tmpl @@ -0,0 +1,29 @@ +#!/bin/bash + +set -e + +file_env() { + local var="$1" + local fileVar="${var}_FILE" + local def="${2:-}" + + if [ "${!var:-}" ] && [ "${!fileVar:-}" ]; then + echo >&2 "error: both $var and $fileVar are set (but are exclusive)" + exit 1 + fi + + local val="$def" + + if [ "${!var:-}" ]; then + val="${!var}" + elif [ "${!fileVar:-}" ]; then + val="$(< "${!fileVar}")" + fi + + export "$var"="$val" + unset "$fileVar" +} + +file_env "PAYLOAD_SECRET" + +node dist/server.js From 920def3123cd72e58d2de8d4f1084857ac0e66f4 Mon Sep 17 00:00:00 2001 From: decentral1se Date: Tue, 24 Jan 2023 12:42:59 +0100 Subject: [PATCH 2/6] docs: build badge [ci skip] --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index c0daeed..015be48 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # lumbung-kiosk-cms +[![Build Status](https://drone.autonomic.zone/api/badges/ruangrupa/lumbung-kios-cms/status.svg?ref=refs/heads/main)](https://drone.autonomic.zone/ruangrupa/lumbung-kios-cms) + This project was created using create-payload-app using the ts-blank template. ## How to Use From 637089aa42d59f26e3acbce74eed547abb1bae64 Mon Sep 17 00:00:00 2001 From: decentral1se Date: Tue, 24 Jan 2023 12:50:41 +0100 Subject: [PATCH 3/6] fix: missing env var for deploy --- .drone.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.drone.yml b/.drone.yml index c16c305..42748d3 100644 --- a/.drone.yml +++ b/.drone.yml @@ -17,6 +17,7 @@ steps: environment: STACK_NAME: kios_admin_lumbung_space SECRET_PAYLOAD_SECRET_VERSION: v1 + APP_ENTRYPOINT_VERSION: v1 settings: stack: kios_admin_lumbung_space host: lumbung.space From a016159bab57b8e410efeb3782b9799bb7838a79 Mon Sep 17 00:00:00 2001 From: Aadil Ayub Date: Tue, 24 Jan 2023 17:18:39 +0500 Subject: [PATCH 4/6] hacking until works --- compose.yml | 9 +++++++-- entrypoint.sh.tmpl | 28 ++-------------------------- 2 files changed, 9 insertions(+), 28 deletions(-) diff --git a/compose.yml b/compose.yml index 3c265f0..e2332c3 100644 --- a/compose.yml +++ b/compose.yml @@ -6,6 +6,7 @@ services: image: decentral1se/kios-admin:latest networks: - proxy + - internal volumes: - app:/home/node/app - node_modules:/home/node/app/node_modules @@ -14,10 +15,13 @@ services: PORT: 3000 NODE_ENV: production PAYLOAD_SECRET_FILE: /run/secrets/payload_secret + PAYLOAD_CONFIG_PATH: /home/node/dist/payload.config.js configs: - source: app_entrypoint target: /docker-entrypoint.sh mode: 0555 + entrypoint: /docker-entrypoint.sh + command: node dist/server.js secrets: - payload_secret deploy: @@ -33,12 +37,12 @@ services: db: image: mongo:6.0.3 + networks: + - internal command: - "--storageEngine=wiredTiger" volumes: - data:/data/db - logging: - driver: none volumes: app: @@ -46,6 +50,7 @@ volumes: data: networks: + internal: proxy: external: true diff --git a/entrypoint.sh.tmpl b/entrypoint.sh.tmpl index d45469a..cb4aadd 100644 --- a/entrypoint.sh.tmpl +++ b/entrypoint.sh.tmpl @@ -1,29 +1,5 @@ -#!/bin/bash +#!/bin/sh -set -e - -file_env() { - local var="$1" - local fileVar="${var}_FILE" - local def="${2:-}" - - if [ "${!var:-}" ] && [ "${!fileVar:-}" ]; then - echo >&2 "error: both $var and $fileVar are set (but are exclusive)" - exit 1 - fi - - local val="$def" - - if [ "${!var:-}" ]; then - val="${!var}" - elif [ "${!fileVar:-}" ]; then - val="$(< "${!fileVar}")" - fi - - export "$var"="$val" - unset "$fileVar" -} - -file_env "PAYLOAD_SECRET" +export PAYLOAD_SECRET=$(cat /run/secrets/payload_secret) node dist/server.js From f354eda75ae14d6fe231e2db3a1ab796a8e8f1cf Mon Sep 17 00:00:00 2001 From: Aadil Ayub Date: Tue, 24 Jan 2023 17:20:25 +0500 Subject: [PATCH 5/6] unfuck router --- compose.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/compose.yml b/compose.yml index e2332c3..217a765 100644 --- a/compose.yml +++ b/compose.yml @@ -30,10 +30,10 @@ services: order: start-first labels: - "traefik.enable=true" - - "traefik.http.routers.coop-cloud-site.rule=Host(`kios-admin.lumbung.space`, `www.kios-admin.lumbung.space`)" - - "traefik.http.routers.coop-cloud-site.entrypoints=web-secure" - - "traefik.http.services.coop-cloud-site.loadbalancer.server.port=3000" - - "traefik.http.routers.coop-cloud-site.tls.certresolver=production" + - "traefik.http.routers.kios-admin.rule=Host(`kios-admin.lumbung.space`, `www.kios-admin.lumbung.space`)" + - "traefik.http.routers.kios-admin.entrypoints=web-secure" + - "traefik.http.services.kios-admin.loadbalancer.server.port=3000" + - "traefik.http.routers.kios-admin.tls.certresolver=production" db: image: mongo:6.0.3 From 057c3393a428dd349f71d5e790895f6c05eeff32 Mon Sep 17 00:00:00 2001 From: decentral1se Date: Tue, 24 Jan 2023 13:24:55 +0100 Subject: [PATCH 6/6] docs: auto-deploy [ci skip] --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 015be48..3f87347 100644 --- a/README.md +++ b/README.md @@ -8,4 +8,6 @@ This project was created using create-payload-app using the ts-blank template. `yarn dev` will start up your application and reload on any changes. -If you have docker and docker-compose installed, you can run `docker-compose up` +## Deploy + +Push commits, it will auto-deploy to [kios-admin.lumbung.space](https://kios-admin.lumbung.space).