mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
feat: notify on workspace update (#15979)
Relates to https://github.com/coder/coder/issues/15845 When the `/workspace/<name>/builds` endpoint is hit, we check if the requested template version is different to the previously used template version. If these values differ, we can assume that the workspace has been manually updated and send the appropriate notification. Automatic updates happen in the lifecycle executor and bypasses this endpoint entirely.
This commit is contained in:
+2
-2
@@ -16,7 +16,7 @@ The workspace bobby-workspace has been created from the template bobby-temp=
|
||||
late using version alpha.
|
||||
|
||||
|
||||
See workspace: http://test.com/@bobby/bobby-workspace
|
||||
View workspace: http://test.com/@bobby/bobby-workspace
|
||||
|
||||
--bbe61b741255b6098bb6b3c1f41b885773df633cb18d2a3002b68e4bc9c4
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
@@ -57,7 +57,7 @@ ng>.</p>
|
||||
<a href=3D"http://test.com/@bobby/bobby-workspace" style=3D"display=
|
||||
: inline-block; padding: 13px 24px; background-color: #020617; color: #f8fa=
|
||||
fc; text-decoration: none; border-radius: 8px; margin: 0 4px;">
|
||||
See workspace
|
||||
View workspace
|
||||
</a>
|
||||
=20
|
||||
</div>
|
||||
|
||||
Vendored
+90
@@ -0,0 +1,90 @@
|
||||
From: system@coder.com
|
||||
To: bobby@coder.com
|
||||
Subject: Workspace 'bobby-workspace' has been manually updated
|
||||
Message-Id: 02ee4935-73be-4fa1-a290-ff9999026b13@blush-whale-48
|
||||
Date: Fri, 11 Oct 2024 09:03:06 +0000
|
||||
Content-Type: multipart/alternative; boundary=bbe61b741255b6098bb6b3c1f41b885773df633cb18d2a3002b68e4bc9c4
|
||||
MIME-Version: 1.0
|
||||
|
||||
--bbe61b741255b6098bb6b3c1f41b885773df633cb18d2a3002b68e4bc9c4
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
|
||||
Hello Bobby,
|
||||
|
||||
A new workspace build has been manually created for your workspace bobby-wo=
|
||||
rkspace by bobby to update it to version alpha of template bobby-template.
|
||||
|
||||
|
||||
View workspace: http://test.com/@bobby/bobby-workspace
|
||||
|
||||
View template version: http://test.com/templates/bobby-organization/bobby-t=
|
||||
emplate/versions/alpha
|
||||
|
||||
--bbe61b741255b6098bb6b3c1f41b885773df633cb18d2a3002b68e4bc9c4
|
||||
Content-Transfer-Encoding: quoted-printable
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
|
||||
<!doctype html>
|
||||
<html lang=3D"en">
|
||||
<head>
|
||||
<meta charset=3D"UTF-8" />
|
||||
<meta name=3D"viewport" content=3D"width=3Ddevice-width, initial-scale=
|
||||
=3D1.0" />
|
||||
<title>Workspace 'bobby-workspace' has been manually updated</title>
|
||||
</head>
|
||||
<body style=3D"margin: 0; padding: 0; font-family: -apple-system, system-=
|
||||
ui, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarel=
|
||||
l', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; color: #020617=
|
||||
; background: #f8fafc;">
|
||||
<div style=3D"max-width: 600px; margin: 20px auto; padding: 60px; borde=
|
||||
r: 1px solid #e2e8f0; border-radius: 8px; background-color: #fff; text-alig=
|
||||
n: left; font-size: 14px; line-height: 1.5;">
|
||||
<div style=3D"text-align: center;">
|
||||
<img src=3D"https://coder.com/coder-logo-horizontal.png" alt=3D"Cod=
|
||||
er Logo" style=3D"height: 40px;" />
|
||||
</div>
|
||||
<h1 style=3D"text-align: center; font-size: 24px; font-weight: 400; m=
|
||||
argin: 8px 0 32px; line-height: 1.5;">
|
||||
Workspace 'bobby-workspace' has been manually updated
|
||||
</h1>
|
||||
<div style=3D"line-height: 1.5;">
|
||||
<p>Hello Bobby,</p>
|
||||
|
||||
<p>A new workspace build has been manually created for your workspace <stro=
|
||||
ng>bobby-workspace</strong> by <strong>bobby</strong> to update it to versi=
|
||||
on <strong>alpha</strong> of template <strong>bobby-template</strong>.</p>
|
||||
</div>
|
||||
<div style=3D"text-align: center; margin-top: 32px;">
|
||||
=20
|
||||
<a href=3D"http://test.com/@bobby/bobby-workspace" style=3D"display=
|
||||
: inline-block; padding: 13px 24px; background-color: #020617; color: #f8fa=
|
||||
fc; text-decoration: none; border-radius: 8px; margin: 0 4px;">
|
||||
View workspace
|
||||
</a>
|
||||
=20
|
||||
<a href=3D"http://test.com/templates/bobby-organization/bobby-templ=
|
||||
ate/versions/alpha" style=3D"display: inline-block; padding: 13px 24px; bac=
|
||||
kground-color: #020617; color: #f8fafc; text-decoration: none; border-radiu=
|
||||
s: 8px; margin: 0 4px;">
|
||||
View template version
|
||||
</a>
|
||||
=20
|
||||
</div>
|
||||
<div style=3D"border-top: 1px solid #e2e8f0; color: #475569; font-siz=
|
||||
e: 12px; margin-top: 64px; padding-top: 24px; line-height: 1.6;">
|
||||
<p>© 2024 Coder. All rights reserved - <a =
|
||||
href=3D"http://test.com" style=3D"color: #2563eb; text-decoration: none;">h=
|
||||
ttp://test.com</a></p>
|
||||
<p><a href=3D"http://test.com/settings/notifications" style=3D"colo=
|
||||
r: #2563eb; text-decoration: none;">Click here to manage your notification =
|
||||
settings</a></p>
|
||||
<p><a href=3D"http://test.com/settings/notifications?disabled=3Dd08=
|
||||
9fe7b-d5c5-4c0c-aaf5-689859f7d392" style=3D"color: #2563eb; text-decoration=
|
||||
: none;">Stop receiving emails like this</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
--bbe61b741255b6098bb6b3c1f41b885773df633cb18d2a3002b68e4bc9c4--
|
||||
Vendored
+1
-1
@@ -11,7 +11,7 @@
|
||||
"user_username": "bobby",
|
||||
"actions": [
|
||||
{
|
||||
"label": "See workspace",
|
||||
"label": "View workspace",
|
||||
"url": "http://test.com/@bobby/bobby-workspace"
|
||||
}
|
||||
],
|
||||
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"_version": "1.1",
|
||||
"msg_id": "00000000-0000-0000-0000-000000000000",
|
||||
"payload": {
|
||||
"_version": "1.1",
|
||||
"notification_name": "Workspace Manually Updated",
|
||||
"notification_template_id": "00000000-0000-0000-0000-000000000000",
|
||||
"user_id": "00000000-0000-0000-0000-000000000000",
|
||||
"user_email": "bobby@coder.com",
|
||||
"user_name": "Bobby",
|
||||
"user_username": "bobby",
|
||||
"actions": [
|
||||
{
|
||||
"label": "View workspace",
|
||||
"url": "http://test.com/@bobby/bobby-workspace"
|
||||
},
|
||||
{
|
||||
"label": "View template version",
|
||||
"url": "http://test.com/templates/bobby-organization/bobby-template/versions/alpha"
|
||||
}
|
||||
],
|
||||
"labels": {
|
||||
"initiator": "bobby",
|
||||
"organization": "bobby-organization",
|
||||
"template": "bobby-template",
|
||||
"version": "alpha",
|
||||
"workspace": "bobby-workspace"
|
||||
},
|
||||
"data": null
|
||||
},
|
||||
"title": "Workspace 'bobby-workspace' has been manually updated",
|
||||
"title_markdown": "Workspace 'bobby-workspace' has been manually updated",
|
||||
"body": "Hello Bobby,\n\nA new workspace build has been manually created for your workspace bobby-workspace by bobby to update it to version alpha of template bobby-template.",
|
||||
"body_markdown": "Hello Bobby,\n\nA new workspace build has been manually created for your workspace **bobby-workspace** by **bobby** to update it to version **alpha** of template **bobby-template**."
|
||||
}
|
||||
Reference in New Issue
Block a user