video-iac/bitbucket-pipelines.yml

172 lines
7.1 KiB
YAML
Raw Normal View History

2021-11-16 12:59:43 +00:00
---
2021-07-16 15:15:34 +00:00
image: atlassian/default-image:2
definitions:
services:
docker:
memory: 3072
pipelines:
default:
- parallel:
- step:
2021-11-15 17:05:12 +00:00
name: Build images
2021-07-16 15:15:34 +00:00
script:
2021-11-15 15:42:36 +00:00
- docker build . --file docker/coturn/Dockerfile --tag coturn
- docker build . --file docker/coturn-dns/Dockerfile --tag coturn-dns
2021-07-16 15:15:34 +00:00
services:
- docker
caches:
- docker
- step:
name: Lint the Dockerfile
image: hadolint/hadolint:latest-debian
script:
2021-11-15 15:37:15 +00:00
- hadolint docker/coturn/Dockerfile
- hadolint docker/coturn-dns/Dockerfile
2021-07-16 15:15:34 +00:00
branches:
2021-07-16 15:24:04 +00:00
main:
2021-11-17 14:19:27 +00:00
- parallel:
- step:
name: Build images
script:
- docker build . --file docker/coturn/Dockerfile --tag coturn
- docker build . --file docker/coturn-dns/Dockerfile --tag coturn-dns
- docker save coturn --output "coturn.tar"
- docker save coturn-dns --output "coturn-dns.tar"
services:
- docker
caches:
- docker
artifacts:
- "*.tar"
2021-11-17 14:20:55 +00:00
- step:
name: Deploy terraform
2021-11-17 14:23:13 +00:00
image: hashicorp/terraform:latest
2021-11-17 14:20:55 +00:00
script:
- cd terraform/
- terraform init
- terraform plan
2021-11-17 14:52:49 +00:00
- terraform apply -input=false -auto-approve
2021-11-17 14:33:39 +00:00
- step:
2025-07-20 22:21:40 +00:00
name: Deploy K8s apps (production)
2021-11-17 14:33:39 +00:00
script:
2021-11-17 15:26:01 +00:00
- pipe: atlassian/kubectl-run:3.1.2
2021-11-17 14:33:39 +00:00
variables:
2025-07-20 22:21:40 +00:00
KUBE_CONFIG: $KUBE_CONFIG_PRD
KUBECTL_COMMAND: '-n argocd apply -k k8s/argocd/overlays/production'
2021-07-16 15:15:34 +00:00
- step:
2021-11-15 17:05:12 +00:00
name: Push images
2021-07-16 15:15:34 +00:00
image: google/cloud-sdk:alpine
script:
# Authenticating with the service account key file
- echo $GCLOUD_API_KEYFILE | base64 -d > ./gcloud-api-key.json
- gcloud auth activate-service-account --key-file gcloud-api-key.json
- gcloud config set project $GCLOUD_PROJECT
2021-11-16 12:59:43 +00:00
- cat ./gcloud-api-key.json | docker login -u _json_key --password-stdin https://gcr.io
# Push Docker images
- VERSION="latest"
2021-11-15 16:55:04 +00:00
- docker load --input "coturn.tar"
- docker load --input "coturn-dns.tar"
2025-04-06 22:57:45 +00:00
- docker tag "coturn" "gcr.io/${GCLOUD_PROJECT}/coturn:${VERSION-staging}"
- docker tag "coturn-dns" "gcr.io/${GCLOUD_PROJECT}/coturn-dns:${VERSION-staging}"
- docker push "gcr.io/${GCLOUD_PROJECT}/coturn:${VERSION-staging}"
- docker push "gcr.io/${GCLOUD_PROJECT}/coturn-dns:${VERSION-staging}"
2021-07-16 15:15:34 +00:00
services:
2021-11-16 12:59:43 +00:00
- docker
2021-11-18 19:25:59 +00:00
- step:
2021-11-18 19:26:56 +00:00
name: Deploy coturn/coturn-dns to production
deployment: production
2021-11-18 19:25:59 +00:00
script:
- pipe: atlassian/kubectl-run:1.1.2
variables:
KUBE_CONFIG: $KUBE_CONFIG_PRD
KUBECTL_COMMAND: '-n coturn rollout restart deployment/coturn'
- pipe: atlassian/kubectl-run:1.1.2
variables:
KUBE_CONFIG: $KUBE_CONFIG_PRD
KUBECTL_COMMAND: '-n coturn rollout status -w deployment/coturn'
- pipe: atlassian/kubectl-run:1.1.2
variables:
KUBE_CONFIG: $KUBE_CONFIG_PRD
KUBECTL_COMMAND: '-n coturn-dns rollout restart deployment/coturn-dns'
- pipe: atlassian/kubectl-run:1.1.2
variables:
KUBE_CONFIG: $KUBE_CONFIG_PRD
2025-04-06 22:57:45 +00:00
KUBECTL_COMMAND: '-n coturn-dns rollout status -w deployment/coturn-dns'
develop:
- parallel:
- step:
name: Build images
script:
- docker build . --file docker/coturn/Dockerfile --tag coturn
- docker build . --file docker/coturn-dns/Dockerfile --tag coturn-dns
- docker save coturn --output "coturn.tar"
- docker save coturn-dns --output "coturn-dns.tar"
services:
- docker
caches:
- docker
artifacts:
- "*.tar"
- step:
name: Deploy terraform
image: hashicorp/terraform:latest
script:
- cd terraform/
- terraform init
- terraform plan
- terraform apply -input=false -auto-approve
- step:
name: Deploy K8s apps (staging)
script:
2025-07-20 02:18:44 +00:00
# Set a default branch for local testing or safety if BITBUCKET_BRANCH is not always present
- export BITBUCKET_BRANCH=${BITBUCKET_BRANCH:-notarealbranch}
# Template argocd/base/applications.yaml in place for the current pipeline run
- envsubst < k8s/argocd/base/applications.yaml > k8s/argocd/base/applications.yaml.tmp
- mv k8s/argocd/base/applications.yaml.tmp k8s/argocd/base/applications.yaml
# Now run kubectl apply -k. Kustomize will pick up the modified base file.
2025-04-06 22:57:45 +00:00
- pipe: atlassian/kubectl-run:3.1.2
variables:
KUBE_CONFIG: $KUBE_CONFIG_STG
KUBECTL_COMMAND: '-n argocd apply -k k8s/argocd/overlays/staging'
- step:
name: Push images
image: google/cloud-sdk:alpine
script:
# Authenticating with the service account key file
- echo $GCLOUD_API_KEYFILE | base64 -d > ./gcloud-api-key.json
- gcloud auth activate-service-account --key-file gcloud-api-key.json
- gcloud config set project $GCLOUD_PROJECT
- cat ./gcloud-api-key.json | docker login -u _json_key --password-stdin https://gcr.io
# Push Docker images
- VERSION="latest"
- docker load --input "coturn.tar"
- docker load --input "coturn-dns.tar"
- docker tag "coturn" "gcr.io/${GCLOUD_PROJECT}/coturn:${VERSION}"
- docker tag "coturn-dns" "gcr.io/${GCLOUD_PROJECT}/coturn-dns:${VERSION}"
- docker push "gcr.io/${GCLOUD_PROJECT}/coturn:${VERSION}"
- docker push "gcr.io/${GCLOUD_PROJECT}/coturn-dns:${VERSION}"
services:
- docker
- step:
name: Deploy coturn/coturn-dns to staging
deployment: staging
script:
- pipe: atlassian/kubectl-run:1.1.2
variables:
KUBE_CONFIG: $KUBE_CONFIG_STG
KUBECTL_COMMAND: '-n coturn rollout restart deployment/coturn'
- pipe: atlassian/kubectl-run:1.1.2
variables:
KUBE_CONFIG: $KUBE_CONFIG_STG
KUBECTL_COMMAND: '-n coturn rollout status -w deployment/coturn'
- pipe: atlassian/kubectl-run:1.1.2
variables:
KUBE_CONFIG: $KUBE_CONFIG_STG
KUBECTL_COMMAND: '-n coturn-dns rollout restart deployment/coturn-dns'
- pipe: atlassian/kubectl-run:1.1.2
variables:
KUBE_CONFIG: $KUBE_CONFIG_STG
2021-11-16 13:52:30 +00:00
KUBECTL_COMMAND: '-n coturn-dns rollout status -w deployment/coturn-dns'