Maik3345 / azure-devops-vtex-extension

A collection of utilities for VTEX IO CI/CD
2 stars 0 forks source link

Create the task to make the deploy only in the pull request #7

Closed Maik3345 closed 4 months ago

Maik3345 commented 4 months ago

Se plantea remover el proceso de deploy del task para publicar en el pull request. esta lógica se moverá para un solo task el cual se encargará solo de hacer el deploy y así poder partir el proceso en azure devops de la siguiente forma

image

con esta implementación se tiene un proceso así:

  1. un stage llamado Beta 1.1 se llama el task de publicación pero en modo beta, este stage lo puede ejecutar el dev sin aprobación y se hace para asegurar que su desarrollo compila en modo beta 1.2 se llama el task de release el cual hace el release pero en modo beta
  2. un stage llamado Publish el cual llama el task de publicación pero en modo normal
  3. un stage llamado deploy 3.1 se llama el task de publicación el cual publica la app en modo estable 3.2 se llama el task de release el cual completa el pull request actual, se mueve a la rama principal y hace el release de la aplicación

Para el stage de publish y deploy se plantea usar el environment de azure el cual permite pausar el proceso hasta que alguien que pertenezca al grupo del environment apruebe la build

Maik3345 commented 4 months ago

Ejemplo de la implementación en azure devops para los stage de beta, publish y deploy

name: my-app

pool:
  vmImage: ubuntu-latest

trigger: none

variables:
  - group: group-of-variables

stages:
  - stage: 'Beta'
    displayName: 'Beta'
    condition: succeeded()
    jobs:
      - job: Beta
        displayName: 'Generate a beta release'
        steps:
          - checkout: self
            persistCredentials: true
          - task: VtexPullRequestPublish@0
            displayName: 'TASK: Beta publish'
            inputs:
              account: $(VTEX_ACCOUNT_NAME_PROD)
              email: $(VTEX_EMAIL_PROD)
              apiKey: $(VTEX_API_KEY_PROD)
              apiToken: $(VTEX_API_TOKEN_PROD)
              beta: true
              forcePublish: true
          - task: GitPullRequestRelease@0
            displayName: 'TASK: Beta release'
            inputs:
              devBranch: 'develop'
              beta: true
              mergeIntoDevelop: true

  - stage: 'Publish'
    displayName: 'Publish'
    condition: succeeded()
    jobs:
      - deployment:
        environment: publish
        displayName: 'Make the publish of the app'
        strategy:
          runOnce:
            deploy:
              steps:
                - checkout: self
                  persistCredentials: true
                - task: VtexPullRequestPublish@0
                  displayName: 'TASK: publish'
                  inputs:
                    account: $(VTEX_ACCOUNT_NAME_PROD)
                    email: $(VTEX_EMAIL_PROD)
                    apiKey: $(VTEX_API_KEY_PROD)
                    apiToken: $(VTEX_API_TOKEN_PROD)
                    forcePublish: true

  - stage: 'Deploy'
    displayName: 'Deploy'
    condition: succeeded()
    jobs:
      - deployment:
        environment: prod
        displayName: 'Deploy and release'
        strategy:
          runOnce:
            deploy:
              steps:
                - checkout: self
                  persistCredentials: true
                - task: VtexPullRequestDeploy@0
                  displayName: 'TASK: deploy'
                  inputs:
                    account: $(VTEX_ACCOUNT_NAME_PROD)
                    email: $(VTEX_EMAIL_PROD)
                    apiKey: $(VTEX_API_KEY_PROD)
                    apiToken: $(VTEX_API_TOKEN_PROD)
                - task: GitPullRequestRelease@0
                  displayName: 'TASK: release'