Skip to content

Commit 16a55d1

Browse files
committed
Add custom email template for failed CI
Fixes: QTQAINFRA-4731 Change-Id: Iff7a95e407205ec0562f41d11eae1717ffee40fa Reviewed-by: Tor Arne Vestbø <[email protected]> Reviewed-by: Daniel Smith <[email protected]>
1 parent 52abba4 commit 16a55d1

File tree

7 files changed

+92
-8
lines changed

7 files changed

+92
-8
lines changed

BUILD

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ gerrit_plugin(
1111
"Implementation-Title: Qt Code Review Flow Plugin",
1212
"Implementation-URL: https://codereview.qt-project.org/p/qtqa/gerrit-plugin-qt-workflow.git",
1313
],
14-
resources = glob(["src/main/**/*"]),
14+
resources = glob(["src/main/resources/**/*"]),
1515
)
1616

1717
junit_tests(
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
//
2+
// Copyright (C) 2022 The Qt Company
3+
//
4+
5+
package com.googlesource.gerrit.plugins.qtcodereview;
6+
7+
import com.google.gerrit.server.mail.send.MailSoyTemplateProvider;
8+
import com.google.inject.Singleton;
9+
import java.util.HashSet;
10+
import java.util.Set;
11+
12+
public class QtBuildFailedEmailTemplateRegister implements MailSoyTemplateProvider {
13+
14+
public String getPath() {
15+
return "mail";
16+
}
17+
18+
public Set<String> getFileNames() {
19+
Set<String> set = new HashSet<>();
20+
set.add("QtBuildFailed.soy");
21+
set.add("QtBuildFailedHtml.soy");
22+
return set;
23+
}
24+
}

src/main/java/com/googlesource/gerrit/plugins/qtcodereview/QtBuildFailedSender.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//
2-
// Copyright (C) 2019-21 The Qt Company
2+
// Copyright (C) 2019-22 The Qt Company
33
//
44

55
package com.googlesource.gerrit.plugins.qtcodereview;
@@ -24,7 +24,7 @@ public interface Factory {
2424
@Inject
2525
public QtBuildFailedSender(
2626
EmailArguments ea, @Assisted Project.NameKey project, @Assisted Change.Id id) {
27-
super(ea, "comment", newChangeData(ea, project, id));
27+
super(ea, "qtbuildfailed", newChangeData(ea, project, id));
2828
}
2929

3030
@Override
@@ -39,7 +39,10 @@ protected void init() throws EmailException {
3939

4040
@Override
4141
protected void formatChange() throws EmailException {
42-
appendText(textTemplate("Comment"));
42+
appendText(textTemplate("QtBuildFailed"));
43+
if (useHtml()) {
44+
appendHtml(soyHtmlTemplate("QtBuildFailedHtml"));
45+
}
4346
}
4447

4548
@Override

src/main/java/com/googlesource/gerrit/plugins/qtcodereview/QtModule.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//
2-
// Copyright (C) 2020 The Qt Company
2+
// Copyright (C) 2020-22 The Qt Company
33
//
44

55
package com.googlesource.gerrit.plugins.qtcodereview;
@@ -13,6 +13,7 @@
1313
import com.google.gerrit.extensions.restapi.RestApiModule;
1414
import com.google.gerrit.server.git.ChangeMessageModifier;
1515
import com.google.gerrit.server.events.EventTypes;
16+
import com.google.gerrit.server.mail.send.MailSoyTemplateProvider;
1617

1718
public class QtModule extends FactoryModule {
1819

@@ -30,6 +31,7 @@ protected void configure() {
3031
factory(QtBuildFailedSender.Factory.class);
3132
factory(QtChangeUpdateOp.Factory.class);
3233
DynamicSet.bind(binder(), ChangeMessageModifier.class).to(QtChangeMessageModifier.class);
34+
DynamicSet.bind(binder(), MailSoyTemplateProvider.class).to(QtBuildFailedEmailTemplateRegister.class);
3335

3436
install(
3537
new RestApiModule() {
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/**
2+
* Copyright (C) 2022 The Qt Company
3+
*/
4+
5+
{namespace com.google.gerrit.server.mail.template}
6+
7+
/**
8+
* The .QtBuildFailed template will determine the contents of the email related to a
9+
* change failed CI.
10+
*/
11+
12+
{template .QtBuildFailed kind="text"}
13+
{@param change: ?}
14+
{@param coverLetter: ?}
15+
{@param email: ?}
16+
The change has failed CI.
17+
{if $email.changeUrl} ( {$email.changeUrl} ){/if}{\n}
18+
{\n}
19+
Change subject: {$change.subject}{\n}
20+
......................................................................{\n}
21+
{if $coverLetter}
22+
{\n}
23+
{\n}
24+
{$coverLetter}
25+
{\n}
26+
{/if}
27+
{/template}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/**
2+
* Copyright (C) 2022 The Qt Company
3+
*/
4+
5+
{namespace com.google.gerrit.server.mail.template}
6+
7+
/**
8+
* The .QtBuildFailed template will determine the contents of the email related to a
9+
* change failed CI.
10+
*/
11+
12+
{template .QtBuildFailedHtml}
13+
{@param coverLetter: ?}
14+
{@param email: ?}
15+
<p>
16+
The change has <strong>failed</strong> CI.
17+
</p>
18+
19+
{if $email.changeUrl}
20+
<p>
21+
{call .ViewChangeButton data="all" /}
22+
</p>
23+
{/if}
24+
25+
{if $coverLetter}
26+
<div style="white-space:pre-wrap">{$coverLetter}</div>
27+
{/if}
28+
{/template}

src/test/java/com/googlesource/gerrit/plugins/qtcodereview/QtEmailSendingIT.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//
2-
// Copyright (C) 2019-21 The Qt Company
2+
// Copyright (C) 2019-22 The Qt Company
33
//
44

55
package com.googlesource.gerrit.plugins.qtcodereview;
@@ -64,7 +64,7 @@ public void stagedByOwnerBuildFail() throws Exception {
6464
sender.clear();
6565
QtFailBuild("master", "test_build_02");
6666

67-
FakeEmailSender.Message m = sender.getMessages(c.getChangeId(), "comment").get(0);
67+
FakeEmailSender.Message m = sender.getMessages(c.getChangeId(), "qtbuildfailed").get(0);
6868
Address expectedTo = Address.create(user.fullName(), user.email());
6969
assertThat(m.rcpt()).containsExactly(expectedTo);
7070
assertThat(((EmailHeader.AddressList) m.headers().get("To")).getAddressList())
@@ -99,7 +99,7 @@ public void stagedByOtherBuildFail() throws Exception {
9999
sender.clear();
100100
QtFailBuild("master", "test_build_04");
101101

102-
FakeEmailSender.Message m = sender.getMessages(c.getChangeId(), "comment").get(0);
102+
FakeEmailSender.Message m = sender.getMessages(c.getChangeId(), "qtbuildfailed").get(0);
103103
Address expectedTo = Address.create(user.fullName(), user.email());
104104
assertThat(m.rcpt()).containsExactly(expectedTo);
105105
assertThat(((EmailHeader.AddressList) m.headers().get("To")).getAddressList())

0 commit comments

Comments
 (0)