Skip to content

Commit 3f8ed35

Browse files
authored
fix(front): display promoter information for scheduled workflows (#307)
## 📝 Description Currently, scheduled tasks do not correctly show who ran their promotions. This PR ensures that the correct promoter information is displayed when a promotion is manually triggered. ## ✅ Checklist - [x] I have tested this change - [ ] This change requires documentation update
1 parent 6e13101 commit 3f8ed35

File tree

3 files changed

+52
-19
lines changed

3 files changed

+52
-19
lines changed

front/lib/front/models/pipeline/triggerer.ex

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ defmodule Front.Models.Pipeline.Triggerer do
118118
{:user, {triggerer.wf_triggerer_user_id, ""}}
119119

120120
:SCHEDULED_RUN ->
121-
:none
121+
detect_scheduled_run_owner(triggerer)
122122

123123
:SCHEDULED_MANUAL_RUN ->
124124
{:user, {triggerer.wf_triggerer_user_id, ""}}
@@ -137,6 +137,17 @@ defmodule Front.Models.Pipeline.Triggerer do
137137
end
138138
end
139139

140+
defp detect_scheduled_run_owner(triggerer) do
141+
PplTriggeredBy.key(triggerer.ppl_triggered_by)
142+
|> case do
143+
:PROMOTION ->
144+
{:user, {triggerer.ppl_triggerer_user_id, ""}}
145+
146+
_ ->
147+
:none
148+
end
149+
end
150+
140151
@spec detect_trigger(InternalApi.Plumber.Pipeline.t()) :: {trigger_type(), triggered_by()}
141152
# # credo:disable-for-next-line Credo.Check.Refactor.CyclomaticComplexity
142153
defp detect_trigger(pipeline) do
@@ -148,6 +159,9 @@ defmodule Front.Models.Pipeline.Triggerer do
148159
wf_triggered_by == :API ->
149160
{:API, :none}
150161

162+
wf_triggered_by == :SCHEDULE && ppl_triggered_by == :PROMOTION ->
163+
{:MANUAL_PROMOTION, :none}
164+
151165
wf_triggered_by == :SCHEDULE ->
152166
{:SCHEDULED_RUN, {:task, {triggerer.wf_triggerer_id, ""}}}
153167

front/test/front/models/pipeline/triggerer_test.exs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,15 @@ defmodule Front.Models.Pipeline.TriggererTest do
3535
assert {:task, _} = triggerer.triggered_by
3636
assert :none == triggerer.owner
3737
end
38+
39+
test "constructs proper triggerer for promotions" do
40+
pipeline = Factories.pipeline_with_trigger(:SCHEDULED_RUN_WITH_PROMOTION)
41+
triggerer = Triggerer.construct(pipeline)
42+
43+
assert :MANUAL_PROMOTION == triggerer.trigger_type
44+
assert :none = triggerer.triggered_by
45+
assert {:user, _} = triggerer.owner
46+
end
3847
end
3948

4049
describe "#construct for scheduled manual run" do

front/test/support/factories.ex

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3099,64 +3099,74 @@ defmodule Support.Factories do
30993099
end
31003100

31013101
def pipeline_with_trigger(trigger_type \\ nil) do
3102-
trigger_type
3103-
|> case do
3104-
:INITIAL_WORKFLOW ->
3102+
db = %{
3103+
INITIAL_WORKFLOW: fn ->
31053104
pipeline(
31063105
triggerer: [
31073106
wf_triggered_by: WfTriggeredBy.value(:HOOK),
31083107
ppl_triggered_by: PplTriggeredBy.value(:WORKFLOW)
31093108
]
31103109
)
3111-
3112-
:WORKFLOW_RERUN ->
3110+
end,
3111+
WORKFLOW_RERUN: fn ->
31133112
pipeline(
31143113
triggerer: [
31153114
workflow_rerun_of: Ecto.UUID.generate()
31163115
]
31173116
)
3118-
3119-
:API ->
3117+
end,
3118+
API: fn ->
31203119
pipeline(
31213120
triggerer: [
31223121
wf_triggered_by: WfTriggeredBy.value(:API)
31233122
]
31243123
)
3125-
3126-
:SCHEDULED_RUN ->
3124+
end,
3125+
SCHEDULED_RUN: fn ->
31273126
pipeline(
31283127
triggerer: [
31293128
wf_triggered_by: WfTriggeredBy.value(:SCHEDULE)
31303129
]
31313130
)
3132-
3133-
:SCHEDULED_MANUAL_RUN ->
3131+
end,
3132+
SCHEDULED_RUN_WITH_PROMOTION: fn ->
3133+
pipeline(
3134+
triggerer: [
3135+
wf_triggered_by: WfTriggeredBy.value(:SCHEDULE),
3136+
ppl_triggered_by: PplTriggeredBy.value(:PROMOTION)
3137+
]
3138+
)
3139+
end,
3140+
SCHEDULED_MANUAL_RUN: fn ->
31343141
pipeline(
31353142
triggerer: [
31363143
wf_triggered_by: WfTriggeredBy.value(:MANUAL_RUN)
31373144
]
31383145
)
3139-
3140-
:PIPELINE_PARTIAL_RERUN ->
3146+
end,
3147+
PIPELINE_PARTIAL_RERUN: fn ->
31413148
pipeline(
31423149
triggerer: [
31433150
ppl_triggered_by: PplTriggeredBy.value(:PARTIAL_RE_RUN)
31443151
]
31453152
)
3146-
3147-
:MANUAL_PROMOTION ->
3153+
end,
3154+
MANUAL_PROMOTION: fn ->
31483155
pipeline(
31493156
triggerer: [
31503157
ppl_triggered_by: PplTriggeredBy.value(:PROMOTION)
31513158
]
31523159
)
3153-
3154-
:AUTO_PROMOTION ->
3160+
end,
3161+
AUTO_PROMOTION: fn ->
31553162
pipeline(
31563163
triggerer: [
31573164
ppl_triggered_by: PplTriggeredBy.value(:AUTO_PROMOTION)
31583165
]
31593166
)
3160-
end
3167+
end
3168+
}
3169+
3170+
db[trigger_type].()
31613171
end
31623172
end

0 commit comments

Comments
 (0)