diff --git a/src/pages/applications/DeploymentManagementPage.tsx b/src/pages/applications/DeploymentManagementPage.tsx index accac08..ab6fdd4 100644 --- a/src/pages/applications/DeploymentManagementPage.tsx +++ b/src/pages/applications/DeploymentManagementPage.tsx @@ -51,6 +51,15 @@ function firstArtifact(release: AppRelease) { return artifacts[0]?.[1] ?? release.artifact ?? '-'; } +function hasDeployableImage(release: AppRelease) { + const imageTags = release.imageTags as ImageTags | null | undefined; + return Object.values(imageTags?.images ?? {}).some((image) => ( + typeof image === 'string' + && image.trim() + && !/^(postgres|mysql|mariadb|mongo)(:|@)/i.test(image.trim()) + )); +} + function deploymentTime(deployment: DeploymentJob) { const value = new Date(deployment.createdAt || deployment.startedAt || deployment.finishedAt || 0).getTime(); return Number.isNaN(value) ? 0 : value; @@ -107,7 +116,9 @@ export function DeploymentManagementPage() { [deployedReleaseIdValues] ); const deployableReleases = useMemo( - () => filteredReleases.filter((release) => !deployedReleaseIds.has(release.id)), + () => filteredReleases.filter((release) => ( + !deployedReleaseIds.has(release.id) && hasDeployableImage(release) + )), [filteredReleases, deployedReleaseIds] ); const filteredDeployments = useMemo( @@ -335,7 +346,7 @@ export function DeploymentManagementPage() { - +
{deployableCards.length === 0 ? (