diff --git a/.drone.yml b/.drone.yml index e89f9ab..0cb88bb 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,3 +1,98 @@ +--- +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 + +#depends_on: +#- unit tests + +--- +kind: pipeline +name: deploy-staging + +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} + commands: + - export NAMESPACE=beer-staging-${DRONE_COMMIT_SHA:0:4} + - echo "== create staging namespace $${NAMESPACE}" + - sed "s/__NAMESPACE__/$${NAMESPACE}/g" kube/beer-namespace.yaml > kube/beer-namespace-staging.yaml + - kubectl apply -f kube/beer-namespace-staging.yaml + - echo "== deploy staging" + - sed "s/__IMAGE_TAG__/$${IMAGE_TAG}/g" kube/beer-deployment.yaml > kube/beer-deployment-staging.yaml + - kubectl apply -f kube/beer-deployment-staging.yaml --namespace=$${NAMESPACE} + - echo "== post deploy status:" + - kubectl get deployments --namespace=$${NAMESPACE} + - kubectl get pods --namespace=$${NAMESPACE} + +depends_on: +- build + +when: + branch: + exclude: + - master + +--- +kind: pipeline +name: deploy + +steps: +- name: deploy + 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 + commands: + - echo "== pre deploy status:" + - kubectl get pods --namespace=beer + - kubectl get deployments --namespace=beer + - kubectl get svc --namespace=beer + - cat kube/beer-deployment.yaml + - sed "s/__NAMESPACE__/$${NAMESPACE}/g" kube/beer-deployment.yaml > kube/beer-deployment-prod.yaml + - cat kube/beer-deployment-prod.yaml + - sed "s/__IMAGE_TAG__/$${IMAGE_TAG}/g" kube/beer-deployment-prod.yaml > kube/beer-deployment-prod2.yaml + - echo "applying" + - cat kube/beer-deployment-prod2.yaml + - kubectl apply -f kube/beer-deployment-prod2.yaml --namespace=beer + - echo "== post deploy status:" + - kubectl get deployments --namespace=beer + - kubectl get pods --namespace=beer + +depends_on: +- build + +when: + branch: + include: + - master + #--- #kind: pipeline #name: lint @@ -38,87 +133,3 @@ # #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 - -#depends_on: -#- unit tests - ---- -kind: pipeline -name: deploy - -steps: -- name: deploy - 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-staging-${DRONE_COMMIT_SHA:0:4} - commands: - - echo "== create staging namespace ${NAMESPACE}" - - kubectl get svc --namespace=${NAMESPACE} - - cat kube/beer-deployment.yaml > kube/beer-namespace.yaml - - kubectl apply -f kube/beer-namespace.yaml - - echo "== deploy staging" - - cat kube/beer-deployment.yaml > kube/beer-deployment-${IMAGE_TAG}.yaml - - kubectl apply -f kube/beer-deployment-${IMAGE_TAG}.yaml --namespace=beer - -depends_on: -- build - -when: - branch: - exclude: - - master - ---- -kind: pipeline -name: deploy - -steps: -- name: deploy - 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} - commands: - - echo "== pre deploy status:" - - kubectl get pods --namespace=beer - - kubectl get deployments --namespace=beer - - kubectl get svc --namespace=beer - - cat kube/beer-deployment.yaml > kube/beer-deployment-${IMAGE_TAG}.yaml - - kubectl apply -f kube/beer-deployment-${IMAGE_TAG}.yaml --namespace=beer - - echo "== post deploy status:" - -depends_on: -- build - -when: - branch: - - master diff --git a/kube/beer-deployment.yaml b/kube/beer-deployment.yaml index 83e916d..5d4aa79 100644 --- a/kube/beer-deployment.yaml +++ b/kube/beer-deployment.yaml @@ -3,7 +3,7 @@ apiVersion: apps/v1 kind: Deployment metadata: name: beer-deployment - namespace: beer + namespace: __NAMESPACE__ spec: selector: matchLabels: @@ -16,7 +16,7 @@ spec: spec: containers: - name: beer - image: kleph/beer:${IMAGE_TAG} + image: kleph/beer:__IMAGE_TAG__ imagePullPolicy: Always ports: - containerPort: 5000 diff --git a/kube/beer-namespace.yaml b/kube/beer-namespace.yaml index 899e8fa..9120a41 100644 --- a/kube/beer-namespace.yaml +++ b/kube/beer-namespace.yaml @@ -2,6 +2,6 @@ apiVersion: v1 kind: Namespace metadata: - name: ${NAMESPACE} + name: __NAMESPACE__ labels: - name: ${NAMESPACE} + name: __NAMESPACE__