forked from stevoscriptsteam/stevo_citizenship
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' of https://github.com/mri-Qbox-Brasil/stevo_citiz…
- Loading branch information
Showing
4 changed files
with
356 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,179 @@ | ||
name: Build and Release | ||
|
||
on: | ||
push: | ||
tags: | ||
- "v*.*.*" | ||
|
||
permissions: | ||
contents: write | ||
actions: write | ||
|
||
jobs: | ||
build_and_release: | ||
runs-on: ubuntu-latest | ||
outputs: | ||
version: ${{ steps.get_project_information.outputs.version }} | ||
release_body: ${{ steps.prepare_release_body.outputs.body }} | ||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v4 | ||
|
||
# - name: Set up Node.js | ||
# uses: actions/setup-node@v4 | ||
# with: | ||
# node-version: "16" | ||
|
||
# - name: Install dependencies | ||
# working-directory: ./src | ||
# run: | | ||
# sudo apt install -y jq | ||
# npm install | ||
|
||
# - name: Build project | ||
# working-directory: ./src | ||
# run: | | ||
# npm run build | ||
# if [ $? -ne 0 ]; then | ||
# echo "Erro na compilação" | ||
# exit 1 | ||
# fi | ||
|
||
- name: Get commit messages, version, and repository description | ||
id: get_project_information | ||
run: | | ||
LAST_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "") | ||
CURRENT_TAG="${GITHUB_REF#refs/tags/}" | ||
if [ -n "$LAST_TAG" ]; then | ||
COMMITS=$(git log $LAST_TAG..$GITHUB_SHA --oneline --pretty=format:"%h %s") | ||
else | ||
echo "Nenhuma tag anterior encontrada. Coletando todos os commits até a tag atual." | ||
COMMITS=$(git log --oneline --pretty=format:"%h %s") | ||
fi | ||
if [ -z "$COMMITS" ]; then | ||
echo "Nenhuma mudança significativa desde a última release." > ./release_body.txt | ||
else | ||
echo "$COMMITS" > ./release_body.txt | ||
fi | ||
echo "version=$CURRENT_TAG" >> $GITHUB_OUTPUT | ||
- name: Prepare release body | ||
id: prepare_release_body | ||
run: | | ||
if [ -f release_body.txt ]; then | ||
RELEASE_NOTES=$(head -n 1900 release_body.txt) | ||
echo "body=$RELEASE_NOTES" >> $GITHUB_OUTPUT | ||
else | ||
echo "Arquivo release_body.txt não encontrado!" | ||
echo "body=Nenhuma nota de release disponível." >> $GITHUB_OUTPUT | ||
fi | ||
- name: Update manifest data | ||
run: | | ||
if [ -f fxmanifest.lua ]; then | ||
REPO_DESCRIPTION=$(curl -s https://api.github.com/repos/${{ github.repository }} | jq -r .description) | ||
sed -i "s/MRIQBOX_VERSION/${{ steps.get_project_information.outputs.version }}/g" fxmanifest.lua | ||
else | ||
echo "Arquivo fxmanifest.lua não encontrado!" | ||
exit 1 | ||
fi | ||
- name: Create ZIP file | ||
run: | | ||
mkdir -p "${{ github.event.repository.name }}" | ||
rsync -av \ | ||
--exclude='src/' \ | ||
--exclude='.github/' \ | ||
--exclude='.git/' \ | ||
--exclude='*.txt' \ | ||
--exclude='*.lock' \ | ||
--exclude='.gitignore' \ | ||
--exclude='.editorconfig' \ | ||
--exclude='*.sh' \ | ||
--exclude='*.bat' \ | ||
--exclude='${{ github.event.repository.name }}' \ | ||
./ "${{ github.event.repository.name }}/" | ||
zip -r --symlinks "${{ github.event.repository.name }}.zip" "${{ github.event.repository.name }}" | ||
- name: Generate Release | ||
uses: comnoco/create-release-action@v2 | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
id: release | ||
with: | ||
tag_name: "${{ steps.get_project_information.outputs.version }}" | ||
release_name: "${{ steps.get_project_information.outputs.version }}" | ||
body_path: release_body.txt | ||
draft: false | ||
prerelease: false | ||
|
||
- name: Upload artifacts | ||
uses: shogo82148/[email protected] | ||
with: | ||
upload_url: ${{ steps.release.outputs.upload_url }} | ||
asset_path: ${{ github.event.repository.name }}.zip | ||
|
||
post_to_discord: | ||
needs: build_and_release | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Post to Discord (with embed) | ||
env: | ||
DISCORD_WEBHOOK_URL: ${{ secrets.UPDATE_DISCORD_WEBHOOK }} | ||
RELEASE_URL: https://github.com/${{ github.repository }}/releases/tag/${{ github.ref_name }} | ||
RELEASE_TAG: ${{ github.ref_name }} | ||
RELEASE_AUTHOR: ${{ github.actor }} | ||
RELEASE_BODY: ${{ needs.build_and_release.outputs.release_body }} | ||
run: | | ||
REPO_DESCRIPTION=$(curl -s https://api.github.com/repos/${{ github.repository }} | jq -r .description) | ||
EMBED_DATA='{ | ||
"embeds": [{ | ||
"author": { | ||
"name": "MRI QBOX - Updates", | ||
"icon_url": "${{ secrets.LOGO_MRIQBOX_URL }}" | ||
}, | ||
"title": "[${{ github.event.repository.name }}] Nova versão disponível: '"${RELEASE_TAG}"'", | ||
"url": "'"${RELEASE_URL}"'", | ||
"description": "'"${REPO_DESCRIPTION}"'", | ||
"fields": [{ | ||
"name": "O que há de novo?", | ||
"value": "'"${RELEASE_BODY}"'" | ||
}, | ||
{ | ||
"name": "Veja todas as mudanças", | ||
"value": "[Veja todas as mudanças aqui](https://github.com/${{ github.repository }}/commits/${{ github.ref_name }})" | ||
}, | ||
{ | ||
"name": "Precisa de ajuda?", | ||
"value": "[Participe da comunidade](${{ secrets.INVITE_DISCORD_URL}})", | ||
"inline": true | ||
}, | ||
{ | ||
"name": "Documentação", | ||
"value": "[Acesse aqui](${{ secrets.DOCS_MRIQBOX_URL }})", | ||
"inline": true | ||
}], | ||
"image": { | ||
"url": "${{ secrets.RESOURCE_MRIQBOX_URL }}" | ||
}, | ||
"color": 4243543, | ||
"footer": { | ||
"text": "Realizado por: '"${RELEASE_AUTHOR}"'", | ||
"icon_url": "${{ secrets.LOGO_MRIQBOX_URL }}" | ||
}, | ||
"timestamp": "'"$(date --utc +%Y-%m-%dT%H:%M:%SZ)"'" | ||
}] | ||
}' | ||
if [ -z "$DISCORD_WEBHOOK_URL" ] || [ -z "$RELEASE_URL" ] || [ -z "$RELEASE_TAG" ]; then | ||
echo "Algumas variáveis obrigatórias estão ausentes. Não será possível enviar o webhook." | ||
exit 1 | ||
fi | ||
curl -H "Content-Type: application/json" \ | ||
-d "$EMBED_DATA" \ | ||
$DISCORD_WEBHOOK_URL |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
@echo off | ||
setlocal enabledelayedexpansion | ||
|
||
git fetch --all --tags | ||
|
||
:: Função para encontrar a branch principal automaticamente (main ou master) | ||
set "main_branch=" | ||
call :get_main_branch | ||
if "%main_branch%"=="" ( | ||
echo Erro: Nao foi possivel detectar a branch principal. Certifique-se de que voce esta no diretorio correto do repositorio Git. | ||
exit /b 1 | ||
) | ||
|
||
echo Branch principal detectada: %main_branch% | ||
|
||
:: Função para obter a última tag e sugerir a próxima versão | ||
set "last_tag=" | ||
call :get_last_tag | ||
if "%last_tag%"=="" ( | ||
echo Nenhuma tag encontrada. Sugerindo v1.0.0 como primeira tag. | ||
set "next_version=v1.0.0" | ||
) else ( | ||
for /f "tokens=1-3 delims=." %%a in ("%last_tag:v=%") do ( | ||
set /a patch=%%c + 1 | ||
set "next_version=v%%a.%%b.!patch!" | ||
) | ||
) | ||
|
||
echo Ultima versao: %last_tag% | ||
|
||
:: Solicita ao usuário a versão ou usa a sugestão | ||
set /p "tag_version=Digite a versao da tag (%next_version%): " | ||
if "%tag_version%"=="" set "tag_version=%next_version%" | ||
|
||
:: Captura do cancelamento | ||
call :check_cancel | ||
|
||
echo Criando tag %tag_version% na branch '%main_branch%' e enviando para o GitHub... | ||
|
||
:: Cria a tag | ||
git tag "%tag_version%" "%main_branch%" | ||
if errorlevel 1 ( | ||
echo Erro: Falha ao criar a tag %tag_version%. Verifique se a tag ja existe ou se voce tem permissoes adequadas. | ||
exit /b 1 | ||
) | ||
|
||
:: Envia a tag para o repositório | ||
git push origin "%tag_version%" | ||
if errorlevel 1 ( | ||
echo Erro: Falha ao enviar a tag %tag_version% para o GitHub. Verifique sua conexao e permissoes. | ||
exit /b 1 | ||
) | ||
|
||
echo Tag %tag_version% criada e enviada com sucesso a partir da branch '%main_branch%'! | ||
goto :eof | ||
|
||
:get_main_branch | ||
:: Obtém a branch principal (main ou master) | ||
for /f "delims=" %%i in ('git symbolic-ref refs/remotes/origin/HEAD ^| findstr /r /v "^$" 2^>nul') do ( | ||
set "main_branch=%%i" | ||
) | ||
set "main_branch=%main_branch:refs/remotes/origin/=%" | ||
exit /b | ||
|
||
:get_last_tag | ||
:: Obtém a última tag criada no repositório | ||
for /f "delims=" %%i in ('git describe --tags --abbrev=0 2^>nul') do ( | ||
set "last_tag=%%i" | ||
) | ||
|
||
:: Verificação alternativa caso a última tag não seja encontrada | ||
if "%last_tag%"=="" ( | ||
for /f "delims=" %%j in ('git tag --sort=-v:refname ^| findstr /r /v "^$" 2^>nul') do ( | ||
set "last_tag=%%j" | ||
goto :eof | ||
) | ||
) | ||
|
||
|
||
:check_cancel | ||
:: Pergunta ao usuário para confirmar ou cancelar | ||
choice /c SN /n /m "Continuar gerando? S = Sim, N = Nao" | ||
echo ErrorLevel retornado: %errorlevel% | ||
|
||
:: Verifique o valor de errorlevel para C ou Y | ||
if %errorlevel%==1 ( | ||
echo Continuando com a operacao... | ||
) else if %errorlevel%==2 ( | ||
echo Operacao cancelada pelo usuario. | ||
exit | ||
) | ||
|
||
exit /b |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
#!/bin/bash | ||
|
||
git fetch --all --tags | ||
|
||
# Função para encontrar a branch principal automaticamente (main ou master) | ||
get_main_branch() { | ||
main_branch=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@') | ||
|
||
# Verifica se a branch principal foi detectada | ||
if [[ -z "$main_branch" ]]; then | ||
echo "Erro: Nao foi possivel detectar a branch principal. Certifique-se de que voce esta no diretorio correto do repositorio Git." | ||
exit 1 | ||
fi | ||
|
||
echo "$main_branch" | ||
} | ||
|
||
# Função para obter a última tag e sugerir a próxima versão | ||
suggest_next_version() { | ||
if [[ -z "$last_tag" ]]; then | ||
next_version="v1.0.0" | ||
else | ||
# Extrai a versão e sugere a próxima, incrementando o último dígito | ||
IFS='.' read -r major minor patch <<< "${last_tag//v/}" | ||
next_version="v$major.$minor.$((patch + 1))" | ||
fi | ||
echo "$next_version" | ||
} | ||
|
||
# Obtém a branch principal | ||
main_branch=$(get_main_branch) | ||
echo "Branch principal detectada: $main_branch" | ||
|
||
# Busca a última tag válida no repositório | ||
last_tag=$(git tag --sort=-v:refname | head -n 1) | ||
if [[ -z "$last_tag" ]]; then | ||
echo "Nenhuma tag encontrada. Sugerindo v1.0.0 como primeira tag." | ||
next_version="v1.0.0" | ||
else | ||
next_version=$(suggest_next_version) | ||
fi | ||
|
||
echo "Ultima versao: ${last_tag:-Nenhuma}" | ||
|
||
# Solicita ao usuário a versão ou usa a sugestão | ||
read -p "Digite a versao da tag ($next_version): " tag_version | ||
tag_version=${tag_version:-$next_version} | ||
|
||
# Confirmação para continuar ou cancelar | ||
while true; do | ||
read -p "Deseja continuar criando a tag $tag_version? (S = Sim, N = Não): " confirmacao | ||
case $confirmacao in | ||
[Ss]* ) | ||
echo "Continuando com a operação..." | ||
break | ||
;; | ||
[Nn]* ) | ||
echo "Operação cancelada pelo usuário." | ||
exit 0 | ||
;; | ||
* ) | ||
echo "Por favor, responda com 'S' para Sim ou 'N' para Não." | ||
;; | ||
esac | ||
done | ||
|
||
# Criando a tag | ||
echo "Criando tag $tag_version na branch '$main_branch' e enviando para o GitHub..." | ||
git tag "$tag_version" "$main_branch" | ||
if [[ $? -ne 0 ]]; then | ||
echo "Erro: Falha ao criar a tag $tag_version. Verifique se a tag ja existe ou se você tem permissões adequadas." | ||
exit 1 | ||
fi | ||
|
||
# Envia a tag para o repositório | ||
git push origin "$tag_version" | ||
if [[ $? -ne 0 ]]; then | ||
echo "Erro: Falha ao enviar a tag $tag_version para o GitHub. Verifique sua conexão e permissões." | ||
exit 1 | ||
fi | ||
|
||
echo "Tag $tag_version criada e enviada com sucesso a partir da branch '$main_branch'!" |