release: 1.0.0 changelog and a job that creates the Gitea release
Release / Plano (reaproveitar a imagem?) (push) Successful in 5s
Release / ci (push) Skipped
Release / Publica a imagem (linux/arm64) (push) Successful in 17s
Release / Cria a release no Gitea (push) Successful in 4s

CHANGELOG.md in Portuguese, from the project history. The release job builds its
notes from the matching section. The new files are excluded from the image hash,
so the published image is reused. README points at the Gitea repository.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Lucas RayanandClaude Sonnet 5.5 committed 2026-10-30 12:39:22 -03:00
1 parent 111a81776c
commit b1a4f4263f
5 files changed
+132 -5

No files matched your search

+2 -2
View File
@@ -5,10 +5,10 @@ name: CI
# precisa ser reconstruída; rodar nos dois repetiria a mesma suíte no mesmo commit. # precisa ser reconstruída; rodar nos dois repetiria a mesma suíte no mesmo commit.
on: on:
pull_request: pull_request:
paths-ignore: ['**.md', 'LICENSE', '.claude/**', '.superset/**'] paths-ignore: ['**.md', 'LICENSE', '.claude/**', '.superset/**', '.wolf/**', 'scripts/release-notes.sh']
push: push:
branches-ignore: [main] branches-ignore: [main]
paths-ignore: ['**.md', 'LICENSE', '.claude/**', '.superset/**'] paths-ignore: ['**.md', 'LICENSE', '.claude/**', '.superset/**', '.wolf/**', 'scripts/release-notes.sh']
workflow_call: workflow_call:
permissions: permissions:
+28 -1
View File
@@ -36,7 +36,7 @@ jobs:
REPO: ${{ gitea.repository }} REPO: ${{ gitea.repository }}
run: | run: |
inputs=$(git ls-tree -r HEAD \ inputs=$(git ls-tree -r HEAD \
| awk -F'\t' '$2 !~ /^(\.gitea|\.github|\.claude|\.superset|docs)\// && $2 !~ /^(README.*|CLAUDE\.md|DESIGN\.md|LICENSE|\.gitignore)$/' \ | awk -F'\t' '$2 !~ /^(\.gitea|\.github|\.claude|\.superset|docs)\// && $2 !~ /^(README.*|CLAUDE\.md|DESIGN\.md|LICENSE|\.gitignore|CHANGELOG\.md|scripts\/release-notes\.sh)$/' \
| sha256sum | cut -c1-16) | sha256sum | cut -c1-16)
ns="${REPO,,}" ns="${REPO,,}"
token=$(curl -fsS "https://$REGISTRY/v2/token?service=container_registry&scope=repository:$ns:pull" | jq -r .token) token=$(curl -fsS "https://$REGISTRY/v2/token?service=container_registry&scope=repository:$ns:pull" | jq -r .token)
@@ -108,3 +108,30 @@ jobs:
run: | run: |
tags=$(jq -cr '.tags | map("-t " + .) | join(" ")' <<< '${{ steps.meta.outputs.json }}') tags=$(jq -cr '.tags | map("-t " + .) | join(" ")' <<< '${{ steps.meta.outputs.json }}')
docker buildx imagetools create $tags "${{ needs.plano.outputs.image }}:inputs-${{ needs.plano.outputs.inputs }}" docker buildx imagetools create $tags "${{ needs.plano.outputs.image }}:inputs-${{ needs.plano.outputs.inputs }}"
# Cria a entrada em "Releases" quando a execução é de uma tag v*. Roda depois
# de publicar a imagem, com as notas da seção do CHANGELOG.md.
release:
name: Cria a release no Gitea
needs: [plano, publicar]
# Explícito, como o publicar: o ci acima é pulado quando a imagem é
# reaproveitada, e o success() implícito pularia este job também.
if: ${{ !cancelled() && needs.publicar.result == 'success' && startsWith(gitea.ref, 'refs/tags/v') }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Release
env:
TAG: ${{ gitea.ref_name }}
TOKEN: ${{ gitea.token }}
API: ${{ gitea.server_url }}/api/v1/repos/${{ gitea.repository }}
IMAGE: ${{ needs.plano.outputs.image }}
run: |
scripts/release-notes.sh "$TAG" "$IMAGE" > notes.md
pre=false; case "$TAG" in *-*) pre=true ;; esac
jq -n --arg tag "$TAG" --arg name "ESPDocs ${TAG#v}" --rawfile body notes.md --argjson pre "$pre" \
'{tag_name:$tag, name:$name, body:$body, prerelease:$pre}' > release.json
curl -fsS -X POST "$API/releases" -H "Authorization: token $TOKEN" \
-H 'Content-Type: application/json' -d @release.json
+64
View File
@@ -0,0 +1,64 @@
# Registro de mudanças
Tudo o que muda de relevante no ESPDocs está aqui. O formato segue o
[Keep a Changelog](https://keepachangelog.com/pt-BR/1.1.0/) e o projeto segue o
[Versionamento Semântico](https://semver.org/lang/pt-BR/).
## [Não lançado]
## [1.0.0] - 2026-10-30
A primeira versão com tag. O trabalho anterior nunca foi tagueado, então esta
entrada resume tudo desde o primeiro commit, em 2025-10-21, até a imagem Docker.
### Conteúdo
- Documentação não oficial do ecossistema ESP32 em português: uma página por
série de chips, com especificações, conexões e consumo, e a página de comparação
lado a lado.
- Diagramas interativos de conexões e componentes, com o esquema de dados de
conexões padronizado.
- Frameworks documentados: ESP-IDF, Arduino, MicroPython, ESP-RainMaker e
ESP-Matter.
- Glossário técnico, página "Sobre" e chamadas para o catálogo.
- Catálogo de placas de desenvolvimento a partir de uma planilha do Google
(`/api/placas`), com filtros e cache de 10 minutos.
- Ferramenta de seleção: perguntas sobre o projeto (Ethernet, tela e outras) e
recomendação da série mais adequada.
- Novos modelos, incluindo o ESP32-H4, e a contagem de componentes e de drivers
(interface, conectividade e áudio) ampliada.
### Interface e acessibilidade
- Tema escuro e redesenho das páginas internas no novo sistema de design, com
contraste AAA e auditoria automática de temas e de páginas (`npm run check`).
- Identidade nova: logo, ícones, `manifest` e imagens Open Graph.
- SEO: mapa do site, dados estruturados, trilhas de navegação e favicons.
- Exportação do conteúdo em PDF CMYK e dos slides de treinamento em PDF 16:9,
gerados com Puppeteer (scripts locais).
### Dados corrigidos
- Revisão dos dados das séries contra os datasheets oficiais da Espressif:
consumo, temperatura, ADC, PSRAM, memória LP, CAN FD, frequências e versões de
Secure Boot do ESP32, S2, S3, C2, C3, C5, C6, C61, H2, H4, P4 e S31.
### Implantação
- Imagem Docker (`node:22-alpine`, build `standalone`, usuário sem privilégio,
`HEALTHCHECK`), pronta para o servidor Oracle, publicada para `linux/arm64` em
`git.lucasrguerra.dev.br/lucasrguerra/espdocs`. A variável `NEXT_OUTPUT=standalone`
liga o empacotamento só dentro da imagem; fora dela o build continua o mesmo
para o `pm2` (`start.config.js`, porta 3001).
- O código passou para o Gitea, com CI em `.gitea/workflows`: lint, auditorias,
Trivy no repositório e na imagem, e teste de que a imagem sobe e responde. O
Release reaproveita a imagem quando nada do que a compõe mudou.
### Segurança
- `next` 15.5.28, que corrige a execução remota de código sem autenticação na
otimização de imagens (GHSA-2464-fhr4-w9xw), e `postcss` fixado acima da cópia
embutida no `next`.
[Não lançado]: https://git.lucasrguerra.dev.br/lucasrguerra/ESPDocs/compare/v1.0.0...HEAD
[1.0.0]: https://git.lucasrguerra.dev.br/lucasrguerra/ESPDocs/releases/tag/v1.0.0
+2 -2
View File
@@ -21,7 +21,7 @@ Documentação não oficial completa do ecossistema ESP32 em português brasilei
```bash ```bash
# Clone o repositório # Clone o repositório
git clone https://github.com/lucasrguerra/ESPDocs.git git clone https://git.lucasrguerra.dev.br/lucasrguerra/ESPDocs.git
# Entre no diretório # Entre no diretório
cd ESPDocs cd ESPDocs
@@ -121,7 +121,7 @@ Este é um projeto de documentação não oficial e independente. Não possui ne
**Lucas Rayan Guerra** **Lucas Rayan Guerra**
- Website: [Ciência Embarcada](https://cienciaembarcada.com.br) - Website: [Ciência Embarcada](https://cienciaembarcada.com.br)
- GitHub: [@lucasrguerra](https://github.com/lucasrguerra) - Gitea: [@lucasrguerra](https://git.lucasrguerra.dev.br/lucasrguerra)
## 🤝 Contribuindo ## 🤝 Contribuindo
+36
View File
@@ -0,0 +1,36 @@
#!/usr/bin/env bash
# Imprime as notas de uma release: a imagem publicada e a seção do CHANGELOG.md
# daquela versão (ou o log de commits desde a tag anterior, se não houver seção).
#
# scripts/release-notes.sh v1.2.3 git.exemplo.com/dono/projeto
set -euo pipefail
tag=${1:?uso: release-notes.sh <tag> <imagem>}
image=${2:?uso: release-notes.sh <tag> <imagem>}
version=${tag#v}
echo "## Imagem"
echo
echo '```'
echo "$image:$version"
echo '```'
echo
section=""
if [ -f CHANGELOG.md ]; then
section=$(awk -v head="## [$version]" '
index($0, head) == 1 { found = 1; next }
found && /^## \[/ { exit }
found && /^\[[^]]+\]: / { next }
found { print }
' CHANGELOG.md)
fi
if [ -n "$(printf '%s' "$section" | tr -d '[:space:]')" ]; then
printf '%s\n' "$section"
else
previous=$(git describe --tags --abbrev=0 "$tag^" 2>/dev/null || true)
echo "## Mudanças${previous:+ desde $previous}"
echo
git log --no-merges --format='- %s (%h)' "${previous:+$previous..}$tag"
fi