Add monorepo configuration and development environment
This commit is contained in:
295
.drone.yml
295
.drone.yml
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user