ci(deployment): Build and deployment CI pipeline
continuous-integration/drone/push Build is passing Details

main
flavien 2023-01-28 09:47:18 +01:00
parent 0f92e3d87b
commit cc2c4843be
3 changed files with 82 additions and 2 deletions

44
.drone.yml Normal file
View File

@ -0,0 +1,44 @@
kind: pipeline
type: docker
name: deployment
steps:
- name: image-build
image: docker:dind
environment:
DOCKER_USER:
from_secret: docker_username
DOCKER_PASSWORD:
from_secret: docker_password
commands:
- echo $DOCKER_PASSWORD | docker login --username $DOCKER_USER --password-stdin registry.coincoingit.fr
- DOCKER_BUILDKIT=1 docker build --tag registry.coincoingit.fr/miaomiao-blog:latest --file Dockerfile.production .
- docker push registry.coincoingit.fr/miaomiao-blog:latest
volumes:
- name: docker-sock
path: /var/run/docker.sock
- name: deploy
image: docker:dind
environment:
DOCKER_USER:
from_secret: docker_username
DOCKER_PASSWORD:
from_secret: docker_password
commands:
- echo $DOCKER_PASSWORD | docker login --username $DOCKER_USER --password-stdin registry.coincoingit.fr
- docker stack deploy --with-registry-auth -c stack.yml miaomiao_blog
volumes:
- name: docker-sock
path: /var/run/docker.sock
trigger:
event:
- push
branch:
- main
volumes:
- name: docker-sock
host:
path: /var/run/docker.sock

View File

@ -5,8 +5,8 @@ RUN apk add --no-cache libc6-compat
WORKDIR /app
# Install dependencies based on the preferred package manager
COPY package.json yarn.lock* package-lock.json* ./
RUN yarn install --frozen-lockfile
COPY package.json ./
RUN yarn install
# Rebuild the source code only when needed

36
stack.yml Normal file
View File

@ -0,0 +1,36 @@
version: '3.8'
services:
nodeserver:
image: registry.coincoingit.fr/miaomiao-blog:latest
deploy:
restart_policy:
condition: on-failure
placement:
constraints:
- node.labels.role == main
resources:
limits:
memory: 512M
reservations:
memory: 256M
labels:
- "traefik.enable=true"
- "traefik.http.services.miaomiao_blog.loadbalancer.server.port=3000"
- "traefik.http.services.miaomiao_blog.loadbalancer.healthCheck.path=/"
- "traefik.http.services.miaomiao_blog.loadbalancer.healthCheck.interval=60s"
- "traefik.http.services.miaomiao_blog.loadbalancer.healthCheck.timeout=10s"
- "traefik.http.services.miaomiao_blog.loadbalancer.healthCheck.port=3000"
- "traefik.http.routers.miaomiao_blog.rule=Host(`miaomiao.dev`)"
- "traefik.http.routers.miaomiao_blog.entrypoints=websecure"
- "traefik.http.routers.miaomiao_blog.tls=true"
- "traefik.http.routers.miaomiao_blog.tls.certresolver=letsencryptresolver"
networks:
- net
- traefik-public
networks:
net:
driver: overlay
traefik-public:
external: true