garrettmills
ad8259e795
All checks were successful
continuous-integration/drone/push Build is passing
200 lines
5.1 KiB
YAML
200 lines
5.1 KiB
YAML
kind: pipeline
|
|
name: default
|
|
type: docker
|
|
steps:
|
|
# ============ RESTORE CACHE =============
|
|
- name: restore node_modules cache
|
|
image: appleboy/drone-sftp-cache
|
|
settings:
|
|
server:
|
|
from_secret: cache_server
|
|
port: 22
|
|
username:
|
|
from_secret: cache_server_user
|
|
key:
|
|
from_secret: cache_server_key
|
|
path: /var/cache/drone
|
|
restore: true
|
|
mount:
|
|
- node_modules
|
|
|
|
# ============ BUILD STEPS ===============
|
|
- name: build-prod
|
|
image: node:14
|
|
commands:
|
|
- npm i
|
|
- npm install @ionic/cli
|
|
- ./node_modules/.bin/ionic build --prod
|
|
- ./node_modules/.bin/ngsw-config ./www/ ./ngsw-config.json /i
|
|
- tar czf build.tar.gz www
|
|
|
|
# =============== REBULD CACHE ==============
|
|
- name: rebuild node_modules cache
|
|
image: appleboy/drone-sftp-cache
|
|
settings:
|
|
server:
|
|
from_secret: cache_server
|
|
port: 22
|
|
username:
|
|
from_secret: cache_server_user
|
|
key:
|
|
from_secret: cache_server_key
|
|
path: /var/cache/drone
|
|
rebuild: true
|
|
mount:
|
|
- node_modules
|
|
|
|
# =============== RELEASE ===============
|
|
- name: release
|
|
image: plugins/gitea-release
|
|
settings:
|
|
api_key:
|
|
from_secret: gitea_api_key
|
|
base_url: https://code.garrettmills.dev
|
|
files: build.tar.gz
|
|
title: ${DRONE_TAG}
|
|
when:
|
|
event: tag
|
|
|
|
# =============== DEPLOY TO DEV SITE ===============
|
|
- name: copy artifacts to staging site
|
|
image: appleboy/drone-scp
|
|
settings:
|
|
host:
|
|
from_secret: dev_site_host
|
|
username:
|
|
from_secret: dev_site_user
|
|
key:
|
|
from_secret: dev_site_key
|
|
port: 22
|
|
source: build.tar.gz
|
|
target: /etc/glmdev/noded
|
|
when:
|
|
event: promote
|
|
target: staging
|
|
- name: deploy artifacts on staging site
|
|
image: appleboy/drone-ssh
|
|
settings:
|
|
host:
|
|
from_secret: dev_site_host
|
|
username:
|
|
from_secret: dev_site_user
|
|
key:
|
|
from_secret: dev_site_key
|
|
port: 22
|
|
script:
|
|
- cd /etc/glmdev/noded
|
|
- rm -rf www
|
|
- tar xzf build.tar.gz
|
|
- cd www
|
|
- echo -n "$(uuidgen)" | sudo tee version.html
|
|
when:
|
|
event: promote
|
|
target: staging
|
|
|
|
# =============== DEPLOY TO PROD SITE ===============
|
|
- name: copy artifacts to production site
|
|
image: appleboy/drone-scp
|
|
settings:
|
|
host:
|
|
from_secret: prod_site_host
|
|
username:
|
|
from_secret: prod_site_user
|
|
key:
|
|
from_secret: prod_site_key
|
|
port: 22
|
|
source: build.tar.gz
|
|
target: /etc/glmdev/noded-prod
|
|
when:
|
|
event: promote
|
|
target: production
|
|
- name: deploy artifacts on production site
|
|
image: appleboy/drone-ssh
|
|
settings:
|
|
host:
|
|
from_secret: prod_site_host
|
|
username:
|
|
from_secret: prod_site_user
|
|
key:
|
|
from_secret: prod_site_key
|
|
port: 22
|
|
script:
|
|
- cd /etc/glmdev/noded-prod
|
|
- rm -rf www
|
|
- tar xzf build.tar.gz
|
|
- cd www
|
|
- echo -n "$(uuidgen)" | sudo tee version.html
|
|
when:
|
|
event: promote
|
|
target: production
|
|
|
|
# =============== BUILD NOTIFICATIONS ===============
|
|
- name: send build success notifications
|
|
image: plugins/webhook
|
|
settings:
|
|
urls:
|
|
from_secret: notify_webhook_url
|
|
content_type: application/json
|
|
template: |
|
|
{
|
|
"title": "Drone-CI [noded-frontend @ ${DRONE_BUILD_NUMBER}]",
|
|
"message": "Build completed successfully. (Changes by ${DRONE_COMMIT_AUTHOR})",
|
|
"priority": 4
|
|
}
|
|
when:
|
|
status: success
|
|
event:
|
|
exclude:
|
|
- promote
|
|
- name: send build error notifications
|
|
image: plugins/webhook
|
|
settings:
|
|
urls:
|
|
from_secret: notify_webhook_url
|
|
content_type: application/json
|
|
template: |
|
|
{
|
|
"title": "Drone-CI [noded-frontend @ ${DRONE_BUILD_NUMBER}]",
|
|
"message": "Build failed! (Changes by ${DRONE_COMMIT_AUTHOR})",
|
|
"priority": 6
|
|
}
|
|
when:
|
|
status: failure
|
|
event:
|
|
exclude:
|
|
- promote
|
|
|
|
# =============== DEPLOY NOTIFICATIONS ===============
|
|
- name: send deploy success notifications
|
|
image: plugins/webhook
|
|
settings:
|
|
urls:
|
|
from_secret: notify_webhook_url
|
|
content_type: application/json
|
|
template: |
|
|
{
|
|
"title": "Drone-Deploy [noded-frontend @ ${DRONE_BUILD_NUMBER} to ${DRONE_DEPLOY_TO}]",
|
|
"message": "Deployment completed successfully. (Changes by ${DRONE_COMMIT_AUTHOR})",
|
|
"priority": 4
|
|
}
|
|
when:
|
|
status: success
|
|
event:
|
|
- promote
|
|
- name: send deploy error notifications
|
|
image: plugins/webhook
|
|
settings:
|
|
urls:
|
|
from_secret: notify_webhook_url
|
|
content_type: application/json
|
|
template: |
|
|
{
|
|
"title": "Drone-Deploy [noded-frontend @ ${DRONE_BUILD_NUMBER} to ${DRONE_DEPLOY_TO}]",
|
|
"message": "Deployment failed! (Changes by ${DRONE_COMMIT_AUTHOR})",
|
|
"priority": 6
|
|
}
|
|
when:
|
|
status: failure
|
|
event:
|
|
- promote
|