Merge "Add std-with-versions stable-branch-type"
This commit is contained in:
commit
e97e293c66
@ -403,6 +403,14 @@ The top level of a deliverable file is a mapping with keys:
|
|||||||
associated with the version (as identified by the deliverable
|
associated with the version (as identified by the deliverable
|
||||||
file) will be branched from that version using the name given.
|
file) will be branched from that version using the name given.
|
||||||
|
|
||||||
|
``std-with-versions``
|
||||||
|
This mode has the same meaning as the ``std`` branch type, with the
|
||||||
|
addition that version-based branches can be created as well.
|
||||||
|
|
||||||
|
These version-based branches are shorter term stable branches that
|
||||||
|
are named for the major and minor version number (e.g. stable/3.1).
|
||||||
|
This is primarily used for Ironic releases.
|
||||||
|
|
||||||
``tagless``
|
``tagless``
|
||||||
This mode requires stable branch locations to be a mapping between
|
This mode requires stable branch locations to be a mapping between
|
||||||
repository name and an existing commit, specified by the
|
repository name and an existing commit, specified by the
|
||||||
|
@ -1512,7 +1512,7 @@ def validate_stable_branches(deliv, context):
|
|||||||
|
|
||||||
location = branch.location
|
location = branch.location
|
||||||
|
|
||||||
if branch_mode == 'std':
|
if branch_mode == 'std' or branch_mode == 'std-with-versions':
|
||||||
if not isinstance(location, six.string_types):
|
if not isinstance(location, six.string_types):
|
||||||
context.error(
|
context.error(
|
||||||
('branch location for %s is '
|
('branch location for %s is '
|
||||||
@ -1613,11 +1613,22 @@ def validate_stable_branches(deliv, context):
|
|||||||
|
|
||||||
else:
|
else:
|
||||||
if series != deliv.series:
|
if series != deliv.series:
|
||||||
|
if branch_mode == 'std-with-versions':
|
||||||
|
# Not a normal stable branch, so it must be a version
|
||||||
|
# branch (stable/3.1)
|
||||||
|
expected_version = '.'.join(location.split('.')[0:2])
|
||||||
|
if series != expected_version:
|
||||||
context.error(
|
context.error(
|
||||||
('cycle-based projects must match series names '
|
'cycle-based projects must match series names '
|
||||||
|
'for stable branches, or branch based on version '
|
||||||
|
'for short term support. %s should be stable/%s '
|
||||||
|
'or stable/%s' % (
|
||||||
|
branch.name, deliv.series, expected_version))
|
||||||
|
else:
|
||||||
|
context.error(
|
||||||
|
'cycle-based projects must match series names '
|
||||||
'for stable branches. %s should be stable/%s' % (
|
'for stable branches. %s should be stable/%s' % (
|
||||||
branch.name, deliv.series))
|
branch.name, deliv.series))
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def validate_feature_branches(deliv, context):
|
def validate_feature_branches(deliv, context):
|
||||||
|
@ -57,7 +57,7 @@ properties:
|
|||||||
"manila-image-elements", "generic" ]
|
"manila-image-elements", "generic" ]
|
||||||
stable-branch-type:
|
stable-branch-type:
|
||||||
type: "string"
|
type: "string"
|
||||||
enum: [ "std", "tagless", "upstream", "none" ]
|
enum: [ "std", "tagless", "upstream", "none", "std-with-versions" ]
|
||||||
cycle-highlights:
|
cycle-highlights:
|
||||||
type: "array"
|
type: "array"
|
||||||
items:
|
items:
|
||||||
|
@ -2221,6 +2221,54 @@ class TestValidateStableBranches(base.BaseTestCase):
|
|||||||
self.assertEqual(0, len(self.ctx.warnings))
|
self.assertEqual(0, len(self.ctx.warnings))
|
||||||
self.assertEqual(1, len(self.ctx.errors))
|
self.assertEqual(1, len(self.ctx.errors))
|
||||||
|
|
||||||
|
def test_std_with_versions_stable_branch_type(self):
|
||||||
|
deliverable_data = textwrap.dedent('''
|
||||||
|
stable-branch-type: std-with-versions
|
||||||
|
releases:
|
||||||
|
- version: 99.0.3
|
||||||
|
projects:
|
||||||
|
- repo: openstack/release-test
|
||||||
|
hash: 0cd17d1ee3b9284d36b2a0d370b49a6f0bbb9660
|
||||||
|
branches:
|
||||||
|
- name: stable/99.0
|
||||||
|
location: 99.0.3
|
||||||
|
repository-settings:
|
||||||
|
openstack/release-test: {}
|
||||||
|
''')
|
||||||
|
deliv = deliverable.Deliverable(
|
||||||
|
team='team',
|
||||||
|
series='ocata',
|
||||||
|
name='release-test',
|
||||||
|
data=yamlutils.loads(deliverable_data),
|
||||||
|
)
|
||||||
|
validate.validate_stable_branches(deliv, self.ctx)
|
||||||
|
self.assertEqual(0, len(self.ctx.warnings))
|
||||||
|
self.assertEqual(0, len(self.ctx.errors))
|
||||||
|
|
||||||
|
def test_std_with_versions_normal_stable_branch_type(self):
|
||||||
|
deliverable_data = textwrap.dedent('''
|
||||||
|
stable-branch-type: std-with-versions
|
||||||
|
releases:
|
||||||
|
- version: 99.0.3
|
||||||
|
projects:
|
||||||
|
- repo: openstack/release-test
|
||||||
|
hash: 0cd17d1ee3b9284d36b2a0d370b49a6f0bbb9660
|
||||||
|
branches:
|
||||||
|
- name: stable/ocata
|
||||||
|
location: 99.0.3
|
||||||
|
repository-settings:
|
||||||
|
openstack/release-test: {}
|
||||||
|
''')
|
||||||
|
deliv = deliverable.Deliverable(
|
||||||
|
team='team',
|
||||||
|
series='ocata',
|
||||||
|
name='release-test',
|
||||||
|
data=yamlutils.loads(deliverable_data),
|
||||||
|
)
|
||||||
|
validate.validate_stable_branches(deliv, self.ctx)
|
||||||
|
self.assertEqual(0, len(self.ctx.warnings))
|
||||||
|
self.assertEqual(0, len(self.ctx.errors))
|
||||||
|
|
||||||
def test_tagless_stable_branch_type_bad_location_type(self):
|
def test_tagless_stable_branch_type_bad_location_type(self):
|
||||||
deliverable_data = textwrap.dedent('''
|
deliverable_data = textwrap.dedent('''
|
||||||
stable-branch-type: tagless
|
stable-branch-type: tagless
|
||||||
|
Loading…
Reference in New Issue
Block a user