7-febrero-2022
admin

Git Actions de GitHub (Parte 5)

Continuamos con algún ejemplo de GitHub Action

workflow.yml: Cuando se crea una rama nueva se modifica en ella la versión del pom.xml, añadiéndole un sufijo extraido del nombre de dicha rama.

name: On create branch - Rename version pom.xml
# Esta action se va a ejecutar cada vez que se crea una rama de main
on:
  create:
    branches:
      - main
jobs:
  # Tarea que se encargar de sacar el sufijo de la rama
  extract-suffix-name-branch:
      runs-on: ubuntu-latest
      #Lista de variables de salida del job
      outputs:
        suffix_name: ${{ steps.get-id.outputs.id }}
      steps:
        # Checkout repository
        - uses: actions/checkout@v2         
          
        # Utilizamos action que recupera los nombres de las ramas las ramas 
        - name: Get branch name
          id: branch-name
          uses: tj-actions/branch-names@v5.1
          
        # Mostramos por pantalla el nombre de la rama actual: 'prueba-100] description rama'
        - name: Running on the default branch.
          if: steps.branch-name.outputs.is_default == 'true'
          run: |
            echo "Running on default: ${{ steps.branch-name.outputs.current_branch }}"
        # Extraemos el sufijo que queremos utilizar para la version del pom: 'prueba-100'
        - id: get-id
          run: |
            id=$(echo ${{ steps.branch-name.outputs.current_branch }} | cut -d] -f1 | cut -d[ -f2)
            echo "::set-output name=id::$id"

  # Tarea que se encargar de sacar el prefijo de la versión del pom.xml  
  extract-preffix-name-pom-version:
      runs-on: ubuntu-latest
      #Lista de variables de salida del job
      outputs:
        preffix_name: ${{ steps.get-id.outputs.id }}
      steps:
        # Checkout repository
        - uses: actions/checkout@v2        
                
        #Tarea extrae a la variable version, la version existente en el pom.xml
        - name: Extract Maven project version
          working-directory: ./example3-gitactions
          run: echo ::set-output name=version::$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec)
          id: project_version
        - run: echo "Maven project version is ${{ steps.project_version.outputs.version }}"

        - id: get-id
          run: |
            id=$(echo ${{ steps.project_version.outputs.version }} | cut -d- -f1)
            echo "::set-output name=id::$id"       

  # Tarea que se encargar modificar la versión del pom.xml  
  rename-pom-version-and-commit:
      # Se le indica que depende de las dos tareas anteriores
      needs: [extract-preffix-name-pom-version, extract-suffix-name-branch]
      runs-on: ubuntu-latest
      steps:
        # Checkout repository
        - uses: actions/checkout@v2          
        
        # Instalamos jdk 11
        - name: Set up JDK 1.11
          uses: actions/setup-java@v1
          with:
            java-version: 1.11             
              
        # Realiza la modificación de la versión del pom.xml. 
        # Indicando generateBackupPoms a true nos generaría un backup del pom.xml que podríamos utilizar para restaurarlo al mergear la pull-request.
        - name: set version pom
          working-directory: ./example3-gitactions
          run: mvn -B versions:set -DnewVersion=${{ needs.extract-preffix-name-pom-version.outputs.preffix_name }}-${{ needs.extract-suffix-name-branch.outputs.suffix_name }}-SNAPSHOT -DgenerateBackupPoms=false

         # Realiza una prueba de que sigue compilando perfectamente. 
        - name: mvn package
          run: mvn -B package --file example3-gitactions/pom.xml
          
        # Subimos el cambio al repo. 
        - name: Commit new version pom.xml - branch
          run: |
            git config --global user.name 'Roberto'
            git config --global user.email 'roberto-pf@github.com'
            git add .
            git commit -am "Automated report"
            git push

Renombra Versión Pom.xml

Renombra Versión Pom.xml

Renombra Versión Pom.xml

Renombra Versión Pom.xml

Nota: Repositorio Github

Documentación action que extrae el nombre de la rama: tj-actions/branch-names

Comentarios cerrados.

Categorias

Linkedin