Skip to content

Commit cb1ed39

Browse files
chore: release 1.1.3 (#2780)
2 parents fcec413 + 77a68fe commit cb1ed39

File tree

13 files changed

+84
-70
lines changed

13 files changed

+84
-70
lines changed

.github/workflows/test_deploy.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -853,7 +853,7 @@ jobs:
853853
ref: 'develop'
854854
- name: merge changes from master
855855
run: |
856-
git merge master
856+
git merge origin/master --message "Merge branch 'master' into develop"
857857
git push
858858
859859
build-images:
@@ -876,8 +876,8 @@ jobs:
876876
if: "startsWith(github.ref, 'refs/tags/') || endsWith(github.ref, github.event.repository.default_branch)"
877877
uses: Azure/docker-login@v1
878878
with:
879-
username: ${{ secrets.DOCKER_USERNAME }}
880-
password: ${{ secrets.DOCKER_PASSWORD }}
879+
username: ${{ secrets.RENKU_DOCKER_USERNAME }}
880+
password: ${{ secrets.RENKU_DOCKER_PASSWORD }}
881881
- name: push images
882882
if: "startsWith(github.ref, 'refs/tags/') || endsWith(github.ref, github.event.repository.default_branch)"
883883
run: |
@@ -909,8 +909,8 @@ jobs:
909909
env:
910910
CHART_NAME: renku-core
911911
GITHUB_TOKEN: ${{ secrets.RENKUBOT_GITHUB_TOKEN }}
912-
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
913-
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
912+
DOCKER_USERNAME: ${{ secrets.RENKU_DOCKER_USERNAME }}
913+
DOCKER_PASSWORD: ${{ secrets.RENKU_DOCKER_PASSWORD }}
914914
- name: Wait for chart to be available
915915
run: sleep 120
916916
- name: Update component version

CHANGES.rst

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,17 @@
1818
Changes
1919
=======
2020

21+
`1.1.3 <https://github.com/SwissDataScienceCenter/renku-python/compare/v1.1.2...v1.1.3>`__ (2022-03-25)
22+
-------------------------------------------------------------------------------------------------------
23+
24+
This is a bugfix release fixing an issue with template update check.
25+
26+
Bug Fixes
27+
~~~~~~~~~
28+
29+
- **core:** use consistent template versioning for embedded and remote templates
30+
(`#2763 <https://github.com/SwissDataScienceCenter/renku-python/pull/2763>`__)
31+
2132
`1.1.2 <https://github.com/SwissDataScienceCenter/renku-python/compare/v1.1.1...v1.1.2>`__ (2022-03-18)
2233
-------------------------------------------------------------------------------------------------------
2334

Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ DOCKER_PREFIX:=${DOCKER_REGISTRY}$(DOCKER_REPOSITORY)
2222
GIT_MASTER_HEAD_SHA:=$(shell git rev-parse --short --verify HEAD)
2323

2424
TEMPLATE_URL:=https://github.com/SwissDataScienceCenter/renku-project-template
25-
TEMPLATE_REFERENCE:=0.3.0
25+
TEMPLATE_REFERENCE:=$(shell sed -n -E 's/^__template_version__ = "([^"]+)"/\1/p' renku/version.py)
2626
TEMPLATE_DIR:=renku/templates/
2727

2828
.PHONY: service cli docker-tag docker-push docker-login
@@ -47,6 +47,7 @@ cli:
4747
docker build -f Dockerfile.cli -t $(DOCKER_PREFIX)renku-python:`git rev-parse --short HEAD` --build-arg CLEAN_INSTALL=1 .
4848

4949
download-templates:
50+
@[ "${TEMPLATE_REFERENCE}" ] || ( echo "__template_version__ is not set"; exit 1 )
5051
@echo "Downloading templates"
5152
rm -rf $(TEMPLATE_DIR)
5253
mkdir -p $(TEMPLATE_DIR)

helm-chart/renku-core/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ appVersion: "1.0"
33
description: A Helm chart for Kubernetes
44
name: renku-core
55
icon: https://avatars0.githubusercontent.com/u/53332360?s=400&u=a4311d22842343604ef61a8c8a1e5793209a67e9&v=4
6-
version: 1.1.2
6+
version: 1.1.3

helm-chart/renku-core/values.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ versions:
109109
fullnameOverride: ""
110110
image:
111111
repository: renku/renku-core
112-
tag: "v1.1.2"
112+
tag: "v1.1.3"
113113
pullPolicy: IfNotPresent
114114
v8:
115115
name: v8

renku/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@
1919

2020
from __future__ import absolute_import, print_function
2121

22-
from renku.version import __version__
22+
from renku.version import __template_version__, __version__
2323

24-
__all__ = ("__version__",)
24+
__all__ = ("__template_version__", "__version__")

renku/core/commands/view_model/template.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ def from_template(cls, template: Template) -> "TemplateViewModel":
6666
parameters=template.parameters,
6767
icon=template.icon,
6868
immutable_files=template.immutable_files,
69-
versions=template.get_all_versions(),
69+
versions=template.get_all_references(),
7070
)
7171

7272

renku/core/management/template/template.py

Lines changed: 24 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -354,48 +354,42 @@ def read_valid_value(var: TemplateParameter, default_value=None):
354354
class EmbeddedTemplates(TemplatesSource):
355355
"""Represent templates that are bundled with Renku.
356356
357-
For embedded templates, ``source`` is "renku" and ``version`` is set to the installed Renku version. ``reference``
358-
should not be set for such projects.
357+
For embedded templates, ``source`` is "renku". In the old versioning scheme, ``version`` is set to the installed
358+
Renku version and ``reference`` is not set. In the new scheme, both ``version`` and ``reference`` are set to the
359+
template version.
359360
"""
360361

361362
@classmethod
362363
def fetch(cls, source: Optional[str], reference: Optional[str]) -> "EmbeddedTemplates":
363364
"""Fetch embedded Renku templates."""
364-
from renku import __version__
365-
366-
if reference and reference != "master":
367-
raise errors.ParameterError("Templates included in renku don't support specifying a template reference")
365+
from renku import __template_version__
368366

369367
path = importlib_resources.files("renku") / "templates"
370368
with importlib_resources.as_file(path) as folder:
371369
path = Path(folder)
372370

373-
return cls(path=path, source="renku", reference=None, version=str(__version__))
374-
375-
def is_update_available(self, id: str, reference: Optional[str], version: Optional[str]) -> Tuple[bool, str]:
376-
"""Return True if an update is available along with the latest version of a template."""
377-
latest_version = self.get_latest_version(id=id, reference=reference, version=version)
378-
update_available = latest_version is not None and latest_version != version
379-
380-
return update_available, latest_version
371+
return cls(path=path, source="renku", reference=__template_version__, version=__template_version__)
381372

382-
def get_all_versions(self, id) -> List[str]:
383-
"""Return all available versions for a template id."""
373+
def get_all_references(self, id) -> List[str]:
374+
"""Return all available references for a template id."""
384375
template_exists = any(t.id == id for t in self.templates)
385-
return [self.version] if template_exists else []
376+
return [self.reference] if template_exists else []
386377

387-
def get_latest_version(self, id: str, reference: Optional[str], version: Optional[str]) -> Optional[str]:
388-
"""Return latest version number of a template."""
378+
def get_latest_reference_and_version(
379+
self, id: str, reference: Optional[str], version: Optional[str]
380+
) -> Optional[Tuple[str, str]]:
381+
"""Return latest reference and version number of a template."""
389382
if version is None:
390383
return
384+
elif reference is None or reference != version: # Old versioning scheme
385+
return self.reference, self.version
391386

392-
template_version = Version(self.version)
393387
try:
394388
current_version = Version(version)
395389
except ValueError: # NOTE: version is not a valid SemVer
396-
return str(template_version)
390+
return self.reference, self.version
397391
else:
398-
return str(template_version) if current_version < template_version else version
392+
return (self.reference, self.version) if current_version < Version(self.version) else (reference, version)
399393

400394
def get_template(self, id, reference: Optional[str]) -> Optional["Template"]:
401395
"""Return all available versions for a template id."""
@@ -432,14 +426,7 @@ def fetch(cls, source: Optional[str], reference: Optional[str]) -> "RepositoryTe
432426

433427
return cls(path=path, source=source, reference=reference, version=version, repository=repository)
434428

435-
def is_update_available(self, id: str, reference: Optional[str], version: Optional[str]) -> Tuple[bool, str]:
436-
"""Return True if an update is available along with the latest version of a template."""
437-
latest_version = self.get_latest_version(id=id, reference=reference, version=version)
438-
update_available = latest_version is not None and latest_version != reference
439-
440-
return update_available, latest_version
441-
442-
def get_all_versions(self, id) -> List[str]:
429+
def get_all_references(self, id) -> List[str]:
443430
"""Return a list of git tags that are valid SemVer and include a template id."""
444431
versions = []
445432
for tag in self.repository.tags:
@@ -454,20 +441,22 @@ def get_all_versions(self, id) -> List[str]:
454441

455442
return [str(v) for v in sorted(versions)]
456443

457-
def get_latest_version(self, id: str, reference: Optional[str], version: Optional[str]) -> Optional[str]:
458-
"""Return latest version number of a template."""
444+
def get_latest_reference_and_version(
445+
self, id: str, reference: Optional[str], version: Optional[str]
446+
) -> Optional[Tuple[str, str]]:
447+
"""Return latest reference and version number of a template."""
459448
if version is None:
460449
return
461450

462451
tag = to_semantic_version(reference)
463452

464453
# NOTE: Assume that a SemVer reference is always a tag
465454
if tag:
466-
versions = self.get_all_versions(id=id)
467-
return versions[-1] if len(versions) > 0 else None
455+
references = self.get_all_references(id=id)
456+
return (references[-1], self.version) if len(references) > 0 else None
468457

469458
# NOTE: Template's reference is a branch or SHA and the latest version is RepositoryTemplates' version
470-
return self.version
459+
return reference, self.version
471460

472461
def _has_template_at(self, id: str, reference: str) -> bool:
473462
"""Return if template id is available at a reference."""

renku/core/management/template/usecase.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,11 @@ def check_for_template_update(client) -> Tuple[bool, bool, Optional[str], Option
7070
metadata = TemplateMetadata.from_client(client=client)
7171

7272
templates_source = fetch_templates_source(source=metadata.source, reference=metadata.reference)
73-
latest_version = templates_source.get_latest_version(
73+
update_available, latest_reference = templates_source.is_update_available(
7474
id=metadata.id, reference=metadata.reference, version=metadata.version
7575
)
7676

77-
update_available = latest_version is not None and latest_version != metadata.version
78-
79-
return update_available, metadata.allow_update, metadata.version, latest_version
77+
return update_available, metadata.allow_update, metadata.reference, latest_reference
8078

8179

8280
@inject.autoparams("client_dispatcher")
@@ -130,7 +128,7 @@ def update_template(
130128

131129
templates_source = fetch_templates_source(source=template_metadata.source, reference=template_metadata.reference)
132130

133-
update_available, latest_version = templates_source.is_update_available(
131+
update_available, latest_reference = templates_source.is_update_available(
134132
id=template_metadata.id, reference=template_metadata.reference, version=template_metadata.version
135133
)
136134

@@ -139,7 +137,7 @@ def update_template(
139137

140138
rendered_template, actions = _set_or_update_project_from_template(
141139
templates_source=templates_source,
142-
reference=latest_version,
140+
reference=latest_reference,
143141
id=template_metadata.id,
144142
interactive=interactive,
145143
dry_run=dry_run,

renku/core/models/template.py

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -60,19 +60,26 @@ def templates(self) -> List["Template"]:
6060

6161
return self.manifest.templates
6262

63-
@abstractmethod
6463
def is_update_available(self, id: str, reference: Optional[str], version: Optional[str]) -> Tuple[bool, str]:
65-
"""Return True if an update is available along with the latest version of a template."""
66-
raise NotImplementedError
64+
"""Return True if an update is available along with the latest reference of a template."""
65+
latest = self.get_latest_reference_and_version(id=id, reference=reference, version=version)
66+
if not latest:
67+
return False, reference
68+
69+
latest_reference, latest_version = latest
70+
update_available = latest_reference != reference or latest_version != version
71+
return update_available, latest_reference
6772

6873
@abstractmethod
69-
def get_all_versions(self, id) -> List[str]:
74+
def get_all_references(self, id) -> List[str]:
7075
"""Return all available versions for a template id."""
7176
raise NotImplementedError
7277

7378
@abstractmethod
74-
def get_latest_version(self, id: str, reference: Optional[str], version: Optional[str]) -> Optional[str]:
75-
"""Return latest version number of a template."""
79+
def get_latest_reference_and_version(
80+
self, id: str, reference: Optional[str], version: Optional[str]
81+
) -> Optional[Tuple[str, str]]:
82+
"""Return latest reference and version number of a template."""
7683
raise NotImplementedError
7784

7885
@abstractmethod
@@ -220,9 +227,9 @@ def templates_source(self, templates_source: TemplatesSource):
220227
self.version = templates_source.version
221228
self.path = templates_source.path / self.id
222229

223-
def get_all_versions(self) -> List[str]:
224-
"""Return all available versions for the template."""
225-
return self.templates_source.get_all_versions(self.id)
230+
def get_all_references(self) -> List[str]:
231+
"""Return all available references for the template."""
232+
return self.templates_source.get_all_references(self.id)
226233

227234
def validate(self, skip_files):
228235
"""Validate a template."""

0 commit comments

Comments
 (0)