Skip to content

Commit

Permalink
Merge pull request #201 from totvs/estudo_versao_main
Browse files Browse the repository at this point in the history
Estudo versao main
  • Loading branch information
deyvidtotvs authored Dec 27, 2024
2 parents 16e2bdd + 3c202c2 commit f1a0528
Show file tree
Hide file tree
Showing 8 changed files with 601 additions and 53 deletions.
81 changes: 81 additions & 0 deletions .github/workflows/atualizar-versao-cada-layout.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: Atualizar Versão de Cada Layout
on:
workflow_run:
workflows: ["Criar Tag e Release"] # Espera a execução do workflow "Criar Tag e Release"
types: [completed] # Executa quando o workflow "Criar Tag e Release" for completado (independentemente de sucesso ou falha)

permissions:
contents: read # Permite ao GITHUB_TOKEN fazer push para o repositório

jobs:
executa-script-py:
runs-on: ubuntu-latest
steps:

- uses: actions/checkout@v3

- name: Set up Python environment
uses: actions/setup-python@v3
with:
python-version: '3.x' # Especifica a versão do Python que você deseja

- name: Install gitpython
run: |
pip install gitpython
- name: Configurar o token do GitHub CLI
run: |
echo "GITHUB_TOKEN=${{ secrets.GH_TOKEN }}" >> $GITHUB_ENV
- name: Listar todas as execuções de workflows
run: |
gh run list --repo deyvidksc/winthor-smart-hub-layouts # Lista todas as execuções de workflow no repositório
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} # Usando o token correto para autenticação

- name: Listar todas as execuções de workflows e extrair o nome da branch
run: |
# Lista todas as execuções de workflow no repositório, filtrando pelo nome do workflow e pelo status de sucesso
# workflow_runs=$(gh run list --repo ${{ github.repository }} --workflow "Criar Artefato com Nome da Branch" --json headBranch,status,conclusion -q 'map(select(.status == "completed" and .conclusion == "success")) | .[].headBranch' | sort -u | head -n 1)
# workflow_runs=$(gh run list --repo ${{ github.repository }} --workflow "Criar Artefato com Nome da Branch" --json headBranch,status,conclusion -q 'map(select(.status == "completed" and .conclusion == "success")) | .[].headBranch | unique | sort | last')
workflow_runs=$(gh run list --repo ${{ github.repository }} --workflow "Criar Artefato com Nome da Branch" --json headBranch,status,conclusion -q 'map(select(.status == "completed" and .conclusion == "success")) | .[].headBranch' | sort | tail -n 1)
# Exibe o resultado da lista para debug
echo "Execuções de workflow 'Criar Artefato com Nome da Branch' bem-sucedidas encontradas: $workflow_runs"
# Verifica se a variável workflow_runs contém algum valor
if [ -z "$workflow_runs" ]; then
echo "Nenhuma execução bem-sucedida do workflow 'Criar Artefato com Nome da Branch' foi encontrada."
exit 1
fi
# Agora, BRANCH_ORIGEM será o valor de workflow_runs (que é o nome da branch)
BRANCH_ORIGEM=$workflow_runs
# Exibe o nome da branch extraído
echo "Nome da branch extraído: $BRANCH_ORIGEM"
# Exporta BRANCH_ORIGEM como variável de ambiente para ser usado nas próximas etapas
echo "BRANCH_ORIGEM=$BRANCH_ORIGEM" >> $GITHUB_ENV
# Determinando a branch base
if [ -n "${{ github.event.pull_request }}" ]; then
# Se for um PR, usamos o base ref (branch de destino do PR)
BRANCH_DESTINO="${{ github.base_ref }}"
else
# Se não for PR, define a branch destino para uma valor fixo ou usa a branch de onde o workflow foi executado
BRANCH_DESTINO=${GITHUB_REF##*/}
fi
echo "BRANCH_DESTINO=$BRANCH_DESTINO" >> $GITHUB_ENV
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} # Usando o token correto para autenticação

- name: Run script atualizar-versao-cada-layout
run: |
echo "Passando parâmetros para o script Python:"
echo "Token: ${{ secrets.GH_TOKEN }}"
echo "Branch de Origem: $BRANCH_ORIGEM"
echo "Branch de Destino: $BRANCH_DESTINO"
python scripts/atualizar-versao-cada-layout.py ${{ secrets.GH_TOKEN }} $BRANCH_ORIGEM $BRANCH_DESTINO
27 changes: 27 additions & 0 deletions .github/workflows/criar-artefato-nome-branch.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Criar Artefato com Nome da Branch
on:
pull_request:
types:
- closed
branches:
- main
- develop # ou qualquer outra branch de interesse

jobs:
cria-artefato:
runs-on: ubuntu-latest
steps:
- name: Checkout do código
uses: actions/checkout@v3

- name: Criar diretório temporário
run: mkdir -p temp/ # Cria o diretório temp se não existir

- name: Criar arquivo com o nome da branch
run: echo "${{ github.event.pull_request.head.ref }}" > "temp/branch-name.txt" # Grava o nome da branch no arquivo dentro do diretório temp

- name: Fazer upload do artefato
uses: actions/upload-artifact@v4
with:
name: branch-name-artifact # Nome do artefato
path: "temp/branch-name.txt" # Caminho do arquivo a ser enviado como artefato
108 changes: 108 additions & 0 deletions .github/workflows/criar-tag-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
name: Criar Tag e Release
on:
workflow_run:
workflows: ["Criar Artefato com Nome da Branch"] # Espera a execução do workflow "Criar Tag e Release"
types: [completed] # Executa quando o workflow "Criar Tag e Release" for completado (independentemente de sucesso ou falha)

#pull_request:
#types:
#- closed
#branches:
#- main
#- develop

permissions:
contents: write # Permite ao GITHUB_TOKEN fazer push para o repositório

jobs:
cria-tag-release-on-push:
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} # Use o token correto aqui
steps:
- name: Checkout do código
uses: actions/checkout@v3

- name: Ler versão atual
id: read_version
run: |
VERSION_FILE="version.txt"
if [[ -f "$VERSION_FILE" ]]; then
VERSION=$(cat $VERSION_FILE)
else
VERSION="1.0.0.0" # Caso o arquivo de versão não exista, começar com a versão inicial
fi
echo "VERSAO_ATUAL=$VERSION" >> $GITHUB_ENV
- name: Incrementar versão
id: increment_version
run: |
VERSION=${{ env.VERSAO_ATUAL }}
BRANCH_NAME=${GITHUB_REF#refs/heads/}
# Extrair os 4 componentes da versão
IFS='.' read -r -a version_parts <<< "$VERSION"
# Se a versão tem 4 componentes (major.minor.patch.build), processa
if [ ${#version_parts[@]} -eq 4 ]; then
major=${version_parts[0]}
minor=${version_parts[1]}
patch=${version_parts[2]}
build=${version_parts[3]}
else
echo "A versão não está no formato esperado (major.minor.patch.build)."
exit 1
fi
# Incrementa com base na branch
if [[ "$BRANCH_NAME" == "main" ]]; then
# Para main, incrementa o build
build=$((build + 1))
elif [[ "$BRANCH_NAME" == "develop" ]]; then
# Para develop, incrementa o patch e o build é resetado para 1
patch=$((patch + 1))
build=1
else
echo "Branch não reconhecida para incremento de versão."
exit 1
fi
# Cria a nova versão
NEW_VERSION="${major}.${minor}.${patch}.${build}"
echo "Nova versão: $NEW_VERSION"
echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV
- name: Atualizar o arquivo de versão
run: |
echo ${{ env.NEW_VERSION }} > version.txt
git config --global user.name "GitHub Actions"
git config --global user.email "actions@github.com"
git add version.txt
git commit -m "Atualizando versão para ${{ env.NEW_VERSION }}"
git push origin ${{ github.ref }}
- name: Criar Tag com a versão
run: |
# Criar uma tag usando a versão gerada
git tag "v${{ env.NEW_VERSION }}"
git push origin "v${{ env.NEW_VERSION }}" --force
- name: Gerar Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
use_github_release_notes: true
tag_name: ${{ env.NEW_VERSION }}
release_name: Release ${{ env.NEW_VERSION }}
draft: false
prerelease: false


# - name: Gerar Release
# uses: rymndhng/release-on-push-action@master
# with:
# use_github_release_notes: true
# tag_prefix: ""
# release_name: ${{ env.NEW_VERSION }}
28 changes: 28 additions & 0 deletions .github/workflows/validar-todos-arquivos-json.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: Validar todos Arquivos JSON

on:
pull_request:
types: [opened, synchronize, reopened] # Este evento dispara quando o PR é aberto, sincronizado ou reaberto
jobs:
validate-json:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v2

- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14'

- name: Install jq
run: sudo apt-get install jq

- name: Validate JSON files
run: |
# Encontra todos os arquivos JSON e os valida
find . -type f -name '*.json' -print0 | while IFS= read -r -d '' file; do
echo "Validating $file"
jq empty "$file" || { echo "Invalid JSON: $file"; exit 1; }
done
53 changes: 0 additions & 53 deletions .github/workflows/validate-json.yml

This file was deleted.

4 changes: 4 additions & 0 deletions pdvsync/versao.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"projeto": "pdvsync",
"versao": "1.35.0.165"
}
Loading

0 comments on commit f1a0528

Please sign in to comment.