Calcolare automaticamente un numero di versione di un repository in una GitHub Action

di Matteo Tumiati, in DevOps,

Abbiamo già visto in passato (https://www.dopsitalia.com/script/44/Calcolare-Automaticamente-Numero-Versione-Repository-Pipeline-Azure-DevOps.aspx) come effettuare il versioning di un repository sfruttando una pipeline creata in Azure DevOps. Ma che cosa cambia se la pipeline è in realtà un workflow se il repository è su GitHub?

La risposta è piuttoto semplice e scontata: solo la sintassi. Di fatto, possiamo riutilizzare lo stesso identico tool, ovvero GitVersion, per recuperare automaticamente, in base allo stato del repository (considerando git tag, ref corrente, branch e così via) il numero di versione adatto sfruttando lo standard Semantic Versioning.

- name: Install GitVersion
  uses: gittools/actions/gitversion/setup@v0.9.7
  with:
    versionSpec: '5.5.0'

- name: Determine Version
  id: gitversion
  uses: gittools/actions/gitversion/execute@v0.9.7
  with:
    useConfigFile: true

Se lo abbiamo a disposizione, possiamo anche referenziare un file di configurazione differente, così da specificare policy differenti per quanto riguarda le regole di validazione dei branch o di upgrade del numero di versione stesso. Oppure, possiamo crearne uno al volo:

- run: |
    cat << EOF > ./GitVersion.yml
    mode: Mainline
    branches: #{}
      release:
        regex: ^release(s)?[/-]
        mode: ContinuousDelivery
        tag: ''
        increment: Patch
        prevent-increment-of-merged-branch-version: true
        track-merge-target: false
        is-release-branch: false
      feature:
        regex: feature(s)?[/-]
        mode: ContinuousDeployment
        tag: feat
        increment: None
        prevent-increment-of-merged-branch-version: true
        track-merge-target: false
      hotfix:
        regex: (hotfix(es)?|config)[/-]
        mode: ContinuousDeployment
        tag: useBranchName
        increment: None
        prevent-increment-of-merged-branch-version: true
        track-merge-target: false
      pull-request:
        regex: (pull|pull\-requests|pr)[/-]
        mode: ContinuousDeployment
        tag: pr
        increment: None
        prevent-increment-of-merged-branch-version: true
        track-merge-target: false
    ignore:
      sha: []
    merge-message-formats: {}
    EOF
  name: Create GitVersion configuration file
  shell: bash

- name: Determine Version
  id: gitversion
  uses: gittools/actions/gitversion/execute@v0.9.7
  with:
    useConfigFile: true
    configFilePath: GitVersion.yml
    additionalArguments: '/showConfig'

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi