134 lines
2.8 KiB
YAML
134 lines
2.8 KiB
YAML
---
|
|
kind: pipeline
|
|
name: lint
|
|
|
|
steps:
|
|
- name: yaml lint
|
|
image: cytopia/yamllint
|
|
commands:
|
|
- yamllint .
|
|
|
|
- name: docker lint
|
|
image: hadolint/hadolint
|
|
commands:
|
|
- hadolint Dockerfile # ignore pinning version in pip
|
|
|
|
- name: w3c validator
|
|
image: validator/validator:latest
|
|
commands:
|
|
- /vnu-runtime-image/bin/vnu static/*.html
|
|
|
|
- name: markdown lint
|
|
image: pipelinecomponents/markdownlint:latest
|
|
commands:
|
|
- mdl --style all --warnings .
|
|
|
|
---
|
|
kind: pipeline
|
|
name: unit tests
|
|
|
|
steps:
|
|
- name: unit test
|
|
image: python:slim
|
|
commands:
|
|
- pip install -r requirements.txt
|
|
- pip install pylint
|
|
- pylint beer/*.py tests/*.py
|
|
- python -m pytest tests
|
|
|
|
depends_on:
|
|
- lint
|
|
|
|
---
|
|
kind: pipeline
|
|
name: build
|
|
|
|
steps:
|
|
- name: build image
|
|
image: plugins/docker
|
|
settings:
|
|
repo: kleph/beer
|
|
tags: ${DRONE_COMMIT_SHA:0:8}
|
|
username:
|
|
from_secret: dockerhub_username
|
|
password:
|
|
from_secret: dockerhub_password
|
|
when:
|
|
event:
|
|
exclude:
|
|
- pull_request
|
|
|
|
depends_on:
|
|
- unit tests
|
|
|
|
---
|
|
deploy_commands_alias:
|
|
- &deploy_commands
|
|
commands:
|
|
- echo "== pre deploy ($${LEVEL}) status:"
|
|
- kubectl get pods --namespace=beer
|
|
- kubectl get deployments --namespace=beer
|
|
- sed "s/__LEVEL__/$${LEVEL}/g" kube/beer-deployment.yaml > kube/beer-deployment-$${LEVEL}.yaml
|
|
- sed "s/__NAMESPACE__/$${NAMESPACE}/g" kube/beer-deployment-$${LEVEL}.yaml > kube/beer-deployment-$${NAMESPACE}-$${LEVEL}.yaml
|
|
- sed "s/__IMAGE_TAG__/$${IMAGE_TAG}/g" kube/beer-deployment-$${NAMESPACE}-$${LEVEL}.yaml > kube/beer-deployment-$${NAMESPACE}-$${LEVEL}2.yaml
|
|
- echo "applying"
|
|
- kubectl apply -f kube/beer-deployment-$${NAMESPACE}-$${LEVEL}2.yaml --namespace=beer
|
|
- echo "== post deploy ($${LEVEL}) status:"
|
|
- kubectl get deployments --namespace=beer
|
|
- kubectl get pods --namespace=beer
|
|
|
|
kind: pipeline
|
|
name: deploy
|
|
|
|
steps:
|
|
- name: deploy staging
|
|
image: sinlead/drone-kubectl
|
|
settings:
|
|
kubernetes_server:
|
|
from_secret: kubectl_uri
|
|
kubernetes_cert:
|
|
from_secret: kubectl_cert
|
|
kubernetes_token:
|
|
from_secret: kubectl_token
|
|
environment:
|
|
IMAGE_TAG: ${DRONE_COMMIT_SHA:0:8}
|
|
NAMESPACE: beer
|
|
LEVEL: staging
|
|
<<: *deploy_commands
|
|
when:
|
|
branch:
|
|
exclude:
|
|
- master
|
|
|
|
- name: test staging
|
|
image: ellerbrock/alpine-bash-curl-ssl
|
|
environment:
|
|
BRANCH: ${DRONE_COMMIT_BRANCH}
|
|
commands:
|
|
- bash staging_tests.sh
|
|
when:
|
|
branch:
|
|
exclude:
|
|
- master
|
|
|
|
- name: deploy live
|
|
image: sinlead/drone-kubectl
|
|
settings:
|
|
kubernetes_server:
|
|
from_secret: kubectl_uri
|
|
kubernetes_cert:
|
|
from_secret: kubectl_cert
|
|
kubernetes_token:
|
|
from_secret: kubectl_token
|
|
environment:
|
|
IMAGE_TAG: ${DRONE_COMMIT_SHA:0:8}
|
|
NAMESPACE: beer
|
|
LEVEL: live
|
|
<<: *deploy_commands
|
|
when:
|
|
branch:
|
|
include:
|
|
- master
|
|
|
|
depends_on:
|
|
- build
|