Posted by (Victor Ureta) | 6 min read
En el siguiente post te explicaremos paso a paso para una aplicación web desarrollada con Angular 8, en un App Engine para la plataforma Google Cloud Platform. Al buscar documentación existente en internet basándonos en la típica búsqueda "Deploy App Azure Devops GCP", encontraremos información larga y extensa de cómo se realizaba el despliegue para algunos tipos de aplicativos, pero realmente no explicaba de una manera clara cómo realizar esta simple acción. En base a esto, se realizaron varias pruebas utilizando el SDK de Google, las que permitieron llegar a una forma sencilla de lograrlo.
Para poder implementar el despliegue desde Azure DevOps a GCP debemos ejecutar los siguientes comandos en nuestro pipeline release (esto es un ejemplo del despliegue)
# Create environment variable for correct distribution
export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
# Add the Cloud SDK distribution URI as a package source
echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
# Import the Google Cloud Platform public key
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
# Update the package list and install the Cloud SDK
sudo apt-get update && sudo apt-get install google-cloud-sdk
# Select Project
gcloud config set project endless-ability-265820
# login in gcp with service account
gcloud auth activate-service-account --key-file $(System.DefaultWorkingDirectory)/_WEB_PortalCliente/dist/proyectonuevo-266717-5bdefb2b5f27.json
# Deploy GCP App Engine
cd $(System.DefaultWorkingDirectory)/_WEB_PortalCliente/dist/
gcloud app deploy --quiet
Es importante seguir los pasos a continuación. Te explicaremos en detalle:
Crear Proyecto en GCP
Crear App Engine en GCP
Crear Cuenta de servicio con acceso al proyecto en GCP
Activar App Engine Admin API
Compilar
Desplegar En el despliegue debemos considerar: a. Instalar SDK GCP b. Iniciar sesión con cuenta de servicio c. Seleccionar Proyecto d. Desplegar
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /
static_files: dev/index.html
upload: dev/index.html
- url: /
static_dir: dev
- task: NodeTool@0
inputs:
versionSpec: '10.x'
displayName: 'Install Node.js'
- script: |
npm install -g @angular/cli
npm install
ng build --configuration=dev --output-path=dist/dev
displayName: 'npm install and build'
- task: CopyFiles@2
inputs:
SourceFolder: 'gcp'
Contents: '**'
TargetFolder: 'dist'
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: dist'
inputs:
PathtoPublish: dist
ArtifactName: dist
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: 'dist'
ArtifactName: 'dist'
publishLocation: 'Container'
7.Agrega la step Command line con los siguientes comandos
Instalar SDK GCP
# Create environment variable for correct distribution
export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
# Add the Cloud SDK distribution URI as a package source
echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
# Import the Google Cloud Platform public key
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
# Update the package list and install the Cloud SDK
sudo apt-get update && sudo apt-get install google-cloud-sdk
Seleccionamos el proyecto
gcloud config set project {idproyecto}
ejemplo:
gcloud config set project proyectonuevo-266717
Iniciar sesión
gcloud auth activate-service-account --key-file {path json cuenta de servicio}
ejemplo:
gcloud auth activate-service-account --key-file $(System.DefaultWorkingDirectory)/_WEB_PortalCliente/dist/proyectonuevo-266717-5bdefb2b5f27.json
Desplegar
Dentro de la ruta donde se encuentra el archivo app.yaml ejecutamos:
gcloud app deploy --quiet
ejemplo:
cd $(System.DefaultWorkingDirectory)/_WEB_PortalCliente/dist/
gcloud app deploy --quiet
De esta forma logramos realizar el despliegue en GCP desde Azure DevOps
← volver al resto de posts