Compare commits

...

4 Commits

Author SHA1 Message Date
James Player
ccf8edc063 Bump version to v2.27.3 (#571) 2025-03-25 12:52:50 +13:00
James Player
2feaacddb9 fix(kubernetes): 2.27 Cluster reservation CPU not showing R8S-268 (#570) 2025-03-25 11:01:31 +13:00
Oscar Zhou
65e0344975 fix(libstack): data loss for stack with relative path [FR-437] (#559) 2025-03-21 09:19:31 +13:00
Steven Kang
915beecce3 chore: bump 2.27.2 (#535) 2025-03-19 13:01:47 +13:00
7 changed files with 14 additions and 7 deletions

View File

@@ -610,7 +610,7 @@
"RequiredPasswordLength": 12
},
"KubeconfigExpiry": "0",
"KubectlShellImage": "portainer/kubectl-shell:2.27.1",
"KubectlShellImage": "portainer/kubectl-shell:2.27.3",
"LDAPSettings": {
"AnonymousMode": true,
"AutoCreateUsers": true,
@@ -943,7 +943,7 @@
}
],
"version": {
"VERSION": "{\"SchemaVersion\":\"2.27.1\",\"MigratorCount\":0,\"Edition\":1,\"InstanceID\":\"463d5c47-0ea5-4aca-85b1-405ceefee254\"}"
"VERSION": "{\"SchemaVersion\":\"2.27.3\",\"MigratorCount\":0,\"Edition\":1,\"InstanceID\":\"463d5c47-0ea5-4aca-85b1-405ceefee254\"}"
},
"webhooks": null
}

View File

@@ -68,7 +68,7 @@ func copyFile(src, dst string) error {
defer from.Close()
// has to include 'execute' bit, otherwise fails. MkdirAll follows `mkdir -m` restrictions
if err := os.MkdirAll(filepath.Dir(dst), 0744); err != nil {
if err := os.MkdirAll(filepath.Dir(dst), 0755); err != nil {
return err
}
to, err := os.Create(dst)

View File

@@ -81,7 +81,7 @@ type Handler struct {
}
// @title PortainerCE API
// @version 2.27.1
// @version 2.27.3
// @description.markdown api-description.md
// @termsOfService

View File

@@ -1637,7 +1637,7 @@ type (
const (
// APIVersion is the version number of the Portainer API
APIVersion = "2.27.1"
APIVersion = "2.27.3"
// Support annotation for the API version ("STS" for Short-Term Support or "LTS" for Long-Term Support)
APIVersionSupport = "LTS"
// Edition is what this edition of Portainer is called

View File

@@ -71,7 +71,9 @@ class KubernetesClusterController {
const applicationsResources = await getTotalResourcesForAllApplications(this.endpoint.Id);
this.resourceReservation = new KubernetesResourceReservation();
this.resourceReservation.CPU = Math.round(applicationsResources.CpuRequest / 1000);
// Using same rounding method as CPULimit in getNodesAsync for consistency
this.resourceReservation.CPU = Math.round(applicationsResources.CpuRequest * 10000) / 10000;
this.resourceReservation.Memory = KubernetesResourceReservationHelper.megaBytesValue(applicationsResources.MemoryRequest);
if (this.hasResourceUsageAccess()) {

View File

@@ -2,7 +2,7 @@
"author": "Portainer.io",
"name": "portainer",
"homepage": "http://portainer.io",
"version": "2.27.1",
"version": "2.27.3",
"repository": {
"type": "git",
"url": "git@github.com:portainer/portainer.git"

View File

@@ -98,6 +98,11 @@ func withComposeService(
WorkingDir: filepath.Dir(filePaths[0]),
}
if options.ProjectDir != "" {
// When relative paths are used in the compose file, the project directory is used as the base path
configDetails.WorkingDir = options.ProjectDir
}
for _, p := range filePaths {
configDetails.ConfigFiles = append(configDetails.ConfigFiles, types.ConfigFile{Filename: p})
}