187c131baSJan Høydahl# 287c131baSJan Høydahl# Licensed to the Apache Software Foundation (ASF) under one or more 387c131baSJan Høydahl# contributor license agreements. See the NOTICE file distributed with 487c131baSJan Høydahl# this work for additional information regarding copyright ownership. 587c131baSJan Høydahl# The ASF licenses this file to You under the Apache License, Version 2.0 687c131baSJan Høydahl# (the "License"); you may not use this file except in compliance with 787c131baSJan Høydahl# the License. You may obtain a copy of the License at 887c131baSJan Høydahl# 987c131baSJan Høydahl# http://www.apache.org/licenses/LICENSE-2.0 1087c131baSJan Høydahl# 1187c131baSJan Høydahl# Unless required by applicable law or agreed to in writing, software 1287c131baSJan Høydahl# distributed under the License is distributed on an "AS IS" BASIS, 1387c131baSJan Høydahl# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1487c131baSJan Høydahl# See the License for the specific language governing permissions and 1587c131baSJan Høydahl# limitations under the License. 1687c131baSJan Høydahl# 1787c131baSJan Høydahl 1887c131baSJan Høydahl# ===================================================================== 19462c6c70SJan Høydahl# This file contains the definition TO-DO steps and commands to run for the 2087c131baSJan Høydahl# releaseWizard.py script. It also contains Jinja2 templates for use in those 2187c131baSJan Høydahl# definitions. See documentation for "groups" below the templates. 2287c131baSJan Høydahl# Edit this file with an editor with YAML support, such as Sublime Text 2387c131baSJan Høydahl# for syntax highlighting and context sensitive tag suggestion 2487c131baSJan Høydahl# ===================================================================== 2587c131baSJan Høydahl# 2687c131baSJan Høydahl# Templates may be included in any text by starting a line with this syntax: 2787c131baSJan Høydahl# (( template=my_template_name )) 2887c131baSJan Høydahl# Templates may contain other templates for easy re-use of snippets 2987c131baSJan Høydahl# And of course all Jinja2 syntax for inclusion of variables etc is supported. 3087c131baSJan Høydahl# See http://jinja.pocoo.org/docs/2.10/templates/ for details 3187c131baSJan Høydahl# To add new global variables or functions/filters, edit releaseWizard.py 3287c131baSJan Høydahl# 3387c131baSJan Høydahltemplates: 3487c131baSJan Høydahl help: | 35674b66ddSJan Høydahl Welcome to the role as Release Manager for Lucene, and the releaseWizard! 3687c131baSJan Høydahl 3787c131baSJan Høydahl The Release Wizard aims to walk you through the whole release process step by step, 3887c131baSJan Høydahl helping you to to run the right commands in the right order, generating 3987c131baSJan Høydahl e-mail templates for you with the correct texts, versions, paths etc, obeying 4087c131baSJan Høydahl the voting rules and much more. It also serves as a documentation of all the 4187c131baSJan Høydahl steps, with timestamps, preserving log files from each command etc. 4287c131baSJan Høydahl 4387c131baSJan Høydahl As you complete each step the tool will ask you if the task is complete, making 4487c131baSJan Høydahl it easy for you to know what is done and what is left to do. If you need to 4587c131baSJan Høydahl re-spin a Release Candidata (RC) the Wizard will also help. 4687c131baSJan Høydahl 4787c131baSJan Høydahl The Lucene project has automated much of the release process with various scripts, 4887c131baSJan Høydahl and this wizard is the glue that binds it all together. 4987c131baSJan Høydahl 5087c131baSJan Høydahl In the first TODO step in the checklist you will be asked to read up on the 5187c131baSJan Høydahl Apache release policy and other relevant documents before you start the release. 5287c131baSJan Høydahl 5387c131baSJan Høydahl NOTE: Even if we have great tooling and some degree of automation, there are 5487c131baSJan Høydahl still many manual steps and it is also important that the RM validates 5587c131baSJan Høydahl and QAs the process, validating that the right commands are run, and that 5687c131baSJan Høydahl the output from scripts are correct before proceeding. 5787c131baSJan Høydahl vote_logic: | 5887c131baSJan Høydahl {% set passed = plus_binding >= 3 and minus < plus_binding %} 5987c131baSJan Høydahl {% set too_few = plus_binding < 3 %} 6087c131baSJan Høydahl {% set veto = plus_binding < minus %} 6187c131baSJan Høydahl {% set reason = 'too few binding votes' if too_few else 'too many negative votes' if veto else 'unknown' %} 6287c131baSJan Høydahl vote_macro: | 6387c131baSJan Høydahl {% macro end_vote_result(plus_binding, plus_other, zero, minus) -%} 6487c131baSJan Høydahl (( template=vote_logic )) 6587c131baSJan Høydahl .Mail template {% if passed %}successful{% else %}failed{% endif %} vote 6687c131baSJan Høydahl ---- 6787c131baSJan Høydahl To: dev@lucene.apache.org 68674b66ddSJan Høydahl Subject: [{% if passed %}RESULT{% else %}FAILED{% endif %}] [VOTE] Release Lucene {{ release_version }} RC{{ rc_number }} 6987c131baSJan Høydahl 7087c131baSJan Høydahl It's been >72h since the vote was initiated and the result is: 7187c131baSJan Høydahl 7287c131baSJan Høydahl +1 {{ plus_binding + plus_other }} ({{ plus_binding }} binding) 7387c131baSJan Høydahl 0 {{ zero }} 7487c131baSJan Høydahl -1 {{ minus }} 7587c131baSJan Høydahl 7687c131baSJan Høydahl {% if not passed %} 7787c131baSJan Høydahl Reason for fail is {{ reason }}. 7887c131baSJan Høydahl 7987c131baSJan Høydahl {% endif %} 8087c131baSJan Høydahl This vote has {% if passed %}PASSED{% else %}FAILED{% endif %} 8187c131baSJan Høydahl ---- 8287c131baSJan Høydahl {%- endmacro %} 8387c131baSJan Høydahl announce_lucene: | 84329e7c7bSJan Høydahl Title: Apache Lucene™ {{ release_version }} available 85329e7c7bSJan Høydahl category: core/news 86329e7c7bSJan Høydahl URL: 87329e7c7bSJan Høydahl save_as: 8887c131baSJan Høydahl 8987c131baSJan Høydahl The Lucene PMC is pleased to announce the release of Apache Lucene {{ release_version }}. 9087c131baSJan Høydahl 916149387fSAdrien Grand Apache Lucene is a high-performance, full-featured search engine library written entirely in Java. It is a technology suitable for nearly any application that requires structured search, full-text search, faceting, nearest-neighbor search across high-dimensionality vectors, spell correction or query suggestions. 9287c131baSJan Høydahl 9387c131baSJan Høydahl This release contains numerous bug fixes, optimizations, and improvements, some of which are highlighted below. The release is available for immediate download at: 9487c131baSJan Høydahl 9587c131baSJan Høydahl <https://lucene.apache.org/core/downloads.html> 9687c131baSJan Høydahl 9787c131baSJan Høydahl ### Lucene {{ release_version }} Release Highlights: 9887c131baSJan Høydahl 99329e7c7bSJan Høydahl * Feature 1 pasted from WIKI release notes 100329e7c7bSJan Høydahl * Feature 2 ... 10187c131baSJan Høydahl 10287c131baSJan Høydahl Please read CHANGES.txt for a full list of {% if is_feature_release %}new features and {% endif %}changes: 10387c131baSJan Høydahl 10487c131baSJan Høydahl <https://lucene.apache.org/core/{{ release_version_underscore }}/changes/Changes.html> 10587c131baSJan Høydahl announce_lucene_mail: | 10687c131baSJan Høydahl The template below can be used to announce the Lucene release to the 10787c131baSJan Høydahl internal mailing lists. 10887c131baSJan Høydahl 10987c131baSJan Høydahl .Mail template 11087c131baSJan Høydahl ---- 11187c131baSJan Høydahl To: dev@lucene.apache.org, general@lucene.apache.org, java-user@lucene.apache.org 11287c131baSJan Høydahl Subject: [ANNOUNCE] Apache Lucene {{ release_version }} released 11387c131baSJan Høydahl 11487c131baSJan Høydahl (( template=announce_lucene_mail_body )) 11587c131baSJan Høydahl ---- 11687c131baSJan Høydahl announce_lucene_sign_mail: | 11787c131baSJan Høydahl The template below can be used to announce the Lucene release to the 11887c131baSJan Høydahl `announce@apache.org` mailing list. The mail *should be signed with PGP.* 11987c131baSJan Høydahl and sent *from your `@apache.org` account*. 12087c131baSJan Høydahl 12187c131baSJan Høydahl .Mail template 12287c131baSJan Høydahl ---- 12387c131baSJan Høydahl From: {{ gpg.apache_id }}@apache.org 12487c131baSJan Høydahl To: announce@apache.org 12587c131baSJan Høydahl Subject: [ANNOUNCE] Apache Lucene {{ release_version }} released 12687c131baSJan Høydahl 12787c131baSJan Høydahl (( template=announce_lucene_mail_body )) 12887c131baSJan Høydahl ---- 12987c131baSJan Høydahl announce_lucene_mail_body: | 130329e7c7bSJan Høydahl {% for line in load_lines(lucene_news_file, 5) -%} 13187c131baSJan Høydahl {{ line }} 13287c131baSJan Høydahl {%- endfor %} 13387c131baSJan Høydahl 13487c131baSJan Høydahl 13587c131baSJan Høydahl Note: The Apache Software Foundation uses an extensive mirroring network for 13687c131baSJan Høydahl distributing releases. It is possible that the mirror you are using may not have 13787c131baSJan Høydahl replicated the release yet. If that is the case, please try another mirror. 13887c131baSJan Høydahl This also applies to Maven access. 13987c131baSJan Høydahl# TODOs belong to groups for easy navigation in menus. Todo objects may contain asciidoc 14087c131baSJan Høydahl# descriptions, a number of commands to execute, some links to display, user input to gather 14187c131baSJan Høydahl# etc. Here is the documentation of each type of object. For further details, please consult 14287c131baSJan Høydahl# the corresponding Python object in releaseWizard.py, as these are parsed 1:1 from yaml. 14387c131baSJan Høydahl# 14487c131baSJan Høydahl# - !TodoGroup 14587c131baSJan Høydahl# id: unique_id 14687c131baSJan Høydahl# title: Title which will appear in menu 14787c131baSJan Høydahl# description: Longer description that will appear in sub-menu 14887c131baSJan Høydahl# depends: ['group1_id', 'group2_id'] # Explicit dependencies for groups 14987c131baSJan Høydahl# is_in_rc_loop: Tells that a group is thrown away on RC re-psin (default=False) 15087c131baSJan Høydahl# todos: # Array of !Todo objects beloning to the group 15187c131baSJan Høydahl# !Todo 15287c131baSJan Høydahl# id: todo_id 15387c131baSJan Høydahl# title: Short title that will appear in menu and elsewhere 15487c131baSJan Høydahl# description: | 15587c131baSJan Høydahl# The main description being printed when selecing the todo item. Here 15687c131baSJan Høydahl# you should introduce the task in more detail. You can use {{ jinja_var }} to 15787c131baSJan Høydahl# reference variables. See `releaseWizard.py` for list of global vars supported. 15887c131baSJan Høydahl# You can reference state saved from earlier TODO items using syntax 15987c131baSJan Høydahl# {{ todi_id.var_name }} 16087c131baSJan Høydahl# with `var_name` being either fetched from user_input or persist_vars 16187c131baSJan Høydahl# depends: # One or more dependencies which will bar execution 16287c131baSJan Høydahl# - todo_id1 16387c131baSJan Høydahl# - todo_id2 16487c131baSJan Høydahl# vars: # Dictionary of jinja2 variables local to this TODO, e.g. 16587c131baSJan Høydahl# logfile_path: "{{ [rc_folder, 'logs'] | path_join }}" 16687c131baSJan Høydahl# # Vars can contain global jinja vars or local vars earlier defined (ordered dict) 16787c131baSJan Høydahl# persist_vars: ['var_name', 'var_name'] # List of variables to persist in TODO state 16887c131baSJan Høydahl# asciidoc: | 16987c131baSJan Høydahl# Some `asciidoc` text to be included in asciidoc guide 17087c131baSJan Høydahl# *instead of* description/post_description 17187c131baSJan Høydahl# function: my_python_function # Will call the named function for complex tasks 17287c131baSJan Høydahl# commands: !Commands # A !Commands object holding commands to execute for this todo 17387c131baSJan Høydahl# root_folder: '{{ git_checkout_folder }}' # path to where commands will run 17487c131baSJan Høydahl# commands_text: Introduction text to be displayed just before the commands 17587c131baSJan Høydahl# enable_execute: true # Set to false to never offer to run commands automatically 17687c131baSJan Høydahl# confirm_each_command: true # Set to false to run all commands without prompting 17787c131baSJan Høydahl# remove_files: ['file1', 'folder2'] # List of files or folders that must be gone 17887c131baSJan Høydahl# logs_prefix: prefix # Lets you prefix logs file names with this string 17987c131baSJan Høydahl# commands: # List of !Commands to execute 18087c131baSJan Høydahl# - !Command # One single command 18187c131baSJan Høydahl# cmd: "ls {{ folder_to_ls }}" # A single command. May reference jinja vars 18287c131baSJan Høydahl# # Double spaces in a cmd will trigger multi-line display with continuation char \ 18387c131baSJan Høydahl# cwd: relative_path # Where to run command, relative to root_folder 18487c131baSJan Høydahl# comment: # Will display a # or REM comment above the command in printouts 18587c131baSJan Høydahl# vars: {} # Possible to define local vars for this command only 18687c131baSJan Høydahl# logfile: my.og # Overrides log file name which may grow very long :) 18787c131baSJan Høydahl# tee: false # If true, sends output to console and file 18887c131baSJan Høydahl# stdout: false # if true, sends output only to console, not log file 18987c131baSJan Høydahl# live: false # If true, sends output live byte-by-byte to console 19087c131baSJan Høydahl# redirect: file.txt # Send output to file. Use instead of > 19187c131baSJan Høydahl# redirect_append: false # Will cause output to be appended, like >> 19287c131baSJan Høydahl# shell: false $ Set to true to use built-in shell commands 19387c131baSJan Høydahl# user_input: # An array of !UserInput objects for requesting input from user 19487c131baSJan Høydahl# - !UserInput 19587c131baSJan Høydahl# prompt: Please enter your gpg key ID, e.g. 0D8D0B93 19687c131baSJan Høydahl# name: gpg_id # This will be stored in todo state and can be referenced as {{ todo_id.name }} 19787c131baSJan Høydahl# type: int # if no type is given, a string is stored. Supported types are 'int' 19887c131baSJan Høydahl# post_description: | 19987c131baSJan Høydahl# Some `asciidoc` text (with jinja template support) 20087c131baSJan Høydahl# to be printed *after* commands and user_input is done. 20187c131baSJan Høydahl# links: 20287c131baSJan Høydahl# - http://example.com/list/of/links?to&be&displayed 20387c131baSJan Høydahlgroups: 20487c131baSJan Høydahl- !TodoGroup 20587c131baSJan Høydahl id: prerequisites 20687c131baSJan Høydahl title: Prerequisites 20787c131baSJan Høydahl description: | 20887c131baSJan Høydahl Releasing software requires thorough understanding of the process and careful execution, 20987c131baSJan Høydahl as it is easy to make mistakes. It also requires an environtment and tools such as gpg 21087c131baSJan Høydahl correctly setup. This section makes sure you're in good shape for the job! 21187c131baSJan Høydahl todos: 21287c131baSJan Høydahl - !Todo 21387c131baSJan Høydahl id: read_up 21487c131baSJan Høydahl title: Read up on the release process 21587c131baSJan Høydahl description: |- 21687c131baSJan Høydahl As a Release Manager (RM) you should be familiar with Apache's release policy, 21787c131baSJan Høydahl voting rules, create a PGP/GPG key for use with signing and more. Please familiarise 21887c131baSJan Høydahl yourself with the resources listed below. 21987c131baSJan Høydahl links: 220674b66ddSJan Høydahl - https://www.apache.org/dev/release-publishing.html 221674b66ddSJan Høydahl - https://www.apache.org/legal/release-policy.html 222674b66ddSJan Høydahl - https://infra.apache.org/release-signing.html 223674b66ddSJan Høydahl - https://cwiki.apache.org/confluence/display/LUCENE/ReleaseTodo 22487c131baSJan Høydahl - !Todo 22587c131baSJan Høydahl id: tools 22687c131baSJan Høydahl title: Necessary tools are installed 22787c131baSJan Høydahl description: | 22887c131baSJan Høydahl You will need these tools: 22987c131baSJan Høydahl 23087c131baSJan Høydahl * Python v3.4 or later, with dependencies listed in requirements.txt 2313134f10aSMike Drob * Java 11 in $JAVA11_HOME 23287c131baSJan Høydahl * gpg 23387c131baSJan Høydahl * git 23487c131baSJan Høydahl * svn 23587c131baSJan Høydahl * asciidoctor (to generate HTML version) 23687c131baSJan Høydahl 23787c131baSJan Høydahl You should also set the $EDITOR environment variable, else we'll fallback to 23887c131baSJan Høydahl `vi` on Linux and `notepad.exe` on Windows, and you don't want that :) 23987c131baSJan Høydahl function: check_prerequisites 24087c131baSJan Høydahl links: 24187c131baSJan Høydahl - https://gnupg.org/download/index.html 24287c131baSJan Høydahl - https://asciidoctor.org 24387c131baSJan Høydahl - !Todo 24487c131baSJan Høydahl id: gpg 24587c131baSJan Høydahl title: GPG key id is configured 24687c131baSJan Høydahl description: |- 24787c131baSJan Høydahl To sign the release you need to provide your GPG key ID. This must be 24887c131baSJan Høydahl the same key ID that you have registered in your Apache account. 24987c131baSJan Høydahl The ID is the last 8 bytes of your key fingerprint, e.g. 0D8D0B93. 25087c131baSJan Høydahl 25187c131baSJan Høydahl * Make sure your gpg key is 4096 bits key or larger 25287c131baSJan Høydahl * Upload your key to the MIT key server, pgp.mit.edu 25387c131baSJan Høydahl * Put you GPG key's fingerprint in the `OpenPGP Public Key Primary Fingerprint` 25487c131baSJan Høydahl field in your id.apache.org profile 25587c131baSJan Høydahl * The tests will complain if your GPG key has not been signed by another Lucene 25687c131baSJan Høydahl committer. This makes you a part of the GPG "web of trust" (WoT). Ask a committer 25787c131baSJan Høydahl that you know personally to sign your key for you, providing them with the 25887c131baSJan Høydahl fingerprint for the key. 25987c131baSJan Høydahl function: configure_pgp 26087c131baSJan Høydahl links: 26187c131baSJan Høydahl - http://www.apache.org/dev/release-signing.html 26287c131baSJan Høydahl - http://www.apache.org/dev/openpgp.html#apache-wot 26387c131baSJan Høydahl - https://id.apache.org 26487c131baSJan Høydahl - https://dist.apache.org/repos/dist/release/lucene/KEYS 2650f06eff4SHouston Putman - !Todo 2660f06eff4SHouston Putman id: jira_permissions 2670f06eff4SHouston Putman title: Obtain the neccessary permissions for Apache Jira 2680f06eff4SHouston Putman description: |- 2690f06eff4SHouston Putman If you are not a PMC member and this is your first time as RM, please ask to be granted extra permissions in Jira in order to complete all steps of the release. 2700f06eff4SHouston Putman 2710f06eff4SHouston Putman If you are a PMC member, you will already have the necessary permissions. 2720f06eff4SHouston Putman links: 2730f06eff4SHouston Putman - https://issues.apache.org/jira/projects/LUCENE 27487c131baSJan Høydahl- !TodoGroup 27587c131baSJan Høydahl id: preparation 27687c131baSJan Høydahl title: Prepare for the release 27787c131baSJan Høydahl description: Work with the community to decide when the release will happen and what work must be completed before it can happen 27887c131baSJan Høydahl todos: 27987c131baSJan Høydahl - !Todo 28087c131baSJan Høydahl id: decide_jira_issues 28187c131baSJan Høydahl title: Select JIRA issues to be included 28287c131baSJan Høydahl description: Set the appropriate "Fix Version" in JIRA for the issues that should be included in the release. 28387c131baSJan Høydahl - !Todo 2849eeef080SJulie Tibshirani id: fix_build_failures 2859eeef080SJulie Tibshirani title: Look into common build failures 2869eeef080SJulie Tibshirani description: | 2879eeef080SJulie Tibshirani Look over recent build results sent to the builds@lucene.apache.org list and try to address any recurring 2889eeef080SJulie Tibshirani failures. It's best to fix common failures now, so they don't pop up later and interfere with release smoke 2899eeef080SJulie Tibshirani testing. Build email archives are available at https://lists.apache.org/list.html?builds@lucene.apache.org. 2909eeef080SJulie Tibshirani - !Todo 29187c131baSJan Høydahl id: decide_branch_date 29287c131baSJan Høydahl title: Decide the date for branching 29387c131baSJan Høydahl types: 29487c131baSJan Høydahl - major 29587c131baSJan Høydahl - minor 29687c131baSJan Høydahl user_input: !UserInput 29787c131baSJan Høydahl prompt: Enter date (YYYY-MM-DD) 29887c131baSJan Høydahl name: branch_date 29987c131baSJan Høydahl - !Todo 30087c131baSJan Høydahl id: decide_freeze_length 3019eeef080SJulie Tibshirani title: Decide the length of feature freeze 30287c131baSJan Høydahl types: 30387c131baSJan Høydahl - major 30487c131baSJan Høydahl - minor 30587c131baSJan Høydahl user_input: !UserInput 30687c131baSJan Høydahl prompt: Enter end date of feature freeze (YYYY-MM-DD) 30787c131baSJan Høydahl name: feature_freeze_date 30887c131baSJan Høydahl- !TodoGroup 30987c131baSJan Høydahl id: branching_versions 31087c131baSJan Høydahl title: Create branch (if needed) and update versions 31187c131baSJan Høydahl description: Here you'll do all the branching and version updates needed to prepare for the new release version 31287c131baSJan Høydahl todos: 31387c131baSJan Høydahl - !Todo 31487c131baSJan Høydahl id: clean_git_checkout 3153134f10aSMike Drob title: Do a clean git clone to do the release from 31687c131baSJan Høydahl description: This eliminates the risk of a dirty checkout 31787c131baSJan Høydahl commands: !Commands 31887c131baSJan Høydahl root_folder: '{{ release_folder }}' 31987c131baSJan Høydahl commands_text: Run these commands to make a fresh clone in the release folder 32087c131baSJan Høydahl remove_files: 32187c131baSJan Høydahl - '{{ git_checkout_folder }}' 32287c131baSJan Høydahl commands: 32387c131baSJan Høydahl - !Command 324674b66ddSJan Høydahl cmd: git clone --progress https://gitbox.apache.org/repos/asf/lucene.git lucene 32587c131baSJan Høydahl logfile: git_clone.log 32687c131baSJan Høydahl - !Todo 3273134f10aSMike Drob id: gradle_precommit 3283134f10aSMike Drob title: Run gradle precommit and fix issues 32987c131baSJan Høydahl depends: clean_git_checkout 33087c131baSJan Høydahl commands: !Commands 33187c131baSJan Høydahl root_folder: '{{ git_checkout_folder }}' 33287c131baSJan Høydahl commands_text: |- 33387c131baSJan Høydahl From the base branch {{ base_branch }} we'll run precommit tests. 33487c131baSJan Høydahl Fix any problems that are found by pushing fixes to the branch 33587c131baSJan Høydahl and then running this task again. This task will always do `git pull` 3363134f10aSMike Drob before `{{ gradle_cmd }} precommit` so it will catch changes to your branch :) 33787c131baSJan Høydahl confirm_each_command: false 33887c131baSJan Høydahl commands: 33987c131baSJan Høydahl - !Command 34087c131baSJan Høydahl cmd: git checkout {{ base_branch }} 34187c131baSJan Høydahl stdout: true 34287c131baSJan Høydahl - !Command 34387c131baSJan Høydahl cmd: git clean -df && git checkout -- . 34487c131baSJan Høydahl comment: Make sure checkout is clean and up to date 34587c131baSJan Høydahl logfile: git_clean.log 34687c131baSJan Høydahl tee: true 34787c131baSJan Høydahl - !Command 3483134f10aSMike Drob cmd: git pull --ff-only 34987c131baSJan Høydahl stdout: true 35087c131baSJan Høydahl - !Command 3513134f10aSMike Drob cmd: "{{ gradle_cmd }} localSettings" 3523134f10aSMike Drob - !Command 3533134f10aSMike Drob cmd: "{{ gradle_cmd }} clean check -x test" 35487c131baSJan Høydahl - !Todo 35587c131baSJan Høydahl id: create_stable_branch 35657524c6aSChristine Poerschke title: Create a new stable branch, off from main 35787c131baSJan Høydahl description: In our case we'll create {{ stable_branch }} 35887c131baSJan Høydahl types: 35987c131baSJan Høydahl - major 36087c131baSJan Høydahl depends: clean_git_checkout 36187c131baSJan Høydahl commands: !Commands 36287c131baSJan Høydahl root_folder: '{{ git_checkout_folder }}' 36387c131baSJan Høydahl commands_text: Run these commands to create a stable branch 36487c131baSJan Høydahl commands: 36587c131baSJan Høydahl - !Command 36657524c6aSChristine Poerschke cmd: git checkout main 36787c131baSJan Høydahl tee: true 36887c131baSJan Høydahl - !Command 3693134f10aSMike Drob cmd: git pull --ff-only 37087c131baSJan Høydahl tee: true 37187c131baSJan Høydahl - !Command 37287c131baSJan Høydahl cmd: git ls-remote --exit-code --heads origin {{ stable_branch }} 37387c131baSJan Høydahl stdout: true 37487c131baSJan Høydahl should_fail: true 37587c131baSJan Høydahl comment: We expect error code 2 since {{ stable_branch }} does not already exist 37687c131baSJan Høydahl - !Command 37787c131baSJan Høydahl cmd: git checkout -b {{ stable_branch }} 37887c131baSJan Høydahl tee: true 37987c131baSJan Høydahl - !Command 38087c131baSJan Høydahl cmd: git push origin {{ stable_branch }} 38187c131baSJan Høydahl tee: true 38287c131baSJan Høydahl - !Todo 38387c131baSJan Høydahl id: create_minor_branch 38487c131baSJan Høydahl title: Create a new minor branch off the stable branch 38587c131baSJan Høydahl description: In our case we'll create {{ release_branch }} 38687c131baSJan Høydahl types: 38787c131baSJan Høydahl - major 38887c131baSJan Høydahl - minor 38987c131baSJan Høydahl depends: clean_git_checkout 39087c131baSJan Høydahl commands: !Commands 39187c131baSJan Høydahl root_folder: '{{ git_checkout_folder }}' 39287c131baSJan Høydahl commands_text: Run these commands to create a release branch 39387c131baSJan Høydahl commands: 39487c131baSJan Høydahl - !Command 39587c131baSJan Høydahl cmd: git checkout {{ stable_branch }} 39687c131baSJan Høydahl tee: true 39787c131baSJan Høydahl - !Command 3983134f10aSMike Drob cmd: git pull --ff-only 39987c131baSJan Høydahl tee: true 40087c131baSJan Høydahl - !Command 40187c131baSJan Høydahl cmd: git ls-remote --exit-code --heads origin {{ release_branch }} 40287c131baSJan Høydahl stdout: true 40387c131baSJan Høydahl should_fail: true 40487c131baSJan Høydahl comment: This command should fail with exit code 2 to verify branch {{ release_branch }} does not already exist 40587c131baSJan Høydahl - !Command 40687c131baSJan Høydahl cmd: git checkout -b {{ release_branch }} 40787c131baSJan Høydahl tee: true 40887c131baSJan Høydahl - !Command 40987c131baSJan Høydahl cmd: git push origin {{ release_branch }} 41087c131baSJan Høydahl tee: true 41187c131baSJan Høydahl - !Todo 41287c131baSJan Høydahl id: add_version_major 41357524c6aSChristine Poerschke title: Add a new major version on main branch 41487c131baSJan Høydahl types: 41587c131baSJan Høydahl - major 41687c131baSJan Høydahl depends: clean_git_checkout 41787c131baSJan Høydahl vars: 41887c131baSJan Høydahl next_version: "{{ release_version_major + 1 }}.0.0" 41987c131baSJan Høydahl commands: !Commands 42087c131baSJan Høydahl root_folder: '{{ git_checkout_folder }}' 42157524c6aSChristine Poerschke commands_text: Run these commands to add the new major version {{ next_version }} to the main branch 42287c131baSJan Høydahl commands: 42387c131baSJan Høydahl - !Command 42457524c6aSChristine Poerschke cmd: git checkout main 42587c131baSJan Høydahl tee: true 42687c131baSJan Høydahl - !Command 42787c131baSJan Høydahl cmd: python3 -u dev-tools/scripts/addVersion.py {{ next_version }} 42887c131baSJan Høydahl tee: true 42936af839eSJan Høydahl - !Command 43036af839eSJan Høydahl comment: Make sure the edits done by `addVersion.py` are ok, then push 43136af839eSJan Høydahl cmd: git add -u . && git commit -m "Add next major version {{ next_version }}" && git push 43236af839eSJan Høydahl logfile: commit-stable.log 43387c131baSJan Høydahl post_description: | 43487c131baSJan Høydahl Make sure to follow the manual instructions printed by the script: 43587c131baSJan Høydahl 43687c131baSJan Høydahl * Move backcompat oldIndexes to unsupportedIndexes in TestBackwardsCompatibility 43787c131baSJan Høydahl * Update IndexFormatTooOldException throw cases 43887c131baSJan Høydahl 43987c131baSJan Høydahl There may be other steps needed as well 44087c131baSJan Høydahl - !Todo 44187c131baSJan Høydahl id: add_version_minor 44287c131baSJan Høydahl title: Add a new minor version on stable branch 44387c131baSJan Høydahl types: 44487c131baSJan Høydahl - major 44587c131baSJan Høydahl - minor 44687c131baSJan Høydahl depends: clean_git_checkout 44787c131baSJan Høydahl vars: 44887c131baSJan Høydahl next_version: "{{ release_version_major }}.{{ release_version_minor + 1 }}.0" 44987c131baSJan Høydahl commands: !Commands 45087c131baSJan Høydahl root_folder: '{{ git_checkout_folder }}' 45136af839eSJan Høydahl commands_text: Run these commands to add the new minor version {{ next_version }} to the stable branch 45287c131baSJan Høydahl commands: 45387c131baSJan Høydahl - !Command 45487c131baSJan Høydahl cmd: git checkout {{ stable_branch }} 45587c131baSJan Høydahl tee: true 45687c131baSJan Høydahl - !Command 45787c131baSJan Høydahl cmd: python3 -u dev-tools/scripts/addVersion.py {{ next_version }} 45887c131baSJan Høydahl tee: true 45936af839eSJan Høydahl - !Command 46036af839eSJan Høydahl comment: Make sure the edits done by `addVersion.py` are ok, then push 46136af839eSJan Høydahl cmd: git add -u . && git commit -m "Add next minor version {{ next_version }}" && git push 46236af839eSJan Høydahl logfile: commit-stable.log 46387c131baSJan Høydahl - !Todo 46487c131baSJan Høydahl id: sanity_check_doap 46587c131baSJan Høydahl title: Sanity check the DOAP files 46687c131baSJan Høydahl description: |- 46787c131baSJan Høydahl Sanity check the DOAP files under `dev-tools/doap/`. 46887c131baSJan Høydahl Do they contain all releases less than the one in progress? 46987c131baSJan Høydahl 47087c131baSJan Høydahl TIP: The buildAndPushRelease script run later will check this automatically 47187c131baSJan Høydahl links: 47287c131baSJan Høydahl - https://projects.apache.org/doap.html 47387c131baSJan Høydahl - !Todo 47487c131baSJan Høydahl id: jenkins_builds 47587c131baSJan Høydahl title: Add Jenkins task for the release branch 47687c131baSJan Høydahl description: '...so that builds run for the new branch. Consult the JenkinsReleaseBuilds page.' 47787c131baSJan Høydahl types: 47887c131baSJan Høydahl - major 47987c131baSJan Høydahl - minor 48087c131baSJan Høydahl links: 481674b66ddSJan Høydahl - https://cwiki.apache.org/confluence/display/LUCENEJAVA/JenkinsReleaseBuilds 48287c131baSJan Høydahl - !Todo 48387c131baSJan Høydahl id: inform_devs 48487c131baSJan Høydahl title: Inform Devs of the new Release Branch 48587c131baSJan Høydahl description: |- 48687c131baSJan Høydahl Send a note to dev@ to inform the committers that the branch 48787c131baSJan Høydahl has been created and the feature freeze phase has started. 48887c131baSJan Høydahl 48987c131baSJan Høydahl This is an e-mail template you can use as a basis for 49087c131baSJan Høydahl announcing the new branch and feature freeze. 49187c131baSJan Høydahl 49287c131baSJan Høydahl .Mail template 49387c131baSJan Høydahl ---- 49487c131baSJan Høydahl To: dev@lucene.apache.org 495674b66ddSJan Høydahl Subject: New branch and feature freeze for Lucene {{ release_version }} 49687c131baSJan Høydahl 49787c131baSJan Høydahl NOTICE: 49887c131baSJan Høydahl 49987c131baSJan Høydahl Branch {{ release_branch }} has been cut and versions updated to {{ release_version_major }}.{{ release_version_minor + 1 }} on stable branch. 50087c131baSJan Høydahl 50187c131baSJan Høydahl Please observe the normal rules: 50287c131baSJan Høydahl 50387c131baSJan Høydahl * No new features may be committed to the branch. 50487c131baSJan Høydahl * Documentation patches, build patches and serious bug fixes may be 50587c131baSJan Høydahl committed to the branch. However, you should submit all patches you 50687c131baSJan Høydahl want to commit to Jira first to give others the chance to review 50787c131baSJan Høydahl and possibly vote against the patch. Keep in mind that it is our 50887c131baSJan Høydahl main intention to keep the branch as stable as possible. 50987c131baSJan Høydahl * All patches that are intended for the branch should first be committed 51087c131baSJan Høydahl to the unstable branch, merged into the stable branch, and then into 51187c131baSJan Høydahl the current release branch. 51287c131baSJan Høydahl * Normal unstable and stable branch development may continue as usual. 51387c131baSJan Høydahl However, if you plan to commit a big change to the unstable branch 51487c131baSJan Høydahl while the branch feature freeze is in effect, think twice: can't the 51587c131baSJan Høydahl addition wait a couple more days? Merges of bug fixes into the branch 51687c131baSJan Høydahl may become more difficult. 51787c131baSJan Høydahl * Only Jira issues with Fix version {{ release_version_major }}.{{ release_version_minor }} and priority "Blocker" will delay 51887c131baSJan Høydahl a release candidate build. 51987c131baSJan Høydahl ---- 52087c131baSJan Høydahl types: 52187c131baSJan Høydahl - major 52287c131baSJan Høydahl - minor 52387c131baSJan Høydahl - !Todo 52487c131baSJan Høydahl id: inform_devs_bugfix 52587c131baSJan Høydahl title: Inform Devs about the planned release 52687c131baSJan Høydahl description: |- 52787c131baSJan Høydahl Send a note to dev@ to inform the committers about the rules for committing to the branch. 52887c131baSJan Høydahl 52987c131baSJan Høydahl This is an e-mail template you can use as a basis for 53087c131baSJan Høydahl announcing the rules for committing to the release branch 53187c131baSJan Høydahl 53287c131baSJan Høydahl .Mail template 53387c131baSJan Høydahl ---- 53487c131baSJan Høydahl To: dev@lucene.apache.org 535674b66ddSJan Høydahl Subject: Bugfix release Lucene {{ release_version }} 53687c131baSJan Høydahl 53787c131baSJan Høydahl NOTICE: 53887c131baSJan Høydahl 53987c131baSJan Høydahl I am now preparing for a bugfix release from branch {{ release_branch }} 54087c131baSJan Høydahl 54187c131baSJan Høydahl Please observe the normal rules for committing to this branch: 54287c131baSJan Høydahl 54387c131baSJan Høydahl * Before committing to the branch, reply to this thread and argue 54487c131baSJan Høydahl why the fix needs backporting and how long it will take. 54587c131baSJan Høydahl * All issues accepted for backporting should be marked with {{ release_version }} 54687c131baSJan Høydahl in JIRA, and issues that should delay the release must be marked as Blocker 54787c131baSJan Høydahl * All patches that are intended for the branch should first be committed 54887c131baSJan Høydahl to the unstable branch, merged into the stable branch, and then into 54987c131baSJan Høydahl the current release branch. 55087c131baSJan Høydahl * Only Jira issues with Fix version {{ release_version }} and priority "Blocker" will delay 55187c131baSJan Høydahl a release candidate build. 55287c131baSJan Høydahl ---- 55387c131baSJan Høydahl types: 55487c131baSJan Høydahl - bugfix 55587c131baSJan Høydahl - !Todo 55687c131baSJan Høydahl id: draft_release_notes 55787c131baSJan Høydahl title: Get a draft of the release notes in place 55887c131baSJan Høydahl description: |- 559329e7c7bSJan Høydahl These are typically edited on the Wiki 56087c131baSJan Høydahl 56187c131baSJan Høydahl Clone a page for a previous version as a starting point for your release notes. 56287c131baSJan Høydahl Edit the contents of `CHANGES.txt` into a more concise format for public consumption. 56387c131baSJan Høydahl Ask on dev@ for input. Ideally the timing of this request mostly coincides with the 56487c131baSJan Høydahl release branch creation. It's a good idea to remind the devs of this later in the release too. 565329e7c7bSJan Høydahl 566329e7c7bSJan Høydahl NOTE: Do not add every single JIRA issue, but distill the Release note into important changes! 56787c131baSJan Høydahl links: 568329e7c7bSJan Høydahl - https://cwiki.apache.org/confluence/display/LUCENE/Release+Notes 56987c131baSJan Høydahl - !Todo 57087c131baSJan Høydahl id: new_jira_versions 57187c131baSJan Høydahl title: Add a new version in JIRA for the next release 57287c131baSJan Høydahl description: |- 57387c131baSJan Høydahl Go to the JIRA "Manage Versions" Administration pages and add the new version: 57487c131baSJan Høydahl 57587c131baSJan Høydahl {% if release_type == 'major' -%} 57657524c6aSChristine Poerschke . Change name of version `main ({{ release_version_major }}.0)` into `{{ release_version_major }}.0` 57787c131baSJan Høydahl {%- endif %} 57887c131baSJan Høydahl . Create a new (unreleased) version `{{ get_next_version }}` 57987c131baSJan Høydahl types: 58087c131baSJan Høydahl - major 58187c131baSJan Høydahl - minor 58287c131baSJan Høydahl links: 58387c131baSJan Høydahl - https://issues.apache.org/jira/plugins/servlet/project-config/LUCENE/versions 58487c131baSJan Høydahl- !TodoGroup 58587c131baSJan Høydahl id: artifacts 58687c131baSJan Høydahl title: Build the release artifacts 58787c131baSJan Høydahl description: |- 58887c131baSJan Høydahl If after the last day of the feature freeze phase no blocking issues are 58987c131baSJan Høydahl in JIRA with "Fix Version" {{ release_version }}, then it's time to build the 59087c131baSJan Høydahl release artifacts, run the smoke tester and stage the RC in svn 59187c131baSJan Høydahl depends: 59287c131baSJan Høydahl - test 59387c131baSJan Høydahl - prerequisites 59487c131baSJan Høydahl is_in_rc_loop: true 59587c131baSJan Høydahl todos: 59687c131baSJan Høydahl - !Todo 59787c131baSJan Høydahl id: run_tests 59887c131baSJan Høydahl title: Run javadoc tests 59987c131baSJan Høydahl depends: clean_git_checkout 60087c131baSJan Høydahl commands: !Commands 60187c131baSJan Høydahl root_folder: '{{ git_checkout_folder }}' 60287c131baSJan Høydahl commands_text: Run some tests not ran by `buildAndPublishRelease.py` 60387c131baSJan Høydahl confirm_each_command: false 60487c131baSJan Høydahl commands: 60587c131baSJan Høydahl - !Command 60687c131baSJan Høydahl cmd: git checkout {{ release_branch }} 60787c131baSJan Høydahl stdout: true 60887c131baSJan Høydahl - !Command 6093134f10aSMike Drob cmd: "{{ gradle_cmd }} documentation" 61008e38d34SMike Drob post_description: Check that the task passed. If it failed, commit fixes for the failures before proceeding. 61187c131baSJan Høydahl - !Todo 6123134f10aSMike Drob id: clear_gradle_cache 6133134f10aSMike Drob title: Clear the gradle cache 61487c131baSJan Høydahl description: | 6153134f10aSMike Drob It is recommended to clean your Gradle cache before building the artifacts. 6163134f10aSMike Drob This ensures that all Gradle dependencies are freshly downloaded, 61787c131baSJan Høydahl so we emulate a user that never used the Lucene build system before. 61887c131baSJan Høydahl commands: !Commands 61987c131baSJan Høydahl root_folder: '{{ home }}' 6203134f10aSMike Drob remove_files: .gradle/caches/modules-2/files-2.1_bak 62187c131baSJan Høydahl commands_text: These commands will help you rename the folder so you can get it back later if you wish 62287c131baSJan Høydahl commands: 62387c131baSJan Høydahl - !Command 6243134f10aSMike Drob cmd: "{{ rename_cmd }} files-2.1 files-2.1_bak" 6253134f10aSMike Drob cwd: .gradle/caches/modules-2 62687c131baSJan Høydahl stdout: true 62787c131baSJan Høydahl - !Todo 62887c131baSJan Høydahl id: build_rc 62987c131baSJan Høydahl title: Build the release candidate 63087c131baSJan Høydahl depends: 63187c131baSJan Høydahl - gpg 63287c131baSJan Høydahl - run_tests 63387c131baSJan Høydahl vars: 63487c131baSJan Høydahl logfile: '{{ [rc_folder, ''logs'', ''buildAndPushRelease.log''] | path_join }}' 63587c131baSJan Høydahl git_rev: '{{ current_git_rev }}' # Note, git_rev will be recorded in todo state AFTER completion of commands 63687c131baSJan Høydahl local_keys: '{% if keys_downloaded %} --local-keys "{{ [config_path, ''KEYS''] | path_join }}"{% endif %}' 63787c131baSJan Høydahl persist_vars: 63887c131baSJan Høydahl - git_rev 63987c131baSJan Høydahl commands: !Commands 64087c131baSJan Høydahl root_folder: '{{ git_checkout_folder }}' 64187c131baSJan Høydahl commands_text: |- 64287c131baSJan Høydahl In this step we will build the RC using python script `buildAndPushRelease.py` 64387c131baSJan Høydahl We have tried to compile the correct command below, and you can choose whether 64487c131baSJan Høydahl to let this script kick it off or execute them in another Terminal window yourself 64587c131baSJan Høydahl 64687c131baSJan Høydahl Note that the build will take a long time. To follow the detailed build 64787c131baSJan Høydahl log, you can tail the log file {{ logfile | default("<logfile>") }}. 64887c131baSJan Høydahl confirm_each_command: false 64987c131baSJan Høydahl remove_files: 65087c131baSJan Høydahl - '{{ dist_file_path }}' 65187c131baSJan Høydahl commands: 65287c131baSJan Høydahl - !Command 65387c131baSJan Høydahl cmd: git checkout {{ release_branch }} 65487c131baSJan Høydahl tee: true 65587c131baSJan Høydahl - !Command 65687c131baSJan Høydahl cmd: git clean -df && git checkout -- . 65787c131baSJan Høydahl comment: Make sure checkout is clean and up to date 65887c131baSJan Høydahl logfile: git_clean.log 65987c131baSJan Høydahl tee: true 66087c131baSJan Høydahl - !Command 6613134f10aSMike Drob cmd: git pull --ff-only 66287c131baSJan Høydahl tee: true 66387c131baSJan Høydahl - !Command 664daf14981SAlan Woodward cmd: python3 -u dev-tools/scripts/buildAndPushRelease.py {{ local_keys }} --logfile {{ logfile }} --push-local "{{ dist_file_path }}" --rc-num {{ rc_number }} --sign {{ gpg_key | default("<gpg_key_id>", True) }} 66587c131baSJan Høydahl comment: "NOTE: Remember to type your GPG pass-phrase at the prompt!" 66687c131baSJan Høydahl logfile: build_rc.log 66787c131baSJan Høydahl tee: true 66887c131baSJan Høydahl - !Todo 66987c131baSJan Høydahl id: smoke_tester 67087c131baSJan Høydahl title: Run the smoke tester 67187c131baSJan Høydahl depends: build_rc 67287c131baSJan Høydahl vars: 6730902d803SAdrien Grand dist_folder: lucene-{{ release_version }}-RC{{ rc_number }}-rev-{{ build_rc.git_rev | default("<git_rev>", True) }} 67487c131baSJan Høydahl dist_path: '{{ [dist_file_path, dist_folder] | path_join }}' 67587c131baSJan Høydahl tmp_dir: '{{ [rc_folder, ''smoketest''] | path_join }}' 67687c131baSJan Høydahl local_keys: '{% if keys_downloaded %} --local-keys "{{ [config_path, ''KEYS''] | path_join }}"{% endif %}' 67787c131baSJan Høydahl commands: !Commands 67887c131baSJan Høydahl root_folder: '{{ git_checkout_folder }}' 67987c131baSJan Høydahl commands_text: Here we'll smoke test the release by 'downloading' the artifacts, running the tests, validating GPG signatures etc. 68087c131baSJan Høydahl remove_files: 68187c131baSJan Høydahl - '{{ tmp_dir }}' 68287c131baSJan Høydahl commands: 68387c131baSJan Høydahl - !Command 68487c131baSJan Høydahl cmd: python3 -u dev-tools/scripts/smokeTestRelease.py {{ local_keys }} --tmp-dir "{{ tmp_dir }}" file://{{ dist_path | expanduser }} 68587c131baSJan Høydahl logfile: smoketest.log 68687c131baSJan Høydahl - !Todo 68787c131baSJan Høydahl id: import_svn 68887c131baSJan Høydahl title: Import artifacts into SVN 68987c131baSJan Høydahl description: | 69087c131baSJan Høydahl Here we'll import the artifacts into Subversion. 69187c131baSJan Høydahl depends: smoke_tester 69287c131baSJan Høydahl vars: 6930902d803SAdrien Grand dist_folder: lucene-{{ release_version }}-RC{{ rc_number }}-rev-{{ build_rc.git_rev | default("<git_rev>", True) }} 69487c131baSJan Høydahl dist_path: '{{ [dist_file_path, dist_folder] | path_join }}' 69587c131baSJan Høydahl dist_url: https://dist.apache.org/repos/dist/dev/lucene/{{ dist_folder}} 69687c131baSJan Høydahl commands: !Commands 69787c131baSJan Høydahl root_folder: '{{ git_checkout_folder }}' 69887c131baSJan Høydahl commands_text: Have your Apache credentials handy, you'll be prompted for your password 69987c131baSJan Høydahl commands: 70087c131baSJan Høydahl - !Command 701674b66ddSJan Høydahl cmd: svn -m "Lucene {{ release_version }} RC{{ rc_number }}" import {{ dist_path }} {{ dist_url }} 70287c131baSJan Høydahl logfile: import_svn.log 70387c131baSJan Høydahl tee: true 70487c131baSJan Høydahl - !Todo 70587c131baSJan Høydahl id: verify_staged 70687c131baSJan Høydahl title: Verify staged artifacts 70787c131baSJan Høydahl description: | 70887c131baSJan Høydahl A lightweight smoke testing which downloads the artifacts from stage 70987c131baSJan Høydahl area and checks hash and signatures, but does not re-run all tests. 71087c131baSJan Høydahl depends: import_svn 71187c131baSJan Høydahl vars: 7120902d803SAdrien Grand dist_folder: lucene-{{ release_version }}-RC{{ rc_number }}-rev-{{ build_rc.git_rev | default("<git_rev>", True) }} 71387c131baSJan Høydahl dist_url: https://dist.apache.org/repos/dist/dev/lucene/{{ dist_folder}} 71487c131baSJan Høydahl tmp_dir: '{{ [rc_folder, ''smoketest_staged''] | path_join }}' 71587c131baSJan Høydahl local_keys: '{% if keys_downloaded %} --local-keys "{{ [config_path, ''KEYS''] | path_join }}"{% endif %}' 71687c131baSJan Høydahl commands: !Commands 71787c131baSJan Høydahl root_folder: '{{ git_checkout_folder }}' 71887c131baSJan Høydahl commands_text: Here we'll verify that the staged artifacts are downloadable and hash/signatures match. 71987c131baSJan Høydahl remove_files: 72087c131baSJan Høydahl - '{{ tmp_dir }}' 72187c131baSJan Høydahl commands: 72287c131baSJan Høydahl - !Command 72387c131baSJan Høydahl cmd: python3 -u dev-tools/scripts/smokeTestRelease.py {{ local_keys }} --download-only --tmp-dir "{{ tmp_dir }}" {{ dist_url }} 72487c131baSJan Høydahl logfile: smoketest_staged.log 72587c131baSJan Høydahl- !TodoGroup 72687c131baSJan Høydahl id: voting 72787c131baSJan Høydahl title: Hold the vote and sum up the results 72887c131baSJan Høydahl description: These are the steps necessary for the voting process. Read up on the link first! 72987c131baSJan Høydahl is_in_rc_loop: true 73087c131baSJan Høydahl todos: 73187c131baSJan Høydahl - !Todo 73287c131baSJan Høydahl id: initiate_vote 73387c131baSJan Høydahl title: Initiate the vote 73487c131baSJan Høydahl depends: verify_staged 73587c131baSJan Høydahl description: | 73687c131baSJan Høydahl If the smoke test passes against the staged artifacts, send an email to the dev mailing list announcing the release candidate. 73787c131baSJan Høydahl 73887c131baSJan Høydahl .Mail template 73987c131baSJan Høydahl ---- 74087c131baSJan Høydahl To: dev@lucene.apache.org 741674b66ddSJan Høydahl Subject: [VOTE] Release Lucene {{ release_version }} RC{{ rc_number }} 74287c131baSJan Høydahl 743674b66ddSJan Høydahl Please vote for release candidate {{ rc_number }} for Lucene {{ release_version }} 74487c131baSJan Høydahl 74587c131baSJan Høydahl The artifacts can be downloaded from: 7460902d803SAdrien Grand https://dist.apache.org/repos/dist/dev/lucene/lucene-{{ release_version }}-RC{{ rc_number }}-rev-{{ build_rc.git_rev | default("<git_rev>", True) }} 74787c131baSJan Høydahl 74887c131baSJan Høydahl You can run the smoke tester directly with this command: 74987c131baSJan Høydahl 75087c131baSJan Høydahl python3 -u dev-tools/scripts/smokeTestRelease.py \ 7510902d803SAdrien Grand https://dist.apache.org/repos/dist/dev/lucene/lucene-{{ release_version }}-RC{{ rc_number }}-rev-{{ build_rc.git_rev | default("<git_rev>", True) }} 75287c131baSJan Høydahl 753d86b473aSJan Høydahl The vote will be open for at least 72 hours i.e. until {{ vote_close }}. 75487c131baSJan Høydahl 75587c131baSJan Høydahl [ ] +1 approve 75687c131baSJan Høydahl [ ] +0 no opinion 75787c131baSJan Høydahl [ ] -1 disapprove (and reason why) 75887c131baSJan Høydahl 75987c131baSJan Høydahl Here is my +1 76087c131baSJan Høydahl ---- 761d86b473aSJan Høydahl 762d86b473aSJan Høydahl {% if vote_close_72h_holidays %} 763d86b473aSJan Høydahl [IMPORTANT] 764d86b473aSJan Høydahl ==== 765d86b473aSJan Høydahl The voting period contains one or more holidays. Please consider extending the vote deadline. 766d86b473aSJan Høydahl 767d86b473aSJan Høydahl {% for holiday in vote_close_72h_holidays %}* {{ holiday }} 768d86b473aSJan Høydahl {% endfor %} 769d86b473aSJan Høydahl ==== 770d86b473aSJan Høydahl {%- endif %} 77187c131baSJan Høydahl vars: 77287c131baSJan Høydahl vote_close: '{{ vote_close_72h }}' 77387c131baSJan Høydahl vote_close_epoch: '{{ vote_close_72h_epoch }}' 77487c131baSJan Høydahl persist_vars: 77587c131baSJan Høydahl - vote_close 77687c131baSJan Høydahl - vote_close_epoch 77787c131baSJan Høydahl function: create_ical 77887c131baSJan Høydahl links: 77987c131baSJan Høydahl - https://www.apache.org/foundation/voting.html 78087c131baSJan Høydahl - !Todo 78187c131baSJan Høydahl id: end_vote 78287c131baSJan Høydahl title: End vote 78387c131baSJan Høydahl depends: initiate_vote 78487c131baSJan Høydahl description: | 78587c131baSJan Høydahl At the end of the voting deadline, count the votes and send RESULT message to the mailing list. 78687c131baSJan Høydahl 78787c131baSJan Høydahl {% set vote_close_epoch = initiate_vote.vote_close_epoch | int %} 78887c131baSJan Høydahl {% if epoch < vote_close_epoch %} 78987c131baSJan Høydahl WARNING: The planned voting deadline {{ initiate_vote.vote_close }} has not yet passed 79087c131baSJan Høydahl {% else %} 79187c131baSJan Høydahl The planned 72h voting deadline {{ initiate_vote.vote_close }} has passed. 79287c131baSJan Høydahl {% endif %} 79387c131baSJan Høydahl asciidoc: | 79487c131baSJan Høydahl (( template=vote_macro )) 79587c131baSJan Høydahl Note down how many votes were cast, summing as: 79687c131baSJan Høydahl 79787c131baSJan Høydahl * Binding PMC-member +1 votes 79887c131baSJan Høydahl * Non-binding +1 votes 79987c131baSJan Høydahl * Neutral +/-0 votes 80087c131baSJan Høydahl * Negative -1 votes 80187c131baSJan Høydahl 80287c131baSJan Høydahl You need 3 binding +1 votes and more +1 than -1 votes for the release to happen. 80387c131baSJan Høydahl A release cannot be vetoed, see more in provided links. 80487c131baSJan Høydahl 80587c131baSJan Høydahl Here are some mail templates for successful and failed vote results with sample numbers: 80687c131baSJan Høydahl 80787c131baSJan Høydahl {{ end_vote_result(3,1,0,2) }} 80887c131baSJan Høydahl 80987c131baSJan Høydahl {{ end_vote_result(3,1,0,4) }} 81087c131baSJan Høydahl 81187c131baSJan Høydahl {{ end_vote_result(2,9,0,0) }} 81287c131baSJan Høydahl user_input: 81387c131baSJan Høydahl - !UserInput 81487c131baSJan Høydahl type: int 81587c131baSJan Høydahl prompt: Number of binding +1 votes (PMC members) 81687c131baSJan Høydahl name: plus_binding 81787c131baSJan Høydahl - !UserInput 81887c131baSJan Høydahl type: int 81987c131baSJan Høydahl prompt: Number of other +1 votes 82087c131baSJan Høydahl name: plus_other 82187c131baSJan Høydahl - !UserInput 82287c131baSJan Høydahl type: int 82387c131baSJan Høydahl prompt: Number of 0 votes 82487c131baSJan Høydahl name: zero 82587c131baSJan Høydahl - !UserInput 82687c131baSJan Høydahl type: int 82787c131baSJan Høydahl prompt: Number of -1 votes 82887c131baSJan Høydahl name: minus 82987c131baSJan Høydahl post_description: | 83087c131baSJan Høydahl (( template=vote_logic )) 83187c131baSJan Høydahl (( template=vote_macro )) 83287c131baSJan Høydahl {% if passed -%} 83387c131baSJan Høydahl Congratulations! The vote has passed. 83487c131baSJan Høydahl 83587c131baSJan Høydahl {% if minus > 0 %} 83687c131baSJan Høydahl However, there were negative votes. A release cannot be vetoed, and as long as 83787c131baSJan Høydahl there are more positive than negative votes you can techically release 83887c131baSJan Høydahl the software. However, please review the negative votes and consider 83987c131baSJan Høydahl a re-spin. 84087c131baSJan Høydahl 84187c131baSJan Høydahl {% endif %} 84287c131baSJan Høydahl {%- endif %} 84387c131baSJan Høydahl {{ end_vote_result(plus_binding,plus_other,zero,minus) }} 84487c131baSJan Høydahl links: 84587c131baSJan Høydahl - https://www.apache.org/foundation/voting.html 84687c131baSJan Høydahl- !TodoGroup 84787c131baSJan Høydahl id: publish 848f38c4012SJan Høydahl title: Publishing to the ASF Distribution Directory 849f38c4012SJan Høydahl description: Once the vote has passed, the release may be published to the ASF Distribution Directory and to Maven Central. 85087c131baSJan Høydahl todos: 85187c131baSJan Høydahl - !Todo 85287c131baSJan Høydahl id: tag_release 85387c131baSJan Høydahl title: Tag the release 85487c131baSJan Høydahl description: Tag the release from the same revision from which the passing release candidate's was built 85587c131baSJan Høydahl commands: !Commands 85687c131baSJan Høydahl root_folder: '{{ git_checkout_folder }}' 85787c131baSJan Høydahl commands_text: This will tag the release in git 85887c131baSJan Høydahl logs_prefix: tag_release 85987c131baSJan Høydahl commands: 86087c131baSJan Høydahl - !Command 861674b66ddSJan Høydahl cmd: git tag -a releases/lucene/{{ release_version }} -m "Lucene {{ release_version }} release" {{ build_rc.git_rev | default("<git_rev>", True) }} 86287c131baSJan Høydahl logfile: git_tag.log 86387c131baSJan Høydahl tee: true 86487c131baSJan Høydahl - !Command 865674b66ddSJan Høydahl cmd: git push origin releases/lucene/{{ release_version }} 86687c131baSJan Høydahl logfile: git_push_tag.log 86787c131baSJan Høydahl tee: true 86887c131baSJan Høydahl - !Todo 86987c131baSJan Høydahl id: rm_staged_mvn 87087c131baSJan Høydahl title: Delete mvn artifacts from staging repo 87187c131baSJan Høydahl vars: 8720902d803SAdrien Grand dist_folder: lucene-{{ release_version }}-RC{{ rc_number }}-rev-{{ build_rc.git_rev | default("<git_rev>", True) }} 87387c131baSJan Høydahl dist_path: '{{ [dist_file_path, dist_folder] | path_join }}' 87487c131baSJan Høydahl dist_stage_url: https://dist.apache.org/repos/dist/dev/lucene/{{ dist_folder}} 87587c131baSJan Høydahl commands: !Commands 87687c131baSJan Høydahl root_folder: '{{ git_checkout_folder }}' 87787c131baSJan Høydahl confirm_each_command: false 878f38c4012SJan Høydahl commands_text: This will remove maven artifacts so they do not end up in the Distribution Directory 87987c131baSJan Høydahl commands: 88087c131baSJan Høydahl - !Command 88187c131baSJan Høydahl cmd: svn rm -m "Delete the lucene maven artifacts" {{ dist_stage_url }}/lucene/maven 88287c131baSJan Høydahl logfile: svn_rm_mvn_lucene.log 88387c131baSJan Høydahl tee: true 88487c131baSJan Høydahl - !Todo 88587c131baSJan Høydahl id: mv_to_release 88687c131baSJan Høydahl title: Move release artifacts to release repo 88787c131baSJan Høydahl vars: 8880902d803SAdrien Grand dist_folder: lucene-{{ release_version }}-RC{{ rc_number }}-rev-{{ build_rc.git_rev | default("<git_rev>", True) }} 88987c131baSJan Høydahl dist_stage_url: https://dist.apache.org/repos/dist/dev/lucene/{{ dist_folder}} 89087c131baSJan Høydahl dist_release_url: https://dist.apache.org/repos/dist/release/lucene 89187c131baSJan Høydahl commands: !Commands 89287c131baSJan Høydahl root_folder: '{{ git_checkout_folder }}' 89387c131baSJan Høydahl confirm_each_command: false 89487c131baSJan Høydahl commands_text: This will move the new release artifacts from staging repo to the release repo 89587c131baSJan Høydahl commands: 89687c131baSJan Høydahl - !Command 89787c131baSJan Høydahl cmd: svn move -m "Move Lucene {{ release_version }} RC{{ rc_number }} to release repo" {{ dist_stage_url }}/lucene {{ dist_release_url }}/java/{{ release_version }} 89887c131baSJan Høydahl logfile: svn_mv_lucene.log 89987c131baSJan Høydahl tee: true 90087c131baSJan Høydahl - !Command 9010902d803SAdrien Grand cmd: svn rm -m "Clean up the RC folder for {{ release_version }} RC{{ rc_number }}" https://dist.apache.org/repos/dist/dev/lucene/lucene-{{ release_version }}-RC{{ rc_number }}-rev-{{ build_rc.git_rev | default("<git_rev>", True) }} 90287c131baSJan Høydahl logfile: svn_rm_containing.log 90387c131baSJan Høydahl comment: Clean up containing folder on the staging repo 90487c131baSJan Høydahl tee: true 905674b66ddSJan Høydahl post_description: 'Note at this point you will see the Jenkins job "Lucene-SmokeRelease-main" begin to fail, until you run the "Generate Backcompat Indexes" ' 90687c131baSJan Høydahl - !Todo 9072f6807ccSJan Høydahl id: stage_maven 9082f6807ccSJan Høydahl title: Stage the maven artifacts for publishing 90987c131baSJan Høydahl vars: 9100902d803SAdrien Grand dist_folder: lucene-{{ release_version }}-RC{{ rc_number }}-rev-{{ build_rc.git_rev | default("<git_rev>", True) }} 91187c131baSJan Høydahl commands: !Commands 91287c131baSJan Høydahl root_folder: '{{ git_checkout_folder }}' 91387c131baSJan Høydahl confirm_each_command: true 91487c131baSJan Høydahl commands_text: In the source checkout do the following (note that this step will prompt you for your Apache LDAP credentials) 91587c131baSJan Høydahl commands: 91687c131baSJan Høydahl - !Command 91787c131baSJan Høydahl cmd: ant clean stage-maven-artifacts -Dmaven.dist.dir={{ [dist_file_path, dist_folder, 'lucene', 'maven'] | path_join }} -Dm2.repository.id=apache.releases.https -Dm2.repository.url={{ m2_repository_url }} 91887c131baSJan Høydahl logfile: publish_lucene_maven.log 9192f6807ccSJan Høydahl post_description: The artifacts are not published yet, please proceed with the next step to actually publish! 9202f6807ccSJan Høydahl - !Todo 9212f6807ccSJan Høydahl id: publish_maven 9222f6807ccSJan Høydahl depends: stage_maven 9232f6807ccSJan Høydahl title: Publish the staged maven artifacts 9242f6807ccSJan Høydahl description: | 92587c131baSJan Høydahl Once you have transferred all maven artifacts to repository.apache.org, 9262f6807ccSJan Høydahl you will need to do some manual steps to actually release them to Maven Central: 92787c131baSJan Høydahl 92887c131baSJan Høydahl * Close the staging repository 92987c131baSJan Høydahl . Log in to https://repository.apache.org/ with your ASF credentials 93087c131baSJan Høydahl . Select "Staging Repositories" under "Build Promotion" from the navigation bar on the left 93187c131baSJan Høydahl . Select the staging repository containing the Lucene artifacts 932674b66ddSJan Høydahl . Click on the "Close" button above the repository list, then enter a description when prompted, e.g. "Lucene {{ release_version }} RC{{ rc_number }}" 933674c2c28SMike Drob * The system will now spend some time validating the artifacts. Grab a coke and come back. 934674b66ddSJan Høydahl * Release the Lucene artifacts 93587c131baSJan Høydahl . Wait and keep clicking refresh until the "Release" button becomes available 936674b66ddSJan Høydahl . Click on the "Release" button above the repository list, then enter a description when prompted, e.g. "Lucene {{ release_version }}". 93787c131baSJan Høydahl 938f38c4012SJan Høydahl Maven central should show the release after a short while 93987c131baSJan Høydahl links: 94087c131baSJan Høydahl - https://wiki.apache.org/lucene-java/PublishMavenArtifacts 94187c131baSJan Høydahl - https://repository.apache.org/index.html 94287c131baSJan Høydahl - !Todo 943f38c4012SJan Høydahl id: check_distribution_directory 944f38c4012SJan Høydahl depends: publish_maven 945f38c4012SJan Høydahl title: Check that artifacts are available 946f38c4012SJan Høydahl function: check_artifacts_available 947f38c4012SJan Høydahl description: | 948f38c4012SJan Høydahl The task will attempt to fetch https://dlcdn.apache.org/lucene/java/{{ release_version }}/lucene-{{ release_version }}-src.tgz.asc 949f38c4012SJan Høydahl to validate ASF repo, and https://repo1.maven.org/maven2/org/apache/lucene/lucene-core/{{ release_version }}/lucene-core-{{ release_version }}.pom.asc 950f38c4012SJan Høydahl to validate Maven repo. 951f38c4012SJan Høydahl 952f38c4012SJan Høydahl If the check fails, please re-run the task, until it succeeds. 953f38c4012SJan Høydahl 95487c131baSJan Høydahl- !TodoGroup 95587c131baSJan Høydahl id: website 95687c131baSJan Høydahl title: Update the website 95787c131baSJan Høydahl description: | 958329e7c7bSJan Høydahl For every release, we publish docs on the website, we need to update the 959329e7c7bSJan Høydahl download pages etc. The website is hosted in https://github.com/apache/lucene-site 960674b66ddSJan Høydahl but the Javadocs are pushed to SVN and then included in the main site through links. 96187c131baSJan Høydahl todos: 96287c131baSJan Høydahl - !Todo 96387c131baSJan Høydahl id: website_docs 96487c131baSJan Høydahl title: Publish docs, changes and javadocs 96587c131baSJan Høydahl description: | 966674c2c28SMike Drob Ensure your refrigerator has at least 2 beers - the svn import operation can take a while, 96787c131baSJan Høydahl depending on your upload bandwidth. We'll publish this directly to the production tree. 96887c131baSJan Høydahl At the end of the task, the two links below shall work. 96987c131baSJan Høydahl links: 97087c131baSJan Høydahl - http://lucene.apache.org/core/{{ version }} 97187c131baSJan Høydahl vars: 972674b66ddSJan Høydahl release_tag: releases/lucene/{{ release_version }} 97387c131baSJan Høydahl version: "{{ release_version_major }}_{{ release_version_minor }}_{{ release_version_bugfix }}" 97487c131baSJan Høydahl commands: !Commands 97587c131baSJan Høydahl root_folder: '{{ git_checkout_folder }}' 976329e7c7bSJan Høydahl commands_text: Build the documentation and add it to SVN production tree 97787c131baSJan Høydahl commands: 97887c131baSJan Høydahl - !Command 97987c131baSJan Høydahl cmd: git fetch && git checkout {{ release_tag }} 98087c131baSJan Høydahl comment: Checkout the release branch 98187c131baSJan Høydahl logfile: checkout-release-tag.log 98287c131baSJan Høydahl tee: true 98387c131baSJan Høydahl - !Command 98408e38d34SMike Drob cmd: "{{ gradle_cmd }} documentation -Dversion.release={{ release_version }}" 98587c131baSJan Høydahl comment: Build documentation 98687c131baSJan Høydahl - !Command 987603a43f6SAdrien Grand cmd: svn -m "Add docs, changes and javadocs for Lucene {{ release_version }}" import {{ git_checkout_folder }}/lucene/documentation/build/site https://svn.apache.org/repos/infra/sites/lucene/core/{{ version }} 98887c131baSJan Høydahl logfile: add-docs-lucene.log 98987c131baSJan Høydahl comment: Add docs for Lucene 99087c131baSJan Høydahl - !Todo 991329e7c7bSJan Høydahl id: website_git_clone 992329e7c7bSJan Høydahl title: Do a clean git clone of the website repo 993329e7c7bSJan Høydahl description: This is where we'll commit later updates for the website. 994329e7c7bSJan Høydahl commands: !Commands 995329e7c7bSJan Høydahl root_folder: '{{ release_folder }}' 996329e7c7bSJan Høydahl commands_text: Run this command to clone the website git repo 997329e7c7bSJan Høydahl remove_files: 998329e7c7bSJan Høydahl - '{{ git_website_folder }}' 999329e7c7bSJan Høydahl commands: 1000329e7c7bSJan Høydahl - !Command 1001329e7c7bSJan Høydahl cmd: git clone --progress https://gitbox.apache.org/repos/asf/lucene-site.git lucene-site 1002329e7c7bSJan Høydahl logfile: website_git_clone.log 1003329e7c7bSJan Høydahl - !Todo 1004329e7c7bSJan Høydahl id: website_update_versions 1005329e7c7bSJan Høydahl title: Update website versions 1006329e7c7bSJan Høydahl depends: website_git_clone 100787c131baSJan Høydahl vars: 1008674b66ddSJan Høydahl release_tag: releases/lucene/{{ release_version }} 100987c131baSJan Høydahl description: | 1010329e7c7bSJan Høydahl We need to update the website so that the download pages list the new release, and the 1011329e7c7bSJan Høydahl "latest" javadoc links point to the new release. 101287c131baSJan Høydahl 1013329e7c7bSJan Høydahl Fortunately the only thing you need to change is a few variables in `pelicanconf.py`. 1014329e7c7bSJan Høydahl If you release a current latest release, change the `LUCENE_LATEST_RELEASE` and `LUCENE_LATEST_RELEASE_DATE` 1015329e7c7bSJan Høydahl variables. 1016329e7c7bSJan Høydahl If you relese a bugfix release for previos version, then change the `LUCENE_PREVIOUS_MAJOR_RELEASE` variable. 101787c131baSJan Høydahl commands: !Commands 1018329e7c7bSJan Høydahl root_folder: '{{ git_website_folder }}' 1019329e7c7bSJan Høydahl commands_text: Edit pelicanconf.py to update version numbers 102087c131baSJan Høydahl commands: 102187c131baSJan Høydahl - !Command 1022329e7c7bSJan Høydahl cmd: "{{ editor }} pelicanconf.py" 1023329e7c7bSJan Høydahl comment: Edit the pelicanconf.file 1024329e7c7bSJan Høydahl stdout: true 102587c131baSJan Høydahl - !Command 1026329e7c7bSJan Høydahl cmd: git commit -am "Update version variables for release {{ release_version }}" 1027329e7c7bSJan Høydahl logfile: commit.log 1028329e7c7bSJan Høydahl stdout: true 1029329e7c7bSJan Høydahl post_description: | 1030329e7c7bSJan Høydahl You will push and verify all changes in a later step 103187c131baSJan Høydahl - !Todo 1032329e7c7bSJan Høydahl id: prepare_announce_lucene 1033329e7c7bSJan Høydahl title: Author the Lucene release news 1034329e7c7bSJan Høydahl depends: website_git_clone 103587c131baSJan Høydahl description: | 1036329e7c7bSJan Høydahl Edit a news text for the Lucene website. This text will be the basis for the release announcement email later. 1037329e7c7bSJan Høydahl This step will open an editor with a template. You will need to copy/paste the final release announcement text 1038329e7c7bSJan Høydahl from the Wiki page and format it as Markdown. 1039329e7c7bSJan Høydahl function: prepare_announce_lucene 104087c131baSJan Høydahl commands: !Commands 1041329e7c7bSJan Høydahl root_folder: '{{ git_website_folder }}' 104287c131baSJan Høydahl commands_text: | 1043329e7c7bSJan Høydahl Copy the Lucene announcement from https://cwiki.apache.org/confluence/display/LUCENE/Release+Notes 104487c131baSJan Høydahl You have to exit the editor after edit to continue. 104587c131baSJan Høydahl commands: 104687c131baSJan Høydahl - !Command 104787c131baSJan Høydahl cmd: "{{ editor }} {{ lucene_news_file }}" 1048329e7c7bSJan Høydahl comment: Edit the for Lucene announcement news 1049329e7c7bSJan Høydahl stdout: true 105087c131baSJan Høydahl - !Command 1051329e7c7bSJan Høydahl cmd: git add . && git commit -m "Adding Lucene news for release {{ release_version }}" 1052329e7c7bSJan Høydahl logfile: commit.log 1053329e7c7bSJan Høydahl stdout: true 105487c131baSJan Høydahl post_description: | 1055329e7c7bSJan Høydahl You will push and verify all changes in a later step 105687c131baSJan Høydahl - !Todo 105787c131baSJan Høydahl id: update_other 105887c131baSJan Høydahl title: Update rest of webpage 1059329e7c7bSJan Høydahl depends: website_update_versions 106087c131baSJan Høydahl description: | 106187c131baSJan Høydahl Update the rest of the web page. Please review all files in the checkout 106287c131baSJan Høydahl and consider if any need change based on what changes there are in the 106387c131baSJan Høydahl release you are doing. Things to consider: 106487c131baSJan Høydahl 106587c131baSJan Høydahl * System requirements 106687c131baSJan Høydahl * Quickstart and tutorial? 106787c131baSJan Høydahl commands: !Commands 1068329e7c7bSJan Høydahl root_folder: '{{ git_website_folder }}' 106987c131baSJan Høydahl commands_text: | 107087c131baSJan Høydahl We'll open an editor on the root folder of the site checkout 107187c131baSJan Høydahl You have to exit the editor after edit to continue. 107287c131baSJan Høydahl commands: 107387c131baSJan Høydahl - !Command 107487c131baSJan Høydahl cmd: "{{ editor }} ." 107587c131baSJan Høydahl comment: Open an editor on the root folder 107687c131baSJan Høydahl stdout: true 1077329e7c7bSJan Høydahl - !Command 1078329e7c7bSJan Høydahl cmd: git commit -am "Other website changes for release {{ release_version }}" 1079329e7c7bSJan Høydahl comment: Commit the other changes 1080329e7c7bSJan Høydahl logfile: commit.log 1081329e7c7bSJan Høydahl stdout: true 108287c131baSJan Høydahl - !Todo 1083329e7c7bSJan Høydahl id: stage_website 1084329e7c7bSJan Høydahl title: Stage the website changes 108587c131baSJan Høydahl depends: 1086674b66ddSJan Høydahl - prepare_announce_lucene 108787c131baSJan Høydahl description: | 108857524c6aSChristine Poerschke Push the website changes to 'main' branch, and check the staging site. 1089329e7c7bSJan Høydahl You will get a chance to preview the diff of all changes before you push. 1090329e7c7bSJan Høydahl If you need to do changes, do the changes (e.g. by re-running previous step 'Update rest of webpage') 1091329e7c7bSJan Høydahl and commit your changes. Then re-run this step and push when everything is OK. 109287c131baSJan Høydahl commands: !Commands 1093329e7c7bSJan Høydahl root_folder: '{{ git_website_folder }}' 109487c131baSJan Høydahl commands_text: | 109587c131baSJan Høydahl Verify that changes look good, and then publish. 109687c131baSJan Høydahl You have to exit the editor after review to continue. 109787c131baSJan Høydahl commands: 109887c131baSJan Høydahl - !Command 109957524c6aSChristine Poerschke cmd: git checkout main && git status 110087c131baSJan Høydahl stdout: true 110187c131baSJan Høydahl - !Command 1102329e7c7bSJan Høydahl cmd: git diff 110387c131baSJan Høydahl redirect: "{{ [release_folder, 'website.diff'] | path_join }}" 110487c131baSJan Høydahl comment: Make a diff of all edits. Will open in next step 110587c131baSJan Høydahl - !Command 110687c131baSJan Høydahl cmd: "{{ editor }} {{ [release_folder, 'website.diff'] | path_join }}" 1107329e7c7bSJan Høydahl comment: View the diff of the website changes. Abort if you need to do changes. 110887c131baSJan Høydahl stdout: true 110987c131baSJan Høydahl - !Command 1110329e7c7bSJan Høydahl cmd: git push origin 1111329e7c7bSJan Høydahl comment: Push all changes 1112329e7c7bSJan Høydahl logfile: push-website.log 111387c131baSJan Høydahl post_description: | 1114329e7c7bSJan Høydahl Wait a few minutes for the build to happen. You can follow the site build at https://ci2.apache.org/#/builders/3 1115329e7c7bSJan Høydahl and view the staged site at https://lucene.staged.apache.org 1116329e7c7bSJan Høydahl Verify that correct links and versions are mentioned in download pages, download buttons etc. 1117329e7c7bSJan Høydahl If you find anything wrong, then commit and push any changes and check again. 111887c131baSJan Høydahl 1119329e7c7bSJan Høydahl Next step is to merge the changes to branch 'production' in order to publish the site. 112087c131baSJan Høydahl links: 1121329e7c7bSJan Høydahl - https://ci2.apache.org/#/builders/3 1122329e7c7bSJan Høydahl - https://lucene.staged.apache.org 1123329e7c7bSJan Høydahl - !Todo 1124329e7c7bSJan Høydahl id: publish_website 1125329e7c7bSJan Høydahl title: Publish the website changes 1126329e7c7bSJan Høydahl depends: 1127329e7c7bSJan Høydahl - stage_website 1128329e7c7bSJan Høydahl description: | 1129329e7c7bSJan Høydahl Push the website changes to 'production' branch. This will build and publish the live site on 1130329e7c7bSJan Høydahl https://lucene.apache.org 1131329e7c7bSJan Høydahl commands: !Commands 1132329e7c7bSJan Høydahl root_folder: '{{ git_website_folder }}' 1133329e7c7bSJan Høydahl commands: 1134329e7c7bSJan Høydahl - !Command 11353134f10aSMike Drob cmd: git checkout production && git pull --ff-only 1136329e7c7bSJan Høydahl stdout: true 1137329e7c7bSJan Høydahl - !Command 113857524c6aSChristine Poerschke cmd: git merge main 1139329e7c7bSJan Høydahl stdout: true 1140329e7c7bSJan Høydahl - !Command 1141329e7c7bSJan Høydahl cmd: git push origin 1142329e7c7bSJan Høydahl comment: Push all changes to production branch 1143329e7c7bSJan Høydahl logfile: push-website.log 1144329e7c7bSJan Høydahl post_description: | 1145329e7c7bSJan Høydahl Wait a few minutes for the build to happen. You can follow the site build at https://ci2.apache.org/#/builders/3 1146329e7c7bSJan Høydahl 1147329e7c7bSJan Høydahl Verify on https://lucene.apache.org that the site is OK. 1148329e7c7bSJan Høydahl 1149674b66ddSJan Høydahl You can now also verify that http://lucene.apache.org/core/api/core/ redirects to the latest version 1150329e7c7bSJan Høydahl links: 1151329e7c7bSJan Høydahl - https://ci2.apache.org/#/builders/3 1152329e7c7bSJan Høydahl - https://lucene.apache.org 1153329e7c7bSJan Høydahl - http://lucene.apache.org/core/api/core/ 115487c131baSJan Høydahl - !Todo 115587c131baSJan Høydahl id: update_doap 115687c131baSJan Høydahl title: Update the DOAP files 115787c131baSJan Høydahl description: | 1158674b66ddSJan Høydahl Update the DOAP RDF files on the unstable, stable and release branches to 115987c131baSJan Høydahl reflect the new versions (note that the website .htaccess file redirects from their 1160674b66ddSJan Høydahl canonical URLs to their locations in the Lucene Git source repository - see 116187c131baSJan Høydahl dev-tools/doap/README.txt for more info) 116287c131baSJan Høydahl commands: !Commands 116387c131baSJan Høydahl root_folder: '{{ git_checkout_folder }}' 116487c131baSJan Høydahl commands_text: Edit DOAP files 116587c131baSJan Høydahl commands: 116687c131baSJan Høydahl - !Command 116757524c6aSChristine Poerschke cmd: git checkout main && git pull --ff-only 116887c131baSJan Høydahl stdout: true 116957524c6aSChristine Poerschke comment: Goto main branch 117087c131baSJan Høydahl - !Command 117187c131baSJan Høydahl cmd: "{{ editor }} dev-tools/doap/lucene.rdf" 117287c131baSJan Høydahl comment: Edit Lucene DOAP, add version {{ release_version }} 117387c131baSJan Høydahl stdout: true 117487c131baSJan Høydahl - !Command 1175674b66ddSJan Høydahl cmd: git add dev-tools/doap/lucene.rdf && git commit -m "DOAP changes for release {{ release_version }}" 117687c131baSJan Høydahl logfile: commit.log 117787c131baSJan Høydahl stdout: true 117887c131baSJan Høydahl - !Command 117987c131baSJan Høydahl cmd: git push origin 118087c131baSJan Høydahl logfile: push.log 118187c131baSJan Høydahl stdout: true 118257524c6aSChristine Poerschke comment: Push the main branch 11830f06eff4SHouston Putman - !Command 11843134f10aSMike Drob cmd: "git checkout {{ stable_branch }} && git pull --ff-only" 11850f06eff4SHouston Putman stdout: true 11860f06eff4SHouston Putman comment: Checkout the stable branch 11870f06eff4SHouston Putman - !Command 118857524c6aSChristine Poerschke cmd: "git cherry-pick main" 11890f06eff4SHouston Putman logfile: commit.log 11900f06eff4SHouston Putman stdout: true 119157524c6aSChristine Poerschke comment: Cherrypick the DOAP changes from main onto the stable branch. 11920f06eff4SHouston Putman - !Command 11930f06eff4SHouston Putman cmd: git show HEAD 11940f06eff4SHouston Putman stdout: true 11950f06eff4SHouston Putman comment: Ensure the only change is adding the new version. 11960f06eff4SHouston Putman - !Command 11970f06eff4SHouston Putman cmd: git push origin 11980f06eff4SHouston Putman logfile: push.log 11990f06eff4SHouston Putman stdout: true 12000f06eff4SHouston Putman comment: Push the stable branch 12010f06eff4SHouston Putman - !Command 12023134f10aSMike Drob cmd: "git checkout {{ release_branch }} && git pull --ff-only" 12030f06eff4SHouston Putman stdout: true 12040f06eff4SHouston Putman comment: Checkout the release branch 12050f06eff4SHouston Putman - !Command 12060f06eff4SHouston Putman cmd: "git cherry-pick {{ stable_branch }}" 12070f06eff4SHouston Putman logfile: commit.log 12080f06eff4SHouston Putman stdout: true 12090f06eff4SHouston Putman comment: Cherrypick the DOAP changes from the stable branch onto the release branch. 12100f06eff4SHouston Putman - !Command 12110f06eff4SHouston Putman cmd: git show HEAD 12120f06eff4SHouston Putman stdout: true 12130f06eff4SHouston Putman comment: Ensure the only change is adding the new version. 12140f06eff4SHouston Putman - !Command 12150f06eff4SHouston Putman cmd: git push origin 12160f06eff4SHouston Putman logfile: push.log 12170f06eff4SHouston Putman stdout: true 12180f06eff4SHouston Putman comment: Push the release branch 121987c131baSJan Høydahl- !TodoGroup 122087c131baSJan Høydahl id: announce 122187c131baSJan Høydahl title: Announce the release 122287c131baSJan Høydahl description: | 122387c131baSJan Høydahl For feature releases, your announcement should describe the main features included 122487c131baSJan Høydahl in the release. *Send the announce as Plain-text email, not HTML.* 122587c131baSJan Høydahl 1226329e7c7bSJan Høydahl This step will generate email templates based on the news files you edited earler for the website. 1227329e7c7bSJan Høydahl Do any last-minute necessary edits to the text as you copy it over to the email. 122887c131baSJan Høydahl todos: 122987c131baSJan Høydahl - !Todo 123087c131baSJan Høydahl id: announce_lucene 123187c131baSJan Høydahl title: Announce the Lucene release (@l.a.o) 123287c131baSJan Høydahl description: | 123387c131baSJan Høydahl (( template=announce_lucene_mail )) 123487c131baSJan Høydahl - !Todo 123587c131baSJan Høydahl id: setup_pgp_mail 123687c131baSJan Høydahl title: Setup your mail client for PGP 123787c131baSJan Høydahl description: | 123887c131baSJan Høydahl The announce mail to `announce@apache.org` should be cryptographically signed. 123943e30f96SAdrien Grand Make sure you have a PGP enabled email client with your apache key installed. 124087c131baSJan Høydahl There are plugins for popular email programs, as well as browser plugins for webmail. 124187c131baSJan Høydahl See links for help on how to setup your email client for PGP. 1242674c2c28SMike Drob 1243674c2c28SMike Drob If you prefer to sign the announcements manually rather than using a plugin, 1244674c2c28SMike Drob you can do so from the command line and then copy the output into your mail program. 1245674c2c28SMike Drob 1246674c2c28SMike Drob gpg --output - --clearsign lucene_announce.txt 124787c131baSJan Høydahl links: 124887c131baSJan Høydahl - https://www.openpgp.org/software/ 124987c131baSJan Høydahl - https://ssd.eff.org/en/module/how-use-pgp-mac-os-x 125087c131baSJan Høydahl - https://ssd.eff.org/en/module/how-use-pgp-linux 125187c131baSJan Høydahl - https://ssd.eff.org/en/module/how-use-pgp-windows 125287c131baSJan Høydahl - https://www.openpgp.org/software/mailvelope/ 125387c131baSJan Høydahl - !Todo 125487c131baSJan Høydahl id: announce_lucene_sig 125587c131baSJan Høydahl title: Announce the Lucene release (announce@a.o) 125687c131baSJan Høydahl description: | 125743e30f96SAdrien Grand (( template=announce_lucene_sign_mail )) 125887c131baSJan Høydahl - !Todo 125987c131baSJan Høydahl id: add_to_wikipedia 126087c131baSJan Høydahl title: Add the new version to Wikipedia 126187c131baSJan Høydahl description: | 126287c131baSJan Høydahl Go to Wikipedia and edit the page to include the new release. 126387c131baSJan Høydahl Major versions should have a small new paragraph under 'History'. 126487c131baSJan Høydahl If you know other languages than English, edit those as well. 126587c131baSJan Høydahl links: 126687c131baSJan Høydahl - https://en.wikipedia.org/wiki/Apache_Lucene 12670f15b5e2SHouston Putman - !Todo 12680f15b5e2SHouston Putman id: add_to_apache_reporter 12690f15b5e2SHouston Putman title: Add the new version to the Apache Release Reporter 12700f15b5e2SHouston Putman description: | 12710f15b5e2SHouston Putman Go to the Apache Release Reporter and add a release for lucene. 12720f15b5e2SHouston Putman Fill in the same date that you used for the release in previous steps. 12730f15b5e2SHouston Putman Do not use a product name prefix for the version, as this is the main release of the lucene PMC. 12740f15b5e2SHouston Putman Just use the version of this release: {{ release_version }} 12750f15b5e2SHouston Putman links: 12760f15b5e2SHouston Putman - https://reporter.apache.org/addrelease.html?lucene 127787c131baSJan Høydahl- !TodoGroup 127887c131baSJan Høydahl id: post_release 12790f06eff4SHouston Putman title: Tasks to do after release. 12800f06eff4SHouston Putman description: There are many more tasks to do now that the new version is out there, so hang in there for a few more hours. 128187c131baSJan Høydahl todos: 128287c131baSJan Høydahl - !Todo 128387c131baSJan Høydahl id: add_version_bugfix 128487c131baSJan Høydahl title: Add a new bugfix version to stable and unstable branches 128587c131baSJan Høydahl types: 128687c131baSJan Høydahl - bugfix 128787c131baSJan Høydahl commands: !Commands 128887c131baSJan Høydahl root_folder: '{{ git_checkout_folder }}' 128987c131baSJan Høydahl commands_text: | 129057524c6aSChristine Poerschke Update versions on main and stable branch. 129187c131baSJan Høydahl You may have to hand-edit some files before commit, so go slowly :) 129287c131baSJan Høydahl confirm_each_command: true 129387c131baSJan Høydahl commands: 129487c131baSJan Høydahl - !Command 129557524c6aSChristine Poerschke cmd: git checkout main && git pull --ff-only && git clean -df && git checkout -- . 129657524c6aSChristine Poerschke comment: Go to main branch 129757524c6aSChristine Poerschke logfile: checkout-main.log 129887c131baSJan Høydahl - !Command 129987c131baSJan Høydahl cmd: python3 -u dev-tools/scripts/addVersion.py {{ release_version }} 130057524c6aSChristine Poerschke logfile: addversion-main.log 130187c131baSJan Høydahl - !Command 130287c131baSJan Høydahl cmd: git diff 130357524c6aSChristine Poerschke logfile: diff-main.log 130487c131baSJan Høydahl tee: true 130587c131baSJan Høydahl - !Command 130687c131baSJan Høydahl cmd: git add -u . && git commit -m "Add bugfix version {{ release_version }}" && git push 130757524c6aSChristine Poerschke logfile: commit-main.log 130887c131baSJan Høydahl - !Command 13093134f10aSMike Drob cmd: git checkout {{ stable_branch }} && git pull --ff-only && git clean -df && git checkout -- . 131087c131baSJan Høydahl logfile: checkout-stable.log 131187c131baSJan Høydahl comment: Now the same for the stable branch 131287c131baSJan Høydahl - !Command 131387c131baSJan Høydahl cmd: python3 -u dev-tools/scripts/addVersion.py {{ release_version }} 131487c131baSJan Høydahl logfile: addversion-stable.log 131587c131baSJan Høydahl - !Command 131687c131baSJan Høydahl cmd: git diff 131787c131baSJan Høydahl logfile: diff-stable.log 131887c131baSJan Høydahl tee: true 131987c131baSJan Høydahl - !Command 132087c131baSJan Høydahl cmd: git add -u . && git commit -m "Add bugfix version {{ release_version }}" && git push 132187c131baSJan Høydahl logfile: commit-stable.log 132287c131baSJan Høydahl - !Todo 132387c131baSJan Høydahl id: synchronize_changes 132487c131baSJan Høydahl title: Synchronize CHANGES.txt 132587c131baSJan Høydahl description: | 132687c131baSJan Høydahl Copy the CHANGES.txt section for this release back to the stable and unstable branches' 132787c131baSJan Høydahl CHANGES.txt files, removing any duplicate entries, but only from sections for as-yet 132887c131baSJan Høydahl unreleased versions; leave intact duplicate entries for already-released versions. 132987c131baSJan Høydahl 133087c131baSJan Høydahl There is a script to generate a regex that will match JIRAs fixed in a release: 133187c131baSJan Høydahl `releasedJirasRegex.py`. The following examples will print regexes matching all JIRAs 133287c131baSJan Høydahl fixed in {{ release_version }}, which can then be used to find duplicates in unreleased 133387c131baSJan Høydahl version sections of the corresponding CHANGES.txt files. 133487c131baSJan Høydahl commands: !Commands 133587c131baSJan Høydahl root_folder: '{{ git_checkout_folder }}' 133687c131baSJan Høydahl commands_text: Synchronize CHANGES.txt 133787c131baSJan Høydahl commands: 133887c131baSJan Høydahl - !Command 133987c131baSJan Høydahl cmd: git checkout {{ release_branch }} 134087c131baSJan Høydahl comment: Go to release branch 134187c131baSJan Høydahl logfile: checkout-release.log 134287c131baSJan Høydahl stdout: true 134387c131baSJan Høydahl - !Command 1344674b66ddSJan Høydahl cmd: python3 -u -B dev-tools/scripts/releasedJirasRegex.py {{ release_version }} lucene/CHANGES.txt 134587c131baSJan Høydahl tee: true 134687c131baSJan Høydahl comment: Find version regexes 134787c131baSJan Høydahl - !Command 134857524c6aSChristine Poerschke cmd: git checkout main && git pull --ff-only && git clean -df && git checkout -- . 134957524c6aSChristine Poerschke comment: Go to main branch 135057524c6aSChristine Poerschke logfile: checkout-main.log 135187c131baSJan Høydahl - !Command 135287c131baSJan Høydahl cmd: "{{ editor }} lucene/CHANGES.txt" 1353674b66ddSJan Høydahl comment: Edit CHANGES.txt for main branch, do necessary changes 135487c131baSJan Høydahl stdout: true 135587c131baSJan Høydahl - !Command 135687c131baSJan Høydahl cmd: git add -u . && git commit -m "Sync CHANGES for {{ release_version }}" && git push 135757524c6aSChristine Poerschke logfile: commit-main.log 135887c131baSJan Høydahl - !Command 13593134f10aSMike Drob cmd: git checkout {{ stable_branch }} && git pull --ff-only && git clean -df && git checkout -- . 136087c131baSJan Høydahl comment: Go to stable branch 136187c131baSJan Høydahl logfile: checkout-stable.log 136287c131baSJan Høydahl - !Command 136387c131baSJan Høydahl cmd: "{{ editor }} lucene/CHANGES.txt" 1364674b66ddSJan Høydahl comment: Edit CHANGES.txt for stable branch, do necessary changes 136587c131baSJan Høydahl stdout: true 136687c131baSJan Høydahl - !Command 136787c131baSJan Høydahl cmd: git add -u . && git commit -m "Sync CHANGES for {{ release_version }}" && git push 136887c131baSJan Høydahl logfile: commit-stable.log 136987c131baSJan Høydahl - !Todo 137087c131baSJan Høydahl id: increment_release_version 137187c131baSJan Høydahl title: Add the next version on release branch 137287c131baSJan Høydahl description: Add the next version after the just-released version on the release branch 137387c131baSJan Høydahl depends: publish_maven 137487c131baSJan Høydahl vars: 137587c131baSJan Høydahl next_version: "{{ release_version_major }}.{{ release_version_minor }}.{{ release_version_bugfix + 1 }}" 137687c131baSJan Høydahl commands: !Commands 137787c131baSJan Høydahl root_folder: '{{ git_checkout_folder }}' 137887c131baSJan Høydahl commands_text: Run these commands to add the new bugfix version {{ next_version }} to the release branch 137987c131baSJan Høydahl commands: 138087c131baSJan Høydahl - !Command 138187c131baSJan Høydahl cmd: git checkout {{ release_branch }} 138287c131baSJan Høydahl tee: true 138387c131baSJan Høydahl - !Command 138487c131baSJan Høydahl cmd: python3 -u dev-tools/scripts/addVersion.py {{ next_version }} 138587c131baSJan Høydahl tee: true 138687c131baSJan Høydahl - !Command 138787c131baSJan Høydahl cmd: git diff 138887c131baSJan Høydahl logfile: diff.log 138987c131baSJan Høydahl comment: Check the git diff before committing. Do any edits if necessary 139087c131baSJan Høydahl tee: true 139187c131baSJan Høydahl - !Command 139287c131baSJan Høydahl cmd: git add -u . && git commit -m "Add next bugfix version {{ next_version }}" && git push 139387c131baSJan Høydahl logfile: commit-stable.log 139487c131baSJan Høydahl - !Todo 139587c131baSJan Høydahl id: backcompat_release 139687c131baSJan Høydahl title: Generate Backcompat Indexes for release branch 139787c131baSJan Høydahl description: | 139887c131baSJan Høydahl After each version of Lucene is released, compressed CFS, non-CFS, and sorted indexes created with 139987c131baSJan Høydahl the newly released version are added to `lucene/backwards-codecs/src/test/org/apache/lucene/index/`, 140087c131baSJan Høydahl for use in testing backward index compatibility via org.apache.lucene.index.TestBackwardsCompatibility, 140187c131baSJan Høydahl which is also located under the `backwards-codecs/` module. There are also three indexes created only 140287c131baSJan Høydahl with major Lucene versions: moreterms, empty, and dvupdates. These indexes are created via methods 140387c131baSJan Høydahl on `TestBackwardsCompatibility` itself - see comments in the source for more information. 140487c131baSJan Høydahl 140587c131baSJan Høydahl There is a script (`dev-tools/scripts/addBackcompatIndexes.py`) that automates most of the process. 140687c131baSJan Høydahl It downloads the source for the specified release; generates indexes for the current release using 140787c131baSJan Høydahl `TestBackwardsCompatibility`; compresses the indexes and places them in the correct place in the source 140887c131baSJan Høydahl tree; modifies TestBackwardsCompatibility.java to include the generated indexes in the list of indexes 140987c131baSJan Høydahl to test; and then runs `TestBackwardsCompatibility`. 141087c131baSJan Høydahl 141187c131baSJan Høydahl In this and the next two steps we'll guide you through using this tool on each of the branches. 141287c131baSJan Høydahl depends: 141387c131baSJan Høydahl - increment_release_version 141487c131baSJan Høydahl vars: 141587c131baSJan Høydahl temp_dir: "{{ [release_folder, 'backcompat'] | path_join }}" 141687c131baSJan Høydahl commands: !Commands 141787c131baSJan Høydahl root_folder: '{{ git_checkout_folder }}' 141887c131baSJan Høydahl commands_text: Run these commands to add back-compat indices to release branch 141987c131baSJan Høydahl commands: 142087c131baSJan Høydahl - !Command 14213134f10aSMike Drob cmd: git checkout {{ release_branch }} && git pull --ff-only && git clean -df && git checkout -- . 142287c131baSJan Høydahl tee: true 142387c131baSJan Høydahl logfile: checkout.log 142487c131baSJan Høydahl - !Command 14253134f10aSMike Drob cmd: "{{ gradle_cmd }} clean" 142687c131baSJan Høydahl - !Command 1427*9fa2b53aSAlan Woodward cmd: python3 -u dev-tools/scripts/addBackcompatIndexes.py --no-cleanup --temp-dir {{ temp_dir }} {{ release_version }} && git add lucene/backward-codecs/src/test/org/apache/lucene/backward_index/ 1428674c2c28SMike Drob logfile: add-backcompat.log 142987c131baSJan Høydahl - !Command 1430674c2c28SMike Drob cmd: git diff --staged 143187c131baSJan Høydahl comment: Check the git diff before committing 143287c131baSJan Høydahl tee: true 143387c131baSJan Høydahl - !Command 1434674c2c28SMike Drob cmd: git commit -m "Add back-compat indices for {{ release_version }}" && git push 143587c131baSJan Høydahl logfile: commit.log 143687c131baSJan Høydahl - !Todo 143787c131baSJan Høydahl id: backcompat_stable 143887c131baSJan Høydahl title: Generate Backcompat Indexes for stable branch 143987c131baSJan Høydahl description: | 144087c131baSJan Høydahl Now generate back-compat for stable branch ({{ stable_branch }}) 144187c131baSJan Høydahl depends: 144287c131baSJan Høydahl - increment_release_version 144387c131baSJan Høydahl vars: 144487c131baSJan Høydahl temp_dir: "{{ [release_folder, 'backcompat'] | path_join }}" 144587c131baSJan Høydahl commands: !Commands 144687c131baSJan Høydahl root_folder: '{{ git_checkout_folder }}' 144787c131baSJan Høydahl commands_text: Run these commands to add back-compat indices to {{ stable_branch }} 144887c131baSJan Høydahl commands: 144987c131baSJan Høydahl - !Command 14503134f10aSMike Drob cmd: git checkout {{ stable_branch }} && git pull --ff-only && git clean -df && git checkout -- . 145187c131baSJan Høydahl tee: true 145287c131baSJan Høydahl logfile: checkout.log 145387c131baSJan Høydahl - !Command 14543134f10aSMike Drob cmd: "{{ gradle_cmd }} clean" 145587c131baSJan Høydahl - !Command 1456*9fa2b53aSAlan Woodward cmd: python3 -u dev-tools/scripts/addBackcompatIndexes.py --no-cleanup --temp-dir {{ temp_dir }} {{ release_version }} && git add lucene/backward-codecs/src/test/org/apache/lucene/backward_index/ 1457674c2c28SMike Drob logfile: add-backcompat.log 145887c131baSJan Høydahl - !Command 1459674c2c28SMike Drob cmd: git diff --staged 146087c131baSJan Høydahl comment: Check the git diff before committing 146187c131baSJan Høydahl tee: true 146287c131baSJan Høydahl - !Command 1463674c2c28SMike Drob cmd: git commit -m "Add back-compat indices for {{ release_version }}" && git push 146487c131baSJan Høydahl logfile: commit.log 146587c131baSJan Høydahl - !Todo 146657524c6aSChristine Poerschke id: backcompat_main 146787c131baSJan Høydahl title: Generate Backcompat Indexes for unstable branch 146887c131baSJan Høydahl description: | 146957524c6aSChristine Poerschke Now generate back-compat for unstable (main) branch. 147087c131baSJan Høydahl Note that this time we do not specify `--no-cleanup` meaning the tmp folder will be deleted 147187c131baSJan Høydahl depends: 147287c131baSJan Høydahl - increment_release_version 147387c131baSJan Høydahl vars: 147487c131baSJan Høydahl temp_dir: "{{ [release_folder, 'backcompat'] | path_join }}" 147557524c6aSChristine Poerschke version: "{{ set_java_home(main_version) }}" 147687c131baSJan Høydahl commands: !Commands 147787c131baSJan Høydahl root_folder: '{{ git_checkout_folder }}' 147857524c6aSChristine Poerschke commands_text: Run these commands to add back-compat indices to main 147987c131baSJan Høydahl commands: 148087c131baSJan Høydahl - !Command 148157524c6aSChristine Poerschke cmd: git checkout main && git pull --ff-only && git clean -df && git checkout -- . 148287c131baSJan Høydahl tee: true 148387c131baSJan Høydahl logfile: checkout.log 148487c131baSJan Høydahl - !Command 14853134f10aSMike Drob cmd: "{{ gradle_cmd }} clean" 148687c131baSJan Høydahl - !Command 1487*9fa2b53aSAlan Woodward cmd: python3 -u dev-tools/scripts/addBackcompatIndexes.py --temp-dir {{ temp_dir }} {{ release_version }} && git add lucene/backward-codecs/src/test/org/apache/lucene/backward_index/ 1488674c2c28SMike Drob logfile: add-backcompat.log 148987c131baSJan Høydahl - !Command 1490674c2c28SMike Drob cmd: git diff --staged 149187c131baSJan Høydahl comment: Check the git diff before committing 149287c131baSJan Høydahl tee: true 149387c131baSJan Høydahl - !Command 1494674c2c28SMike Drob cmd: git commit -m "Add back-compat indices for {{ release_version }}" && git push 149587c131baSJan Høydahl logfile: commit.log 149687c131baSJan Høydahl post_description: | 149787c131baSJan Høydahl When doing a major version release, eg. 8.0.0, you might also need to reenable some 149887c131baSJan Høydahl backward compatibility tests for corner cases. To find them, run grep -r assume 149957524c6aSChristine Poerschke lucene/backward-codecs/, which should find tests that have been disabled on main 150087c131baSJan Høydahl because there was no released Lucene version to test against. 150187c131baSJan Høydahl {{ set_java_home(release_version) }} 150287c131baSJan Høydahl - !Todo 150387c131baSJan Høydahl id: jira_release 150487c131baSJan Høydahl title: Mark version as released in JIRA 150587c131baSJan Høydahl description: |- 150687c131baSJan Høydahl Go to the JIRA "Manage Versions" Administration pages. 150787c131baSJan Høydahl 150887c131baSJan Høydahl . Next to version {{ release_version }}, click the gear pop-up menu icon and choose "Release" 150987c131baSJan Høydahl . Fill in the release date ({{ release_date | formatdate }}) 151087c131baSJan Høydahl . It will give the option of transitioning issues marked fix-for the released version to the 151187c131baSJan Høydahl next version, but do not do this as it will send an email for each issue :) 151287c131baSJan Høydahl links: 151387c131baSJan Høydahl - https://issues.apache.org/jira/plugins/servlet/project-config/LUCENE/versions 151487c131baSJan Høydahl - !Todo 151587c131baSJan Høydahl id: jira_close_resolved 151687c131baSJan Høydahl title: Close all issues resolved in the release 151787c131baSJan Høydahl description: |- 1518674b66ddSJan Høydahl Go to JIRA search to find all issues that were fixed in the release 151987c131baSJan Høydahl you just made, whose Status is Resolved. 152087c131baSJan Høydahl 1521674b66ddSJan Høydahl . Go to https://issues.apache.org/jira/issues/?jql=project+in+(LUCENE)+AND+status=Resolved+AND+fixVersion={{ release_version }} 152287c131baSJan Høydahl . Do a bulk change (Under Tools... menu) to close all of these issues. This is a workflow transition task 152387c131baSJan Høydahl . In the 'Comment' box type `Closing after the {{ release_version }} release` 152487c131baSJan Høydahl . *Uncheck* the box that says `Send mail for this update` 152587c131baSJan Høydahl links: 1526674b66ddSJan Høydahl - https://issues.apache.org/jira/issues/?jql=project+in+(LUCENE)+AND+status=Resolved+AND+fixVersion={{ release_version }} 152787c131baSJan Høydahl - !Todo 152887c131baSJan Høydahl id: jira_change_unresolved 152987c131baSJan Høydahl title: Remove fixVersion for unresolved 153087c131baSJan Høydahl description: |- 153187c131baSJan Høydahl Do another JIRA search to find all issues with Resolution=_Unresolved_ and fixVersion=_{{ release_version }}_. 153287c131baSJan Høydahl 153387c131baSJan Høydahl . Open https://issues.apache.org/jira/issues/?jql=project+=+LUCENE+AND+resolution=Unresolved+AND+fixVersion={{ release_version }} 153487c131baSJan Høydahl . In the `Tools` menu, start a bulk change - operation="Edit issues" 153587c131baSJan Høydahl . Identify issues that *are included* in the release, but are unresolved e.g. due to being REOPENED. These shall *not* be bulk changed! 153687c131baSJan Høydahl . Check the box next to `Change Fix Version/s` and in the dropdown `Find and remove these`, selecting v {{ release_version }} 153787c131baSJan Høydahl . On the bottom of the form, uncheck the box that says `Send mail for this update` 153887c131baSJan Høydahl . Click `Next`, review the changes and click `Confirm` 153987c131baSJan Høydahl links: 154087c131baSJan Høydahl - https://issues.apache.org/jira/issues/?jql=project+=+LUCENE+AND+resolution=Unresolved+AND+fixVersion={{ release_version }} 154187c131baSJan Høydahl - !Todo 154287c131baSJan Høydahl id: new_jira_versions_bugfix 154387c131baSJan Høydahl title: Add a new version in JIRA for the next release 154487c131baSJan Høydahl description: |- 154587c131baSJan Høydahl Go to the JIRA "Manage Versions" Administration pages and add the new version: 154687c131baSJan Høydahl 154787c131baSJan Høydahl . Create a new (unreleased) version `{{ get_next_version }}` 154887c131baSJan Høydahl types: 154987c131baSJan Høydahl - bugfix 155087c131baSJan Høydahl links: 155187c131baSJan Høydahl - https://issues.apache.org/jira/plugins/servlet/project-config/LUCENE/versions 155287c131baSJan Høydahl - !Todo 1553f38c4012SJan Høydahl id: stop_promoting_old 1554f38c4012SJan Høydahl title: Stop promoting old releases 155587c131baSJan Høydahl description: | 1556f38c4012SJan Høydahl Shortly after new releases are first published, they are automatically copied to the archives. 155787c131baSJan Høydahl Only the latest point release from each active branch should be kept under the Lucene PMC 1558674b66ddSJan Høydahl svnpubsub area `dist/releases/lucene/`. Older releases can be 155987c131baSJan Høydahl safely deleted, since they are already backed up in the archives. 156087c131baSJan Høydahl 1561f38c4012SJan Høydahl Currenlty these versions exist in the distribution directory: 156287c131baSJan Høydahl 156387c131baSJan Høydahl *{{ mirrored_versions|join(', ') }}* 156487c131baSJan Høydahl 156587c131baSJan Høydahl The commands below will remove old versions automatically. If this suggestion is wrong, 156687c131baSJan Høydahl please do *not* execute the commands automatically, but edit the command and run manually. 1567f38c4012SJan Høydahl Versions to be deleted from the distribution directory are: 156887c131baSJan Høydahl 156987c131baSJan Høydahl *{{ mirrored_versions_to_delete|join(', ') }}* 157087c131baSJan Høydahl 157187c131baSJan Høydahl commands: !Commands 157287c131baSJan Høydahl root_folder: '{{ git_checkout_folder }}' 157387c131baSJan Høydahl commands_text: | 1574f38c4012SJan Høydahl Run these commands to delete proposed versions from distribution directory. 157587c131baSJan Høydahl 157687c131baSJan Høydahl WARNING: Validate that the proposal is correct! 157787c131baSJan Høydahl commands: 157887c131baSJan Høydahl - !Command 157987c131baSJan Høydahl cmd: | 1580f38c4012SJan Høydahl svn rm -m "Stop publishing old Lucene releases"{% for ver in mirrored_versions_to_delete %} https://dist.apache.org/repos/dist/release/lucene/java/{{ ver }}{% endfor %} 158187c131baSJan Høydahl logfile: svn-rm-lucene.log 1582