From c33869be9f2570c8d2384474362c1b199d2c28bf Mon Sep 17 00:00:00 2001 From: vitor-aignosi Date: Wed, 22 Oct 2025 16:39:00 -0300 Subject: [PATCH] SIENTIAPDE-1327 SIENTIAPDE-1327: Replace existing release workflow with a template for improved maintainability and permissions --- .github/workflows/release.yml | 143 ++-------------------------------- 1 file changed, 6 insertions(+), 137 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f25ced6..3edd1c1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -7,140 +7,9 @@ on: - main jobs: - create-release: - if: github.event.pull_request.merged == true - runs-on: ubuntu-latest - - permissions: - contents: write - pull-requests: read - - steps: - - name: Checkout code - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: '3.11' - - - name: Install dependencies - run: | - python -m pip install --upgrade pip - pip install pyyaml pathspec - - - name: Get branch name - id: branch_name - run: | - # Obtém o nome da branch da PR - BRANCH_NAME=${GITHUB_HEAD_REF} - echo "Branch da PR: $BRANCH_NAME" - echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT - - - name: Determine next version - id: next_version - run: | - BRANCH_NAME=${{ steps.branch_name.outputs.branch_name }} - - # Baixa todas as tags - git fetch --tags - - # Pega a última tag sem filtro - LAST_TAG=$(git tag --sort=-v:refname | head -n1) - echo "Última tag encontrada: $LAST_TAG" - - # Se não houver tags, assume 0.0.0 - if [ -z "$LAST_TAG" ]; then - LAST_TAG="0.0.0" - fi - - # Extrai major, minor, patch - IFS='.' read -r MAJOR MINOR PATCH <<< "$LAST_TAG" - - echo "Versão atual: $MAJOR.$MINOR.$PATCH" - - # Incrementa conforme tipo de branch - if [[ "$BRANCH_NAME" == release/* ]]; then - NEW_MAJOR=$((MAJOR + 1)) - NEW_MINOR=0 - NEW_PATCH=0 - elif [[ "$BRANCH_NAME" == feature/* ]]; then - NEW_MAJOR=$MAJOR - NEW_MINOR=$((MINOR + 1)) - NEW_PATCH=0 - elif [[ "$BRANCH_NAME" == fix/* ]]; then - NEW_MAJOR=$MAJOR - NEW_MINOR=$MINOR - NEW_PATCH=$((PATCH + 1)) - else - echo "Tipo de branch desconhecido. Abortando." - exit 1 - fi - - NEXT_VERSION="${NEW_MAJOR}.${NEW_MINOR}.${NEW_PATCH}" - echo "Nova versão calculada: $NEXT_VERSION" - - echo "version=$NEXT_VERSION" >> $GITHUB_OUTPUT - - - name: Generate encrypted code - id: encrypt_code - run: | - VERSION="${{ steps.next_version.outputs.version }}" - OUTPUT_DIR="encrypted_release" - - # Create output directory - mkdir -p $OUTPUT_DIR - - # Run encrypt.py script - python encrypt.py . encrypted_code --ignore .gitignore --chunk-size 100000 - - # Move generated files to output directory - mv encrypted_code_*.yaml $OUTPUT_DIR/ 2>/dev/null || true - - # Create a zip file with the encrypted files - zip -r "sientia-opc-ingestor-${VERSION}-encrypted.zip" $OUTPUT_DIR/ - - echo "encrypted_zip=sientia-opc-ingestor-${VERSION}-encrypted.zip" >> $GITHUB_OUTPUT - echo "encrypted_dir=$OUTPUT_DIR" >> $GITHUB_OUTPUT - - - name: Create GitHub Release via API - uses: actions/github-script@v7 - with: - script: | - const { repo, owner } = context.repo; - const version = "${{ steps.next_version.outputs.version }}"; - const branch = "main"; - const encryptedZip = "${{ steps.encrypt_code.outputs.encrypted_zip }}"; - - console.log(`Criando release para a tag: ${version} a partir da branch ${branch}`); - console.log(`Arquivo zip criptografado: ${encryptedZip}`); - - // Read the encrypted zip file - const fs = require('fs'); - const zipContent = fs.readFileSync(encryptedZip); - - const response = await github.rest.repos.createRelease({ - owner, - repo, - tag_name: version, - name: `${version}`, - target_commitish: branch, - generate_release_notes: true - }); - - // Upload the encrypted zip as an asset - await github.rest.repos.uploadReleaseAsset({ - owner, - repo, - release_id: response.data.id, - name: encryptedZip, - data: zipContent, - headers: { - 'content-type': 'application/zip' - } - }); - - console.log(`Release criada com sucesso! URL: ${response.data.html_url}`); - console.log(`Arquivo criptografado anexado: ${encryptedZip}`); + release: + uses: Aignosi/github_workflow_templates/.github/workflows/dataops-module-release.yml@main + permissions: write-all + with: + project_name: 'ingestor' + secrets: inherit \ No newline at end of file