ci(release): confere as libs dentro da imagem e registra o digest - #25
Merged
Merged
Conversation
A v1.3.0 saiu com a lib de NFS-e oficial, sem os patches que o próprio release anexava, e passou pela fumaça: ela prova que a lib carrega, não qual lib é. E o make acbr-libs-baixar dava o cache por bom comparando com o SHA256SUMS local, que o acbr-extrair regera a partir do que extraiu, então um cache com a lib sem patch conferia consigo mesmo. scripts/conferir-libs-imagem.sh compara as cinco .so da imagem com o SHA256SUMS do release. Roda no publicar.yml e no release.yml, que não promove a imagem se divergir. O release.yml também confere que cada tag nova ficou no digest de origem e escreve nas notas o digest e o sha da lib de NFS-e. O download passa a validar o cache contra o SHA256SUMS do release. Sem acesso a ele, avisa e segue com o cache local.
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A imagem v1.3.0 saiu com a
libacbrnfse64.sooficial (bc72f0c2), sem os patches dedocker/acbr-patches/, enquanto o próprio release v1.3.0 anexava a versão patchada (ce5d5f94). Passou pela fumaça, porque ela prova que a lib carrega, não qual lib é.O cache local tinha o mesmo furo:
make acbr-libs-baixardava o cache por bom quando os arquivos batiam com oSHA256SUMSlocal, que oacbr-extrairregera a partir do que acabou de extrair. Um cache com a lib sem patch conferia consigo mesmo, e odocker-buildseguia com ela.Mudanças
scripts/conferir-libs-imagem.sh <imagem> [cache]compara as cinco.soem/usr/libda imagem com oSHA256SUMSdo cache.make imagem-libs-conferir IMAGEM=...roda o mesmo localmente.publicar.ymlroda a conferência depois da fumaça.release.ymlbaixa as libs doACBR_LIBS_RELEASEda tag e confere a imagem:<sha>antes de promover. Opublicar.ymlempurra a imagem antes de testá-la, e o release só sabia que ela existia.release.ymlconfere que:vX.Y.Z,:vXe:stableficaram no digest de:<sha>, e as notas passam a trazer o digest (imagem@sha256:..., para fixar no deploy) e o sha da lib de NFS-e.baixar-acbr-libs.shvalida o cache contra oSHA256SUMSdo release. Sem acesso ao release, avisa e segue com o cache local, como antes.Verificação
SHA256SUMSdo release v1.3.0: a:v1.3.1passa; a:v1.3.0falha comlibacbrnfse64.so na imagem é bc72f0c24967ca72, o release declara ce5d5f94068206e7.ce5d5f94); sem acesso ao release (avisa e usa o cache); diretório vazio (baixa). Cache inconsistente sem acesso falha, e revisão pinada diferente da do release também.release.ymlsimuladas só com leitura contra o registry::v1.3.1,:stablee:v1no digest de:9b39b23;:v1.3.0detectada como diferente.actionlint: nenhum erro. Dois avisosSC2016novos, nosprintfcom crase literal das notas, iguais aos que já existiam.shellchecklimpo nos dois scripts.make test,yaml-validaeopenapi-checkpassam.O que só o GitHub prova
Os workflows não rodam fora dele. O
publicar.ymlroda no merge deste PR, e a etapa nova deve passar, porque o runner baixa as libs do zero. Orelease.ymlsó roda na próxima tag.Fora deste PR
Os passos 5 a 7 de "Publicando uma revisão nova" em
docs/ACBRLIB.mddescrevem um fluxo que já não funciona: comACBR_LIBS_RELEASEapontando para um release ainda sem anexos, opublicar.ymldamainfalha e não há:<sha>para promover. A v1.3 precisou de duas versões por isso. Fica para o PR do bump para r48491, onde o fluxo vai ser exercitado.