Add monorepo configuration and development environment

This commit is contained in:
2025-07-25 19:14:05 -03:00
parent cedf771f16
commit 9eb293ccb1
8 changed files with 523 additions and 173 deletions

View File

@@ -1,181 +1,132 @@
kind: pipeline
type: docker
name: Publish Pipeline
workspace:
path: /drone/looking-api
name: looking-fullstack
steps:
- name: Publish Image
image: plugins/docker
settings:
auto_tag: true
repo: git.mifi.dev/mifi/pfosi-looking-api
registry: git.mifi.dev
build_args:
- MONGO_ENTRY_FILE=latest
- MONGO_VERSION=latest
- NPM_TOKEN:
from_secret: reg_token
ssh-agent-key:
from_secret: reg_token
username: <token>
password:
from_secret: reg_token
secrets: [reg_token]
- name: Report Image Publish Status
image: plugins/webhook
settings:
urls: https://lab.mifi.dev/hooks/ccw34hdf7tgbjmzp96nptn938r
content_type: application/json
template: |
{
"icon_url":"https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/120/apple/198/freezing-face_1f976.png",
"text": "[{{ repo.name }} - New docker image release {{tag}} from # {{ build.number }}] Deploy {{ build.status }} {{#success build.status}}:tada:{{else}}:poop:{{/success}}",
"username":"DroneBot"
}
when:
status:
- success
- failure
# Install dependencies for both apps
- name: install-root
image: node:18-alpine
commands:
- npm ci
volumes:
- name: dockerconfig
host:
path: /volume1/docker/dockerconfig.json
- name: dockersock
host:
path: /var/run/docker.sock
- name: install-frontend
image: node:18-alpine
commands:
- cd app && npm ci
depends_on:
- install-root
- name: install-backend
image: node:18-alpine
commands:
- cd backend && npm ci
depends_on:
- install-root
# Linting
- name: lint-frontend
image: node:18-alpine
commands:
- cd app && npm run lint
depends_on:
- install-frontend
- name: lint-backend
image: node:18-alpine
commands:
- cd backend && npm run lint
depends_on:
- install-backend
# Testing
- name: test-frontend
image: node:18-alpine
commands:
- cd app && npm run test:ci
depends_on:
- install-frontend
- name: test-backend
image: node:18-alpine
commands:
- cd backend && npm test
depends_on:
- install-backend
# Build
- name: build-frontend
image: node:18-alpine
commands:
- cd app && npm run build
depends_on:
- lint-frontend
- test-frontend
# Docker builds
- name: docker-build-frontend
image: plugins/docker
settings:
registry: git.mifi.dev:12023
repo: git.mifi.dev:12023/mifi/pfosi-looking-frontend
username:
from_secret: docker_username
password:
from_secret: docker_password
tags:
- latest
- ${DRONE_COMMIT_SHA:0:8}
dockerfile: app/Dockerfile
context: app
depends_on:
- build-frontend
when:
branch:
- master
- main
- name: docker-build-backend
image: plugins/docker
settings:
registry: git.mifi.dev:12023
repo: git.mifi.dev:12023/mifi/pfosi-looking-backend
username:
from_secret: docker_username
password:
from_secret: docker_password
tags:
- latest
- ${DRONE_COMMIT_SHA:0:8}
dockerfile: backend/Dockerfile
context: backend
depends_on:
- lint-backend
- test-backend
when:
branch:
- master
- main
# Deploy both services
- name: deploy-stack
image: curlimages/curl
commands:
- curl -X POST $PORTAINER_WEBHOOK_URL
environment:
PORTAINER_WEBHOOK_URL:
from_secret: portainer_webhook_fullstack
depends_on:
- docker-build-frontend
- docker-build-backend
when:
branch:
- master
- main
trigger:
branch:
- master
- develop
- master
- main
- develop
event:
- push
---
kind: pipeline
type: docker
name: Staging Deploy Pipeline
workspace:
path: /drone/looking-api
steps:
- name: Deploy Container
image: docker
privileged: true
environment:
CONTAINER_PREFIX: staging
HOST: bikini.mifi.dev
ROUTE_PREFIX: /looking/api
PORT: 9001
commands:
- docker compose -f docker-compose.yml build --pull --no-cache
- docker compose -f docker-compose.yml up --remove-orphans --force-recreate --wait
volumes:
- name: env-secrets
path: /drone/looking-api/staging.env
- name: dockersock
path: /var/run/docker.sock
- name: dockerconfig
path: /drone/looking-api/.docker/config.json
- name: Send Status Notifications
image: plugins/webhook
privileged: true
settings:
urls: https://lab.mifi.dev/hooks/ccw34hdf7tgbjmzp96nptn938r
content_type: application/json
template: |
{
"icon_url":"https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/120/apple/198/freezing-face_1f976.png",
"text": "[{{ repo.name }} - Build # {{ build.number }}] Staging Deploy {{ build.status }} {{#success build.status}}:tada:{{else}}:poop:{{/success}}",
"username":"DroneBot"
}
when:
status:
- success
- failure
volumes:
- name: dockerconfig
host:
path: /volume1/docker/dockerconfig.json
- name: dockersock
host:
path: /var/run/docker.sock
- name: env-secrets
host:
path: /volume1/docker/beethoven/looking-api/staging.env
# depends_on:
# - Test Pipeline
trigger:
branch:
- develop
- master
event:
- push
# ---
# kind: pipeline
# type: docker
# name: Production Deploy Pipeline
# workspace:
# path: /drone/looking
# clone:
# disable: true
# steps:
# - name: Deploy Container
# image: plugins/webhook
# settings:
# # urls: https://portainer.mifi.dev/api/stacks/webhooks/968d2244-2548-4f0b-8c18-bbc9bc35305d
# - name: Send Status Notifications
# image: plugins/webhook
# privileged: true
# settings:
# urls: https://lab.mifi.dev/hooks/ccw34hdf7tgbjmzp96nptn938r
# content_type: application/json
# template: |
# {
# "icon_url":"https://emojipedia-us.s3.dualstack.us-west-1.amazonaws.com/thumbs/120/apple/198/freezing-face_1f976.png",
# "text": "[{{ repo.name }} - Build # {{ build.number }}] Production Deploy {{ build.status }} {{#success build.status}}:tada:{{else}}:poop:{{/success}}",
# "username":"DroneBot"
# }
# when:
# status:
# - success
# - failure
# depends_on:
# - Publish Pipeline
# trigger:
# event:
# - promote
# target:
# - production
# kind: pipeline
# type: docker
# name: Deploy to miCloud
# steps:
# - name: deploy-dev
# image: node:latest
# commands:
# - npm install -g forever
# - npm install
# - forever start bin/www
# trigger:
# branch:
# - master
# event:
# - push
- push
- pull_request