blob: e8d93c5917611b0472a8fd89f7511b18061487fb [file] [log] [blame]
<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Making a release of Lucene.NET | Apache Lucene.NET 4.8.0 </title>
<meta name="viewport" content="width=device-width">
<meta name="title" content="Making a release of Lucene.NET | Apache Lucene.NET 4.8.0 ">
<meta name="generator" content="docfx 2.58.0.0">
<link rel="shortcut icon" href="../logo/favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css">
<link rel="stylesheet" href="../styles/docfx.css">
<link rel="stylesheet" href="../styles/main.css">
<meta property="docfx:navrel" content="../toc.html">
<meta property="docfx:tocrel" content="toc.html">
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Lato:400,700%7CMerriweather%7CRoboto+Mono">
<link rel="stylesheet" href="/styles/site.css">
</head>
<body data-spy="scroll" data-target="#affix" data-offset="120">
<span id="forkongithub"><a href="https://github.com/apache/lucenenet" target="_blank">Fork me on GitHub</a></span>
<div id="wrapper">
<header>
<nav id="autocollapse" class="navbar ng-scope" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../logo/lucene-net-color.png" alt="">
</a>
</div>
<div class="collapse navbar-collapse" id="navbar">
<form class="navbar-form navbar-right" role="search" id="search">
<div class="form-group">
<input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
</div>
</form>
</div>
</div>
</nav>
<div class="subnav navbar navbar-default">
<div class="container hide-when-search" id="breadcrumb">
<ul class="breadcrumb">
<li></li>
</ul>
</div>
</div>
</header>
<div role="main" class="container body-content hide-when-search">
<div class="sidenav hide-when-search">
<a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a>
<div class="sidetoggle collapse" id="sidetoggle">
<div id="sidetoc"></div>
</div>
</div>
<div class="article row grid-right">
<div class="col-md-10">
<article class="content wrap" id="_content" data-uid="contributing/make-release">
<h1 id="making-a-release-of-lucenenet">Making a release of Lucene.NET</h1>
<div class="NOTE">
<h5>Note</h5>
<p>This is a project-specific procedure, based on the <a href="https://infra.apache.org/release-publishing.html">Apache Release Creation Process</a></p>
</div>
<div class="NOTE">
<h5>Note</h5>
<p>All commands should be executed from the root of the Lucene.NET repository unless otherwise stated.</p>
</div>
<h2 id="versioning">Versioning</h2>
<p>For Package Version, NuGet version and branch naming guidelines see the <a class="xref" href="versioning.html">Versioning Procedure Overview</a> document.</p>
<h2 id="release-preparation">Release Preparation</h2>
<ul>
<li><p>Nominate a release manager (must be a Lucene.NET committer).</p>
</li>
<li><p>Review all GitHub issues associated with the release milestone. All issues should be resolved or closed.</p>
</li>
<li><p>Any issues that have been assigned to the release milestone that are still in progress should be moved to the next milestone. Any critical or blocker issues should be resolved on the <code>dev</code> mailing list. Discuss any issues that you are unsure of on the <code>dev</code> mailing list.</p>
</li>
</ul>
<h2 id="steps-for-the-release-manager">Steps for the Release Manager</h2>
<p>The following steps need only to be performed once.</p>
<ul>
<li><p>Install the <a href="https://www.oracle.com/java/technologies/javase-jre8-downloads.html">Java Runtime Environment</a>. This is a dependency of the Release Audit Tool.</p>
</li>
<li><p>Install a subversion command line client, such as <a href="https://tortoisesvn.net/downloads.html">TortoiseSVN</a></p>
</li>
<li><p>Install <a href="https://www.gnupg.org/">GNU Privacy Guard</a></p>
</li>
<li><p><a href="https://infra.apache.org/release-signing.html#generate">Generate a code signing key</a> if you don't already have one</p>
</li>
<li><p>Make sure you have your PGP key entered into <a href="https://id.apache.org/">https://id.apache.org/</a>. Your KEYS will then be present in <a href="https://people.apache.org/keys/group/lucenenet.asc">https://people.apache.org/keys/group/lucenenet.asc</a>.</p>
</li>
<li><p>Make sure you have your PGP keys password.</p>
</li>
<li><p>Append your PGP key to the <code>KEYS</code> file in <a href="https://dist.apache.org/repos/dist/release">https://dist.apache.org/repos/dist/release</a>:</p>
<pre><code class="lang-powershell">dotnet msbuild -t:AppendSignature -p:ApacheID=&lt;apacheId&gt;
</code></pre>
<div class="NOTE">
<h5>Note</h5>
<p>You may be prompted for your password</p>
</div>
</li>
</ul>
<h2 id="release-steps">Release Steps</h2>
<ul>
<li><p>Checkout the Lucene.NET master branch:</p>
<ul>
<li>If you have no local clone:
<ul>
<li><code>git clone https://github.com/apache/lucenenet.git</code></li>
</ul>
</li>
<li>If you are updating your local clone:
<ul>
<li>Save your local work (if any, run <code>git status</code> to determine this) in the stash or commit it to a branch other than master</li>
<li><code>git checkout master</code> and make sure it succeeds to be on the master branch</li>
<li><code>git pull https://gitbox.apache.org/repos/asf/lucenenet.git master</code> to update your local copy</li>
</ul>
</li>
</ul>
</li>
<li><p>Prepare a GitHub Release. Review the <a href="https://github.com/apache/lucenenet/commits/master">master branch commit history</a>, and <a href="https://github.com/apache/lucenenet/releases/new">create a new <strong>DRAFT</strong> GitHub release</a> using the following template:</p>
<pre><code class="lang-txt">&gt; This release contains &lt;any important changes that users should be aware of&gt;
## Change Log
### Breaking Changes
* #&lt;GitHub Issue ID (optional)&gt; - &lt;A descriptive title (may need to add context or summarize)&gt;
### Bugs
* #&lt;GitHub Issue ID (optional)&gt; - &lt;A descriptive title (may need to add context or summarize)&gt;
### Improvements
* #&lt;GitHub Issue ID (optional)&gt; - &lt;A descriptive title (may need to add context or summarize)&gt;
### New Features
* #&lt;GitHub Issue ID (optional)&gt; - &lt;A descriptive title (may need to add context or summarize)&gt;
</code></pre>
<div class="TIP">
<h5>Tip</h5>
<p>Click the &quot;Save draft&quot; button frequently during the above updates to ensure you don't lose them if your browser crashes.</p>
</div>
<div class="NOTE">
<h5>Note</h5>
<p>Be sure to check the &quot;This is a pre-release&quot; box as appropriate.</p>
</div>
</li>
<li><p>Click the &quot;Save draft&quot; button when finished.</p>
</li>
<li><p>Update Website with the release notes</p>
<p>Only people with permissions on GitHub will be able to see the draft release notes. <a href="https://people.apache.org/phonebook.html?ctte=lucenenet">PMC members</a> and <a href="https://people.apache.org/phonebook.html?unix=lucenenet">committers</a> can have permissions, but only if they set them up themselves. So, we duplicate the above information on a release notes page that all subscribers of the dev@lucenenet.apache.org mailing list can view during the release vote.</p>
<div class="NOTE">
<h5>Note</h5>
<p>If the release notes require updating, don't forget the primary place to update them are on the GitHub Releases draft page above. It is best to update that page and then copy the changes from GitHub Releases to the release notes page on the website, then commit the changes and <a href="https://lucenenet.apache.org/contributing/documentation.html#website">publish the website</a> as usual.</p>
</div>
<ul>
<li><p>Create a new release notes page in the <code>/websites/site/release-notes</code> directory, in most cases it's easiest to just copy the previous release notes page.</p>
<ul>
<li>Ensure the <code>uid</code> in the header is correct</li>
<li>Update all headers to the release version number (i.e. <code>4.8.0-beta00008</code>)</li>
</ul>
</li>
<li><p>Copy the release notes from the GitHub Releases draft to the new website release notes page</p>
<ul>
<li>Delete the prior information in the current version release notes except for the header (whether from a prior version or an update)</li>
<li>Copy and paste the GitHub Releases draft just below the header</li>
<li>Add the URLs to issues on GitHub. These are the instructions for Notepad++. Modify as needed if you are using another text editor.
<ul>
<li>Find: <code>#(\d+)</code></li>
<li>Replace with: <code>[#$1]\(https://github.com/apache/lucenenet/pull/$1\)</code></li>
<li>Search mode: &quot;regular expression&quot;</li>
<li>Click &quot;Replace All&quot; and verify the URLs work correctly</li>
</ul>
</li>
</ul>
</li>
<li><p>Follow the instructions on how to <a href="https://lucenenet.apache.org/contributing/documentation.html#website">build, test &amp; publish the website</a> and run/test the website locally.</p>
</li>
<li><p>Commit changes and <a href="https://lucenenet.apache.org/contributing/documentation.html#website">publish the website</a>.</p>
</li>
</ul>
</li>
<li><p>Add Missing License Headers</p>
<ul>
<li><p>Run <a href="https://creadur.apache.org/rat/">Apache Release Audit Tool</a>:</p>
<pre><code class="lang-powershell">dotnet msbuild -t:AuditRelease
</code></pre>
</li>
<li><p>Review and commit the changes to your local Git clone, adding exclusions to <code>.rat-excludes</code> and re-running as necessary</p>
<ul>
<li>Exclude files that already have license headers</li>
<li>Exclude files that are automatically generated</li>
<li>Exclude files that don't work properly with license headers included</li>
</ul>
</li>
<li><p>Review the LICENSE.txt file.</p>
<ul>
<li>If any new files with an alternate license were flagged by the Apache Release Audit Tool in the last step, add the full path to the files and the full licenses (see the LICENSE.txt file for examples). If the license is not found in the approved license list <a href="https://www.apache.org/legal/resolved.html#category-a">https://www.apache.org/legal/resolved.html#category-a</a>, the release <strong>must be postponed</strong> until the file is replaced with one that has an acceptable license.</li>
<li>If any files have been removed from the repository, delete the corresponding license.</li>
<li>If any files have been moved or renamed, update the corresponding license to reflect the new path(s).</li>
<li>Check the copyright date and update it if the year has changed since the prior release. Update the date in the NOTICE.txt file, also.</li>
</ul>
</li>
<li><p>Push the changes to the remote <code>lucenenet</code> repository (<code>https://gitbox.apache.org/repos/asf/lucenenet.gif</code>)</p>
<pre><code class="lang-powershell">git push &lt;remote&gt; master
</code></pre>
</li>
</ul>
</li>
<li><p>Execute a complete test locally (it can take around 20 minutes, but you may do the next step in parallel):</p>
<pre><code class="lang-powershell">build -pv &lt;packageVersion&gt; -t -mp 10
</code></pre>
<div class="NOTE">
<h5>Note</h5>
<p>Adjust the <code>-mp</code> (maximum number of parallel jobs) number as appropriate based on the machine that runs them. In general, a powerful machine should be able to run 10 jobs or more and a weaker machine may only be able to run 7 or 8 jobs in parallel. It may take some experimentation to find the right number on your hardware to execute the tests fastest.</p>
</div>
</li>
<li><p>Execute a complete test on a temporary Azure DevOps organization (it can take around 40-50 minutes) (see <a href="https://github.com/apache/lucenenet#azure-devops">build instructions on README.md</a>).</p>
</li>
</ul>
<h2 id="successful-release-preparation">Successful Release Preparation</h2>
<h3 id="perform-the-release-build">Perform the Release Build</h3>
<ul>
<li><p>Login to the <a href="https://dev.azure.com/lucene-net/Lucene.NET/_build?definitionId=3&amp;_a=summary">Lucene.NET build pipeline</a> on Azure DevOps</p>
</li>
<li><p>Click the <code>Run pipeline</code> button</p>
</li>
<li><p>Ensure the <code>master</code> branch is selected</p>
</li>
<li><p>Expand <code>Variables</code></p>
</li>
<li><p>Update the <code>PackageVersion</code> variable to the release version number (i.e. <code>4.8.0-beta00008</code>)</p>
</li>
<li><p>Click the back arrow to return to the main view</p>
</li>
<li><p>Click the <code>Run</code> button to begin the build (it will take about 40 minutes)</p>
</li>
</ul>
<h3 id="check-the-release-artifacts">Check the Release Artifacts</h3>
<ul>
<li>Upon successful Azure DevOps build, download the <code>release</code> build artifact and unzip it. Note you will need to copy the files in a later step.</li>
</ul>
<p>Perform basic checks against the release binary:</p>
<ul>
<li><p>Check presence and appropriateness of LICENSE, NOTICE, and README files.</p>
</li>
<li><p>Check the <code>nupkg</code> files to ensure they can be referenced in Visual Studio.</p>
</li>
</ul>
<h3 id="sign-the-release">Sign the Release</h3>
<ul>
<li><p>On your local Git clone, check out the SVN distribution repositories</p>
<pre><code class="lang-powershell">dotnet msbuild -t:CheckoutRelease
</code></pre>
</li>
<li><p>From the <code>release</code> build artifact that you downloaded from Azure DevOps in the <strong>Check the Release Artifacts</strong> section, copy both the <code>.src.zip</code> and <code>.bin.zip</code> files to a new folder named <code>&lt;repo root&gt;/svn-dev/&lt;packageVersion&gt;/</code></p>
</li>
<li><p>On your local Git clone, tag the repository using the info in <code>RELEASE-TODO.txt</code></p>
<pre><code class="lang-powershell">git tag -a &lt;tag from RELEASE-TODO.txt&gt; &lt;commit hash from RELEASE-TODO.txt&gt; -m &quot;&lt;tag from RELEASE-TODO.txt&gt;&quot;
git push &lt;remote-name (defaults to origin)&gt; master --tags
</code></pre>
</li>
<li><p><a href="https://infra.apache.org/release-signing.html">Sign the <code>release</code> artifacts</a> using GnuPG</p>
<pre><code class="lang-powershell">dotnet msbuild -t:SignReleaseCandidate -p:PackageVersion=&lt;packageVersion&gt;
</code></pre>
<div class="NOTE">
<h5>Note</h5>
<p>You may be prompted for your password</p>
</div>
</li>
<li><p>Check signature of generated artifacts (the <code>SignReleaseCandidate</code> target above runs the commands)</p>
</li>
</ul>
<h3 id="add-release-artifacts-to-the-svn-dev-distribution-repository">Add Release Artifacts to the SVN <code>dev</code> Distribution Repository</h3>
<div class="WARNING">
<h5>Warning</h5>
<p>The following command copies the <code>&lt;repo root&gt;/svn-release/KEYS</code> file to <code>&lt;repo-root&gt;/svn-dev/KEYS</code> and overwrites any local changes to it.</p>
</div>
<pre><code class="lang-powershell">dotnet msbuild -t:CommitReleaseCandidate -p:PackageVersion=&lt;packageVersion&gt;
</code></pre>
<h3 id="create-a-vote-thread">Create a VOTE Thread</h3>
<p>Notify the developer mailing list of a new version vote. Be sure to replace all values in [] with the appropriate values. Use the <a href="https://www.timeanddate.com/countdown/create">Countdown Timer Tool</a> to create a timer to show exactly when the vote ends.</p>
<p>Use the <a href="https://s.apache.org/">Apache URL Shortener</a> to replace the URLs in the release vote email to ensure they are not broken using the following ID pattern:</p>
<ul>
<li><code>&lt;packageVersion&gt;-tag</code></li>
<li><code>&lt;packageVersion&gt;-notes</code></li>
<li><code>&lt;packageVersion&gt;-test</code></li>
<li><code>&lt;packageVersion&gt;-countdown</code></li>
</ul>
<div class="NOTE">
<h5>Note</h5>
<p>Apache doesn't allow usage of 3rd party URL shortener services.</p>
</div>
<pre><code class="lang-txt">To: dev@lucenenet.apache.org
Message Subject: [VOTE] Apache Lucene.NET [version]
------------------------------------------------------
I have posted a new release for the Apache Lucene.NET [version] release and it is ready for testing.
The binaries can be downloaded from:
https://dist.apache.org/repos/dist/dev/lucenenet
The release was made from the Apache Lucene.NET [version] tag at:
https://github.com/apache/lucenenet/tree/[tag]
The release notes are listed at:
https://github.com/apache/lucenenet/releases/tag/[tag-url]
The tests for this release can be viewed at:
https://dev.azure.com/lucene-net/Lucene.NET/_build/results?buildId=&lt;Build ID for Release&gt;&amp;view=ms.vss-test-web.build-test-results-tab
The release was made using the Lucene.NET release process, documented on the website:
https://lucenenet.apache.org/contributing/make-release.html
Please vote on releasing these packages as Apache Lucene.NET [version]. The vote is open for at least the next 72 hours, i.e. midnight UTC on [YYYY-MM-DD]
http://www.timeanddate.com/counters/customcounter.html?year=[YYYY]&amp;month=[MM]&amp;day=[DD]
Only votes from Lucene.NET PMC are binding, but everyone is welcome to check the release candidate and vote.
The vote passes if at least three binding +1 votes are cast.
[ ] +1 Release the packages as Apache Lucene.NET [VERSION]
[ ] -1 Do not release the packages because...
</code></pre>
<h2 id="after-a-successful-vote">After a Successful Vote</h2>
<p>The vote is successful if at least 3 +1 votes are received from <a href="https://people.apache.org/phonebook.html?ctte=lucenenet">Lucene.NET PMC members</a> after a minimum of 72 hours of sending the vote email. Acknowledge the voting results on the mailing list in the VOTE thread.</p>
<pre><code class="lang-txt">To: dev@lucenenet.apache.org
Message Subject: [RESULT] [VOTE] Apache Lucene.NET [version]
------------------------------------------------------
The vote has now closed. The results are:
Binding Votes:
+1 [TOTAL BINDING +1 VOTES]
-1 [TOTAL BINDING -1 VOTES]
The vote is ***successful/not successful***
</code></pre>
<div class="TIP">
<h5>Tip</h5>
<p>Due to <a href="https://issues.apache.org/jira/browse/INFRA-20098">spam issues</a> you may want to bcc each person who voted on the RESULT email to ensure they receive it.</p>
</div>
<h3 id="release-to-nugetorg">Release to NuGet.org</h3>
<div class="TIP">
<h5>Tip</h5>
<p>NuGet.org's API keys expire every year, so it would be good to check the NuGet.org API Key section to see whether the current API key is current and update it prior to attempting the steps below.</p>
</div>
<ul>
<li><p>Login to the <a href="https://dev.azure.com/lucene-net/Lucene.NET/_release?_a=releases&amp;view=mine&amp;definitionId=1">Lucene.NET release pipeline</a> on Azure DevOps</p>
</li>
<li><p>Click the release that corresponds to the version that is being released</p>
</li>
<li><p>The <code>Release [VOTE]</code> step should be waiting for manual intervention, click the <code>Resume</code> button</p>
</li>
<li><p>Enter the result of the vote in the following format, updating the values within <code>[ ]</code> appropriately</p>
<pre><code>Binding Votes +1: [3] 0: [0] -1: [0]
Non Binding Votes +1: [3] 0: [0] -1: [0]
</code></pre>
</li>
<li><p>Upon clicking <code>Resume</code> again the release will finish, submitting the NuGet packages to NuGet.org</p>
</li>
</ul>
<h3 id="release-binaries-to-svn">Release Binaries to SVN</h3>
<p>Commit the distribution via SVN to <a href="https://dist.apache.org/repos/dist/release">https://dist.apache.org/repos/dist/release</a>:</p>
<pre><code class="lang-powershell">dotnet msbuild -t:CommitRelease -p:PackageVersion=&lt;packageVersion&gt;
</code></pre>
<div class="NOTE">
<h5>Note</h5>
<p>If preferred or if the above command fails, this step can be done manually using Windows Explorer/TortoiseSVN by doing the following steps:</p>
<ul>
<li>Copy <code>&lt;repo root&gt;/svn-dev/KEYS</code> to <code>&lt;repo root&gt;/svn-release/KEYS</code></li>
<li>Copy <code>&lt;repo root&gt;/svn-dev/&lt;packageVersion&gt;</code> to <code>&lt;repo root&gt;/svn-release/&lt;packageVersion&gt;</code></li>
<li>Right-click on <code>&lt;repo root&gt;/svn-release</code>, and click &quot;SVN Commit...&quot;</li>
<li>Add the commit message <code>Added Apache-Lucene.Net-&lt;packageVersion&gt; to release/lucenenet</code> and click OK</li>
<li>Right-click on <code>&lt;repo root&gt;/svn-dev/&lt;packageVersion&gt;</code> and click &quot;TortoiseSVN &gt; Delete&quot;</li>
<li>Right-click on <code>&lt;repo root&gt;/svn-dev</code> and click &quot;SVN Commit...&quot;</li>
<li>Add the commit message <code>Removed Apache-Lucene.Net-&lt;packageVersion&gt; from dev/lucenenet</code> and click OK</li>
</ul>
</div>
<h3 id="archive-old-releases">Archive Old Release(s)</h3>
<p>To reduce the load on the ASF mirrors, projects are required to delete old releases (see <a href="http://www.apache.org/legal/release-policy.html#when-to-archive">http://www.apache.org/legal/release-policy.html#when-to-archive</a>).</p>
<p>Remove the old releases from SVN under <a href="https://dist.apache.org/repos/dist/release/lucenenet/">https://dist.apache.org/repos/dist/release/lucenenet/</a>.</p>
<h3 id="post-release-steps">Post-Release Steps</h3>
<ul>
<li><p>Log the new version at <a href="https://reporter.apache.org/addrelease.html?lucenenet">https://reporter.apache.org/addrelease.html?lucenenet</a></p>
</li>
<li><p>Publish the Draft <a href="https://github.com/apache/lucenenet/releases">GitHub Release</a> that was <a href="#release-steps">created earlier</a>, updating the tag if necessary</p>
</li>
<li><p>Update Website with new release</p>
<ul>
<li><p>Update the <code>/websites/site/lucenetemplate/doap_Lucene_Net.rdf</code> file to reflect the new version and ensure other links/info in the file are correct.</p>
<div class="IMPORTANT">
<h5>Important</h5>
<p>Only update the version if it's a new stable version.</p>
</div>
</li>
<li><p>Create a new release page in the <code>/websites/site/download</code>, in most cases it's easiest to just copy the previous release page.</p>
<ul>
<li>Ensure the <code>uid</code> in the header is correct</li>
<li>Update all headers, status, release date to be correct</li>
<li>Ensure supported frameworks and packages section is accurate for the new release</li>
</ul>
</li>
<li><p>Add the new release page to the <code>/websites/site/download/toc.yml</code> file</p>
</li>
<li><p>Add the new release version and release date to the <code>/websites/site/download/download.md</code> file</p>
</li>
<li><p>Follow the instructions on how to <a href="https://lucenenet.apache.org/contributing/documentation.html#website">build, test &amp; publish the website</a> and run/test the website locally.</p>
</li>
<li><p>Commit changes and <a href="https://lucenenet.apache.org/contributing/documentation.html#website">publish the website</a>.</p>
</li>
</ul>
</li>
<li><p>Update the API Documentation with new release</p>
<ul>
<li>Follow the instructions on how to <a href="https://lucenenet.apache.org/contributing/documentation.html#api-docs">build</a>, test and <a href="https://lucenenet.apache.org/contributing/documentation.html#publishing-the-docs">publish</a> the docs.</li>
</ul>
</li>
<li><p>Send announcement email 24 hours after the release (to ensure the mirrors have propagated the download locations)</p>
<div class="IMPORTANT">
<h5>Important</h5>
<p>Only include announce@apache.org if it is a stable release version</p>
</div>
<pre><code class="lang-txt">To: announce@apache.org; dev@lucenenet.apache.org; user@lucenenet.apache.org
Message Subject: [ANNOUNCE] Apache Lucene.NET [version] Released
------------------------------------------------------
The Apache Lucene.NET team is pleased to announce the release of version [version] of Apache Lucene.NET. Apache Lucene.NET is a .NET full-text search engine framework, a C# port of the popular Apache Lucene project. Apache Lucene.NET is not a complete application, but rather a code library and API that can easily be used to add search capabilities to applications.
The Lucene.NET [version] binary and source distributions are available for download from our download page:
https://lucenenet.apache.org/download/download.html
The Lucene.NET library is distributed by NuGet.org as well. See the README.md page for more details:
https://github.com/apache/lucenenet#all-packages-1
Changes in this version:
https://github.com/apache/lucenenet/releases/tag/[tag]
The Apache Lucene.NET Team
</code></pre>
</li>
</ul>
<h2 id="after-an-unsuccessful-vote">After an Unsuccessful Vote</h2>
<p>The release vote may fail due to an issue discovered in the release candidate. If the vote fails the release should be canceled by:</p>
<ul>
<li>Sending an email to <a href="mailto:dev@lucenenet.apache.org">dev@lucenenet.apache.org</a> on the VOTE thread notifying of the vote's cancellation.</li>
</ul>
<p>A new release candidate can now be prepared. When complete, a new VOTE thread can be started as described in the steps above.</p>
<div class="NOTE">
<h5>Note</h5>
<p>Due to the fact that an Azure Pipeline cannot be re-run with the same version number and users who reference <code>.nupkg</code> files will have them in their local <code>.nuget</code> cache, there are 2 choices:</p>
<ol>
<li>To use the same version number that failed:</li>
</ol>
<ul>
<li>Create a new Azure DevOps pipeline by copying the settings from the pipeline named Lucene.NET-Release.</li>
<li>Test the Lucene.NET-Release pipeline thoroughly, using different version numbers than the one you are releasing.</li>
<li>Create a release pipeline and copy the settings from the release pipeline named Lucene.NET-Release.</li>
<li>Delete the tag for this release and recreate it with the same version number at the appropriate commit.</li>
<li>If the vote has already started, the new release vote email should provide instructions for removing the previous version from the <code>.nuget</code> cache to ensure the new release with the same version is the one being scrutinized.</li>
</ul>
<ol start="2">
<li>To use a new version number, simply re-start the process from the beginning, copy the release notes from the previous version (both on GitHub and the website) and follow all of the remaining steps above. Discard the draft release notes on GitHub when complete.</li>
</ol>
</div>
</article>
</div>
<div class="hidden-sm col-md-2" role="complementary">
<div class="sideaffix">
<div class="contribution">
<ul class="nav">
<li>
<a href="https://github.com/apache/lucenenet/blob/master/websites/site/contributing/make-release.md/#L1" class="contribution-link">Improve this Doc</a>
</li>
</ul>
</div>
<nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
<h5>In This Article</h5>
<div></div>
</nav>
</div>
</div>
</div>
</div>
<footer>
<div class="grad-bottom"></div>
<div class="footer">
<div class="container">
<span class="pull-right">
<a href="#top">Back to top</a>
</span>
Copyright &copy; 2022 The Apache Software Foundation, Licensed under the <a href='http://www.apache.org/licenses/LICENSE-2.0' target='_blank'>Apache License, Version 2.0</a><br> <small>Apache Lucene.Net, Lucene.Net, Apache, the Apache feather logo, and the Apache Lucene.Net project logo are trademarks of The Apache Software Foundation. <br>All other marks mentioned may be trademarks or registered trademarks of their respective owners.</small>
</div>
</div>
</footer>
</div>
<script type="text/javascript" src="../styles/docfx.vendor.js"></script>
<script type="text/javascript" src="../styles/docfx.js"></script>
<script type="text/javascript" src="../styles/main.js"></script>
</body>
</html>