diff --git a/.github/workflows/nuget-publish.yml b/.github/workflows/nuget-publish.yml new file mode 100644 index 000000000..cd08a6e4e --- /dev/null +++ b/.github/workflows/nuget-publish.yml @@ -0,0 +1,99 @@ +name: Publish NuGet + +# Empacota e publica os 6 projetos NFe/DFe netstandard como pacotes NuGet +# em GitHub Packages (feed da org nfe). +# +# Triggers: +# - push de tag v* → release versionada (pega a versão da tag) +# - workflow_dispatch → execução manual para testes (versão informada +# como input ou fallback 0.0.0-manual.{run_number}) +# +# Pré-requisitos no consumidor: +# 1. nuget.config com source apontando para https://nuget.pkg.github.com/nfe/index.json +# 2. PAT com escopo read:packages adicionado como secret/login NuGet +# +# Pacotes publicados: NFEio.DFe.Classes, NFEio.DFe.Utils, NFEio.NFe.Classes, +# NFEio.NFe.Servicos, NFEio.NFe.Utils, NFEio.NFe.Wsdl. + +on: + push: + tags: + - 'v*' + workflow_dispatch: + inputs: + version: + description: 'Versão a publicar (ex: 1.0.0-rc.1). Vazio = 0.0.0-manual.{run_number}' + required: false + type: string + +permissions: + contents: read + packages: write + +jobs: + pack-and-publish: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup .NET + uses: actions/setup-dotnet@v4 + with: + dotnet-version: '8.0.x' + + - name: Resolve version + id: version + run: | + if [[ "${{ github.event_name }}" == "push" ]]; then + # tag refs/tags/vX.Y.Z → X.Y.Z + VERSION="${GITHUB_REF_NAME#v}" + elif [[ -n "${{ inputs.version }}" ]]; then + VERSION="${{ inputs.version }}" + else + VERSION="0.0.0-manual.${{ github.run_number }}" + fi + echo "version=$VERSION" >> "$GITHUB_OUTPUT" + echo "Resolved version: $VERSION" + + - name: Pack projects + run: | + for proj in DFe.Classes DFe.Utils NFe.Classes NFe.Servicos NFe.Utils NFe.Wsdl; do + echo "::group::Pack $proj" + dotnet pack "$proj/$proj.csproj" \ + --configuration Release \ + --output ./artifacts \ + -p:Version=${{ steps.version.outputs.version }} + echo "::endgroup::" + done + + - name: List artifacts + run: ls -la ./artifacts + + - name: Push packages (.nupkg) to GitHub Packages + run: | + dotnet nuget push './artifacts/*.nupkg' \ + --source https://nuget.pkg.github.com/nfe/index.json \ + --api-key ${{ secrets.GITHUB_TOKEN }} \ + --skip-duplicate + + # Symbol packages (.snupkg) precisam de push separado — o glob *.nupkg + # acima não os captura, e o Directory.Build.props declara IncludeSymbols + # com SymbolPackageFormat=snupkg. Sem este passo os consumidores não + # conseguem PDBs nem SourceLink (debugging quebrado). GitHub Packages + # suporta .snupkg desde 2020. + - name: Push symbol packages (.snupkg) to GitHub Packages + run: | + dotnet nuget push './artifacts/*.snupkg' \ + --source https://nuget.pkg.github.com/nfe/index.json \ + --api-key ${{ secrets.GITHUB_TOKEN }} \ + --skip-duplicate + + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: nuget-packages-${{ steps.version.outputs.version }} + path: ./artifacts/*.*nupkg + retention-days: 30 diff --git a/DFe.Classes/DFe.Classes.csproj b/DFe.Classes/DFe.Classes.csproj index 1428fa849..44d4808b2 100644 --- a/DFe.Classes/DFe.Classes.csproj +++ b/DFe.Classes/DFe.Classes.csproj @@ -6,6 +6,8 @@ DFe.Classes DFe.Classes false + NFEio.DFe.Classes + Classes compartilhadas entre os projetos DFe (NFe, NFCe, CTe, MDFe) do fork NFE.io de Zeus.Net.NFe.NFCe. Inclui tipos básicos, entidades de domínio e flags. diff --git a/DFe.Utils/DFe.Utils.csproj b/DFe.Utils/DFe.Utils.csproj index 1bccc523c..6d25a94b0 100644 --- a/DFe.Utils/DFe.Utils.csproj +++ b/DFe.Utils/DFe.Utils.csproj @@ -6,6 +6,8 @@ DFe.Utils DFe.Utils false + NFEio.DFe.Utils + Utilitários compartilhados entre os projetos DFe (NFe, NFCe, CTe, MDFe) do fork NFE.io de Zeus.Net.NFe.NFCe. Inclui assinatura digital, extensões de tipos e helpers de serialização XML. diff --git a/Directory.Build.props b/Directory.Build.props new file mode 100644 index 000000000..c2a64e93a --- /dev/null +++ b/Directory.Build.props @@ -0,0 +1,41 @@ + + + + + 1.0.0-local + NFE.io + NFE.io + Copyright (c) NFE.io e contribuidores Zeus (Zeusdev Tecnologia LTDA) + LGPL-2.1-or-later + https://github.com/nfe/DFe.NET + https://github.com/nfe/DFe.NET + git + nfe;nfce;sefaz;dfe;rtc;reforma-tributaria;nfeio + true + snupkg + true + true + README.md + + + + + + + + diff --git a/NFe.Classes/NFe.Classes.csproj b/NFe.Classes/NFe.Classes.csproj index d35ab7e2c..9b2b30307 100644 --- a/NFe.Classes/NFe.Classes.csproj +++ b/NFe.Classes/NFe.Classes.csproj @@ -6,6 +6,8 @@ NFe.Classes NFe.Classes false + NFEio.NFe.Classes + Classes de domínio para Nota Fiscal Eletrônica (NFe) e Nota Fiscal de Consumidor Eletrônica (NFCe) — fork NFE.io de Zeus.Net.NFe.NFCe. Inclui leiaute completo NFe v4.00, eventos da NT 2025.002-RTC (211110-150, 212110-120, 412120-130, 110001), tipos do IBS/CBS/IS, e classes de DistribuicaoDFe. diff --git a/NFe.Servicos/NFe.Servicos.csproj b/NFe.Servicos/NFe.Servicos.csproj index 2ffce9355..55df134cf 100644 --- a/NFe.Servicos/NFe.Servicos.csproj +++ b/NFe.Servicos/NFe.Servicos.csproj @@ -5,6 +5,8 @@ NFe.Servicos NFe.Servicos false + NFEio.NFe.Servicos + Camada de serviços para invocar webservices SEFAZ da NFe/NFCe — fork NFE.io de Zeus.Net.NFe.NFCe. Expõe ServicosNFe com métodos RecepcaoEvento para os 17 eventos da NT 2025.002-RTC (Crédito Presumido, Imobilização, Consumo Pessoal, Manifestações IBS/CBS de Sucessão, etc.), além dos eventos legacy (Manifestação Destinatário 21020X, Carta de Correção, Cancelamento). diff --git a/NFe.Utils/NFe.Utils.csproj b/NFe.Utils/NFe.Utils.csproj index e3c97646b..f840e7500 100644 --- a/NFe.Utils/NFe.Utils.csproj +++ b/NFe.Utils/NFe.Utils.csproj @@ -6,6 +6,8 @@ NFe.Utils NFe.Utils false + NFEio.NFe.Utils + Utilitários para o leiaute da NFe/NFCe — fork NFE.io de Zeus.Net.NFe.NFCe. Inclui Validador (com mappings XSD da NT 2025.002-RTC), Enderecador (URLs SVRS prod/hom), assinatura digital, conversões de tipos e extensões. diff --git a/NFe.Wsdl/NFe.Wsdl.csproj b/NFe.Wsdl/NFe.Wsdl.csproj index 3aa764c0c..498415490 100644 --- a/NFe.Wsdl/NFe.Wsdl.csproj +++ b/NFe.Wsdl/NFe.Wsdl.csproj @@ -5,6 +5,8 @@ NFe.Wsdl NFe.Wsdl false + NFEio.NFe.Wsdl + Contratos WSDL e clientes SOAP para os webservices da NFe/NFCe — fork NFE.io de Zeus.Net.NFe.NFCe. Cobre NfeAutorizacao4, NfeRetAutorizacao4, NfeStatusServico4, NfeConsultaProtocolo4, NfeConsultaCadastro4, NFeRecepcaoEvento4, NFeInutilizacao4, NFeDistribuicaoDFe e variantes estaduais.