Override semver regex for projects
[releng/global-jjb.git] / docs / jjb / lf-release-jobs.rst
index 5966cd6..dd8b811 100644 (file)
@@ -50,6 +50,12 @@ For example, the parameters for a Maven release are as follows::
     USE_RELEASE_FILE = false
     DRY_RUN = false
 
+It's recommended to use Semantic Versions (SemVer) for releases. Refer to
+https://semver.org for more details on SemVer. For projects that do not
+follow SemVer can use a build parameter (OVERRIDE_SEMVER_REGEX) with the
+release job. This build param overrides the default SemVer regex.
+
+
 Maven Release Files
 -------------------
 
@@ -70,8 +76,8 @@ The following parameters must appear in a maven release yaml file.
 :Required Parameters:
 
     :distribution_type: Must be "maven".
-    :log_dir: The suffix of the logs URL reported on completion by the
-        Jenkins stage job that created and pushed the artifact
+    :log_dir: The suffix of the logs URL reported on successful completion
+        by the Jenkins stage job that created and pushed the artifact
         to the staging repository.  For example, use value
         "example-project-maven-stage-master/17" for the logs URL
         https://logs.lf-project.org/production/vex-sjc-lfp-jenkins-prod-1/example-project-maven-stage-master/17
@@ -82,6 +88,8 @@ The following parameters must appear in a maven release yaml file.
 
     :git_tag: The tag string to sign and push to the Git repository.
        (default: the semantic version string)
+    :tag_release: Tag Gerrit Repo during the release process.
+       (default: true)
 
 The JSON schema for a maven release file appears below.
 
@@ -132,6 +140,8 @@ The following parameters must appear in a container release yaml file.
 
     :git_tag: The tag string to sign and push to the Git repository.
        (default: the semantic version string)
+    :tag_release: Tag Gerrit Repo during the release process.
+       (default: true)
 
 The JSON schema for a container release file appears below.
 
@@ -162,9 +172,9 @@ packages.
 
 :Required Parameters:
 
-    :log_dir: The suffix of the logs URL reported on completion by the
-        Jenkins merge job that created and pushed the distribution files
-        to the staging repository.  For example, use value
+    :log_dir: The suffix of the logs URL reported on successful completion
+        by the Jenkins merge job that created and pushed the distribution
+        files to the staging repository.  For example, use value
         "example-project-pypi-merge-master/17" for the logs URL
         https://logs.lf-project.org/production/vex-sjc-lfp-jenkins-prod-1/example-project-pypi-merge-master/17
     :pypi_project: The PyPI project name at the staging and
@@ -179,6 +189,8 @@ packages.
 
     :git_tag: The tag string to sign and push to the Git repository.
        (default: the semantic version string)
+    :tag_release: Tag Gerrit Repo during the release process.
+       (default: true)
 
 The JSON schema for a PyPI release file appears below.
 
@@ -221,9 +233,9 @@ packages.
         "curl https://packagecloud.io/api/v1/repos/test_user/test_repo/search?q=
         | yq -r .[].filename"
     :ref: The git commit reference (SHA-1 code) to tag with the version string.
-    :log_dir: The suffix of the logs URL reported on completion by the
-        Jenkins merge job that created and pushed the distribution files
-        to the staging repository. For example, use value
+    :log_dir: The suffix of the logs URL reported on successful completion
+        by the Jenkins merge job that created and pushed the distribution
+        files to the staging repository. For example, use value
         "example-project-packagecloud-merge-/21" for the logs URL
         https://logs.lf-project.org/production/vex-sjc-lfp-jenkins-prod-1/example-project-packagecloud-merge/21
     :version: The semantic version string used for the package.
@@ -232,6 +244,8 @@ packages.
 
     :git_tag: The tag string to sign and push to the Git repository.
        (default: the semantic version string)
+    :tag_release: Tag Gerrit Repo during the release process.
+       (default: true)
 
 The JSON schema for a PackageCloud release file appears below.
 
@@ -279,6 +293,10 @@ Release Merge
 
 This template supports Maven and Container release jobs.
 
+This template uses a git commit choosing strategy that builds the merged
+commit with the release yaml file, not the tip of the target branch, so
+projects can repeat the release action in case of merge job failure.
+
 :Template Name: {project-name}-release-merge
 
 :Comment Trigger: remerge
@@ -298,11 +316,8 @@ This template supports Maven and Container release jobs.
 
     :gerrit_merge_triggers: Override Gerrit Triggers.
     :gerrit_trigger_file_paths: Override file paths filter which checks which
-        file modifications will trigger a build.
-        **default**::
-
-            - compare-type: REG_EXP
-              pattern: '(releases\/.*\.yaml|\.releases\/.*\.yaml)'
+        file modifications will trigger a build. The default pattern is the
+        regular expression ``(releases\/.*\.yaml|\.releases\/.*\.yaml)``
 
 
 Release Verify
@@ -332,11 +347,8 @@ This template supports Maven and Container release jobs.
 
     :gerrit_verify_triggers: Override Gerrit Triggers.
     :gerrit_trigger_file_paths: Override file paths filter which checks which
-        file modifications will trigger a build.
-        **default**::
-
-            - compare-type: REG_EXP
-              pattern: '(releases\/.*\.yaml|\.releases\/.*\.yaml)'
+        file modifications will trigger a build. The default pattern is the
+        regular expression ``(releases\/.*\.yaml|\.releases\/.*\.yaml)``
 
 
 PyPI Release Merge
@@ -349,6 +361,10 @@ artifacts to the PyPI release repository, tags the git repository,
 signs the tag and pushes the tag to the git server. The release merge
 template accepts neither a branch nor a stream parameter.
 
+These templates use a git commit choosing strategy that builds the merged
+commit with the release yaml file, not the tip of the target branch, so
+projects can repeat the release action in case of merge job failure.
+
 :Template Names:
 
     - {project-name}-pypi-release-merge
@@ -377,12 +393,9 @@ template accepts neither a branch nor a stream parameter.
         should be the repository pypy.org. (default: pypi)
     :use-release-file: Whether to use the release file. (default: true)
 
-    :gerrit_trigger_file_paths: Override file paths filter which checks which
-        file modifications will trigger a build.
-        **default**::
-
-            - compare-type: REG_EXP
-              pattern: '(releases\/pypi.*\.yaml|\.releases\/pypi.*\.yaml)'
+    :gerrit_release_trigger_file_paths: Override file paths filter which checks
+        which file modifications will trigger a build. The default pattern is the
+        regular expression ``(releases\/pypi.*\.yaml|\.releases\/pypi.*\.yaml)``
 
 PyPI Release Verify
 ~~~~~~~~~~~~~~~~~~~
@@ -421,17 +434,17 @@ verify template accepts neither a branch nor a stream parameter.
         should be the repository pypy.org (default: pypi)
     :use-release-file: Whether to use the release file. (default: true)
 
-    :gerrit_trigger_file_paths: Override file paths filter which checks which
-        file modifications will trigger a build.
-        **default**::
-
-            - compare-type: REG_EXP
-              pattern: '(releases\/pypi.*\.yaml|\.releases\/pypi.*\.yaml)'
+    :gerrit_release_trigger_file_paths: Override file paths filter which checks
+        which file modifications will trigger a build. The default pattern is the
+        regular expression ``(releases\/pypi.*\.yaml|\.releases\/pypi.*\.yaml)``
 
 PackageCloud Release Verify
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-This template supports PackageCloud release jobs.
+This template supports PackageCloud release jobs. Checks that the specified
+packages are present in the staging repository and absent from the release
+repository. The file path trigger uses the regular expression
+``(releases\/packagecloud.*\.yaml|\.releases\/packagecloud.*\.yaml)``
 
 :Template Name: {project-name}-packagecloud-release-verify
 
@@ -453,25 +466,23 @@ This template supports PackageCloud release jobs.
     :gerrit-skip-vote: Skip voting for this job. (default: false)
     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
 
-    :gerrit_verify_triggers: Override Gerrit Triggers.
-    :gerrit_trigger_file_paths: Override file paths filter which checks which
-        file modifications will trigger a build.
-        **default**::
-
-            - compare-type: REG_EXP
-              pattern: '(releases\/packagecloud.*\.yaml|\.releases\/packagecloud.*\.yaml)'
-
-
 PackageCloud Release Merge
 ~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-This template supports PackageCloud release jobs.
+This template supports PackageCloud release jobs.  Promotes the specified
+packages from the staging repository to the release repository.
+The file path trigger uses the regular expression
+``(releases\/packagecloud.*\.yaml|\.releases\/packagecloud.*\.yaml)``
 
-:template name: {project-name}-packagecloud-release-merge
+This template uses a git commit choosing strategy that builds the merged
+commit with the release yaml file, not the tip of the target branch, so
+projects can repeat the release action in case of merge job failure.
 
-:comment trigger: remerge
+:Template Name: {project-name}-packagecloud-release-merge
 
-:required parameters:
+:Comment Trigger: remerge
+
+:Required Parameters:
 
     :build-node: the node to run build on.
     :jenkins-ssh-release-credential: credential to use for ssh. (generally set
@@ -479,20 +490,11 @@ This template supports PackageCloud release jobs.
     :project: git repository name
     :project-name: jenkins job name prefix
 
-:optional parameters:
+:Optional Parameters:
 
     :build-days-to-keep: days to keep build logs in jenkins. (default: 7)
     :build-timeout: timeout in minutes before aborting build. (default: 15)
 
-    :gerrit_merge_triggers: override gerrit triggers.
-    :gerrit_trigger_file_paths: override file paths filter which checks which
-        file modifications will trigger a build.
-        **default**::
-
-            - compare-type: reg_exp
-              pattern: '(releases\/packagecloud.*\.yaml|\.releases\/packagecloud.*\.yaml)'
-
-
 Setup for LFID, Nexus, Jenkins and Gerrit
 -----------------------------------------