Release verification

Releases of log4net can be verified with following steps:

Windows

  1. Prerequisites (winget - in case of problems see next section choco)

    winget install -e --id GnuPG.Gpg4win
    winget install -e --id Slik.Subversion  # or any other subversion client
    winget install -e --id Mono.Mono
    winget install -e --id Microsoft.DotNet.SDK.8

    After installation, verify that gpg and svn are in the path and add them when not.

  2. Prerequisites (choco - only in case of problems with winget)

    Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
    choco install gpg4win
    choco install sliksvn  # or any other subversion client
    choco install mono
    choco install dotnet-8.0-sdk
  3. Check out the release distribution

    svn co https://dist.apache.org/repos/dist/dev/logging/log4net/{releaseVersion} log4net-{releaseVersion}
    pushd log4net-{releaseVersion}
  4. Verify and extract

    & ./verify-release.ps1
  5. switch to the directory where you extracted the sources (in case you didn’t use verify-release.ps1)

  6. Verify the build

    dotnet test ./src/log4net.sln

Linux

  1. Check out the release distribution:

    export releaseVersion=...
    svn co https://dist.apache.org/repos/dist/dev/logging/log4net/$releaseVersion \
      log4net-$releaseVersion && cd $_
    Click to see how to check out using wget instead of svn
    mkdir log4net-$releaseVersion> && cd $_
    wget --cut-dirs=6 \
         --no-host-directories \
         --no-parent \
         --recursive \
         https://dist.apache.org/repos/dist/dev/logging/log4net/$releaseVersion/
  2. Verify and extract

    & ./verify-release.sh
    Click to see how todo these steps manually
    1. Verify checksums:

      sha512sum --check *.sha512
    2. Import the release manager GPG keys, unless you haven’t earlier done so:

      wget -O - https://downloads.apache.org/logging/KEYS | gpg --import
    3. Verify signatures:

      for sigFile in *.asc; do gpg --verify $sigFile ${sigFile%.asc}; done
    4. Extract sources:

      umask 0022
      unzip -q *source*.zip -d src
      cd src
  3. Verify the build (install docker, if you haven’t already):

    docker build -t log4net-builder .
    docker run -it log4net-builder
    # this will
    # - install all dependencies in the container
    # - build src/log4net.sln
    # inside the container run
    dotnet test /logging-log4net/src/log4net.sln