Automatización de despliegues con Cloud Build en GCP
Cloud Build es un servicio de integración y entrega continua (CI/CD) de Google Cloud Platform (GCP). Cloud Build permite a los desarrolladores construir, probar y desplegar sus aplicaciones directamente desde el código fuente, utilizando flujos de trabajo automatizados basados en archivos YAML.
En Dafitech, utilizamos Cloud Build para automatizar el proceso de construcción y despliegue de nuestras aplicaciones, asegurando que las nuevas versiones del software sean entregadas de manera rápida, eficiente y sin errores manuales.
El siguiente es un ejemplo de un archivo cloudbuild.yaml
que describe los pasos para construir una imagen Docker, empujarla a Artifact Registry, y actualizar el manifiesto de Kubernetes con la nueva versión de la imagen.
steps:
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'us-central1-docker.pkg.dev/prod-dafi/dafi-repository/portal-dafi:${SHORT_SHA}', '.']
- name: 'gcr.io/cloud-builders/docker'
args: ['push', 'us-central1-docker.pkg.dev/prod-dafi/dafi-repository/portal-dafi:${SHORT_SHA}']
- name: 'gcr.io/cloud-builders/gcloud'
entrypoint: /bin/sh
secretEnv: ['GIT_ACCESS_TOKEN']
args:
- '-c'
- |
git clone https://git:$${GIT_ACCESS_TOKEN}@github.com/uinchile/dev-ops.git -b main
echo "Updating image tag version ..."
cd dev-ops/frontend/produccion/portal
sed "s/GOOGLE_CLOUD_PROJECT/prod-dafi/g" deploy.yaml.tpl | \
sed "s/COMMIT_SHA/${SHORT_SHA}/g" > deploy.yaml
echo "Pushing changes to k8s manifest repo ..."
git config --global user.name "gebustos"
git config --global user.email "gerald@uin.cl"
git add -A
git commit -m "[Cloud Builder] Updated image tag us-central1-docker.pkg.dev/prod-dafi/dafi-repository/portal-dafi:${SHORT_SHA} from commit ${COMMIT_SHA}"
git push https://git:$${GIT_ACCESS_TOKEN}@github.com/uinchile/dev-ops.git main
availableSecrets:
secretManager:
- versionName: projects/prod-dafi/secrets/github/versions/latest
env: 'GIT_ACCESS_TOKEN'
images:
- 'us-central1-docker.pkg.dev/prod-dafi/dafi-repository/portal-dafi:${SHORT_SHA}'
options:
logging: CLOUD_LOGGING_ONLY