beer/.drone.yml
kleph 990d3ac8bf
Some checks failed
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is failing
[CI] Don't rebuild docker image when merging
Should fix #9
2020-03-03 09:34:13 +01:00

130 lines
2.7 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 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
- 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