added ci-cd files

This commit is contained in:
Fedor Katurov 2021-04-08 09:44:13 +07:00
parent b60c97283d
commit ef08fadeb1
5 changed files with 154 additions and 71 deletions

84
.drone.yml Normal file
View file

@ -0,0 +1,84 @@
kind: pipeline
name: build
type: docker
platform:
os: linux
arch: amd64
steps:
- name: compress
image: alpine
commands:
- rm -rf ./app.tar.bz2
- tar -cjf ./app.tar.bz2 -C ./ .
- name: upload
image: drillster/drone-rsync
when:
branch:
- master
- develop
environment:
RSYNC_KEY:
from_secret: rsync_key
RSYNC_USER:
from_secret: rsync_user
PLUGIN_ARGS: -zz -O --no-perms
settings:
port: 22522
hosts:
- vault48.org
source: ./
user: ${rsync_user}
key: ${rsync_key}
target: /tmp/orchid-map-${DRONE_BRANCH}
include:
- "app.tar.bz2"
exclude:
- "*"
- name: build
image: appleboy/drone-ssh
when:
branch:
- master
- develop
environment:
BUILD_PATH:
from_secret: build_path
ENV_PATH:
from_secret: env_path
settings:
host: vault48.org
username:
from_secret: rsync_user
key:
from_secret: rsync_key
envs: [build_path, env_path]
port: 22522
script_stop: true
script:
- mkdir -p $${BUILD_PATH}/${DRONE_BRANCH}
- rm -rf $${BUILD_PATH}/${DRONE_BRANCH}/*
- cd $${BUILD_PATH}/${DRONE_BRANCH}
- tar -xjf /tmp/vault-frontend-${DRONE_BRANCH}/app.tar.bz2 -C ./
- cp -a $${ENV_PATH}/${DRONE_BRANCH}/. $${BUILD_PATH}/${DRONE_BRANCH}
- docker-compose build
- docker-compose up -d
- name: telgram_notify
image: appleboy/drone-telegram
when:
status:
- success
- failure
settings:
token:
from_secret: telegram_token
to:
from_secret: telegram_chat_id
format: markdown
message: >
{{#success build.status}}🤓{{else}}😨{{/success}}
[{{repo.name}} / {{commit.branch}}]({{ build.link }})
```
{{ commit.message }}
```

71
Jenkinsfile vendored
View file

@ -1,71 +0,0 @@
def failed = false
pipeline {
agent any
// parameters {
// gitParameter branchFilter: '.*/(.*)', defaultValue: 'hoogabooga', name: 'BRANCH', type: 'PT_BRANCH'
// }
environment {
WWW = "${env.BRANCH_NAME == "master" ? env.ORCHID_STABLE_WWW : env.ORCHID_STAGING_WWW}"
ENV = "${env.BRANCH_NAME == "master" ? env.ORCHID_STABLE_ENV : env.ORCHID_STAGING_ENV}"
}
stages {
stage('check') {
steps {
echo "WWW: ${WWW}"
echo "ENV: ${ENV}"
echo "WORKSPACE: ${WORKSPACE}"
sh 'pwd'
sh 'ls'
script {
if("${WWW}" == "" || "${ENV}" == "" || ("${env.BRANCH_NAME}" != "master" && "${env.BRANCH_NAME}" != "develop")) {
println "INCORRECT VARIABLES"
currentBuild.result = 'FAILED'
failed = true
error "Build failed :-("
return
}
}
}
}
stage('copy env') {
steps {
sh "cp -a ${ENV}/. ${WORKSPACE}"
}
}
stage('LS') {
steps {
sh "ls -a ./"
sh "ls -a ${ENV}"
sh "ls -a ./src/config"
}
}
stage('Build') {
steps {
sh 'npm install'
sh 'npm run build'
}
}
stage('deploy') {
when {
// branch 'develop'
expression {
!failed
}
}
steps{
sh "rm -rf ${WWW}"
sh "mv ${WORKSPACE}/dist ${WWW}"
}
}
}
}

11
docker-compose.yml Normal file
View file

@ -0,0 +1,11 @@
version: '3'
services:
www:
restart: always
build:
context: .
dockerfile: docker/www/Dockerfile
ports:
- ${EXPOSE}:80
volumes:
- /etc/localtime:/etc/localtime:ro

13
docker/www/Dockerfile Normal file
View file

@ -0,0 +1,13 @@
# stage1 as builder
FROM node:dubnium-alpine as builder
COPY package.json yarn.lock ./
RUN yarn
COPY . .
RUN yarn build
FROM nginx:alpine
COPY docker/www/nginx.conf /etc/nginx/nginx.conf
RUN rm -rf /usr/share/nginx/html/*
COPY --from=builder /build /usr/share/nginx/html
EXPOSE ${EXPOSE} 80
ENTRYPOINT ["nginx", "-g", "daemon off;"]

46
docker/www/nginx.conf Normal file
View file

@ -0,0 +1,46 @@
worker_processes 4;
events { worker_connections 1024; }
http {
server {
listen 80;
root /usr/share/nginx/html;
include /etc/nginx/mime.types;
gzip on;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain application/xml application/javascript;
## All static files will be served directly.
location ~* ^.+\.(?:css|cur|js|jpe?g|gif|htc|ico|png|xml|otf|ttf|eot|woff|woff2|svg)$ {
access_log off;
expires 30d;
add_header Cache-Control public;
gzip_static on;
## No need to bleed constant updates. Send the all shebang in one
## fell swoop.
tcp_nodelay off;
## Set the OS file cache.
open_file_cache max=3000 inactive=120s;
open_file_cache_valid 45s;
open_file_cache_min_uses 2;
open_file_cache_errors off;
}
location / {
gzip_static on;
try_files $uri @index;
}
location @index {
add_header Cache-Control "no-store, no-cache, must-revalidate";
expires -1;
try_files /index.html =404;
}
}
}