@@ -50,6 +50,7 @@ def assemble_preprod_artifact(
50
50
project_id ,
51
51
checksum ,
52
52
chunks ,
53
+ artifact_id ,
53
54
** kwargs ,
54
55
) -> None :
55
56
"""
@@ -70,10 +71,6 @@ def assemble_preprod_artifact(
70
71
project = Project .objects .get (id = project_id , organization = organization )
71
72
bind_organization_context (organization )
72
73
73
- set_assemble_status (
74
- AssembleTask .PREPROD_ARTIFACT , project_id , checksum , ChunkFileState .ASSEMBLING
75
- )
76
-
77
74
assemble_result = assemble_file (
78
75
task = AssembleTask .PREPROD_ARTIFACT ,
79
76
org_or_project = project ,
@@ -84,23 +81,29 @@ def assemble_preprod_artifact(
84
81
)
85
82
86
83
if assemble_result is None :
87
- # Shouldn't we treat this as an error?
88
- logger .warning (
89
- "Assemble result is None, returning early" ,
90
- extra = {
91
- "project_id" : project_id ,
92
- "organization_id" : org_id ,
93
- "checksum" : checksum ,
94
- },
84
+ raise RuntimeError (
85
+ f"Assemble result is None for preprod artifact assembly (project_id={ project_id } , organization_id={ org_id } , checksum={ checksum } , preprod_artifact_id={ artifact_id } )"
95
86
)
96
- return
97
87
98
- create_preprod_artifact (
99
- org_id = org_id ,
100
- project_id = project_id ,
101
- checksum = checksum ,
88
+ logger .info (
89
+ "Finished preprod artifact assembly" ,
90
+ extra = {
91
+ "project_id" : project_id ,
92
+ "organization_id" : org_id ,
93
+ "checksum" : checksum ,
94
+ "preprod_artifact_id" : artifact_id ,
95
+ },
96
+ )
97
+
98
+ PreprodArtifact .objects .filter (id = artifact_id ).update (
102
99
file_id = assemble_result .bundle .id ,
103
- build_configuration = kwargs .get ("build_configuration" ),
100
+ state = PreprodArtifact .ArtifactState .UPLOADED ,
101
+ )
102
+
103
+ produce_preprod_artifact_to_kafka (
104
+ project_id = project_id ,
105
+ organization_id = org_id ,
106
+ artifact_id = artifact_id ,
104
107
)
105
108
106
109
except Exception as e :
@@ -111,22 +114,18 @@ def assemble_preprod_artifact(
111
114
"project_id" : project_id ,
112
115
"organization_id" : org_id ,
113
116
"checksum" : checksum ,
117
+ "preprod_artifact_id" : artifact_id ,
114
118
},
115
119
)
116
- set_assemble_status (
117
- AssembleTask .PREPROD_ARTIFACT ,
118
- project_id ,
119
- checksum ,
120
- ChunkFileState .ERROR ,
121
- detail = str (e ),
120
+ PreprodArtifact .objects .filter (id = artifact_id ).update (
121
+ state = PreprodArtifact .ArtifactState .FAILED
122
122
)
123
123
return
124
124
125
- # Mark assembly as successful since the artifact was created successfully
126
- set_assemble_status (AssembleTask .PREPROD_ARTIFACT , project_id , checksum , ChunkFileState .OK )
127
125
logger .info (
128
- "Finished preprod artifact assembly " ,
126
+ "Finished preprod artifact row creation and kafka dispatch " ,
129
127
extra = {
128
+ "preprod_artifact_id" : artifact_id ,
130
129
"project_id" : project_id ,
131
130
"organization_id" : org_id ,
132
131
"checksum" : checksum ,
@@ -138,53 +137,50 @@ def create_preprod_artifact(
138
137
org_id ,
139
138
project_id ,
140
139
checksum ,
141
- file_id ,
142
140
build_configuration = None ,
143
- ):
144
- organization = Organization .objects .get_from_cache (pk = org_id )
145
- project = Project .objects .get (id = project_id , organization = organization )
146
- bind_organization_context (organization )
141
+ ) -> str | None :
142
+ try :
143
+ organization = Organization .objects .get_from_cache (pk = org_id )
144
+ project = Project .objects .get (id = project_id , organization = organization )
145
+ bind_organization_context (organization )
147
146
148
- with transaction .atomic (router .db_for_write (PreprodArtifact )):
149
- build_config = None
150
- if build_configuration :
151
- build_config , _ = PreprodBuildConfiguration .objects .get_or_create (
147
+ with transaction .atomic (router .db_for_write (PreprodArtifact )):
148
+ build_config = None
149
+ if build_configuration :
150
+ build_config , _ = PreprodBuildConfiguration .objects .get_or_create (
151
+ project = project ,
152
+ name = build_configuration ,
153
+ )
154
+
155
+ preprod_artifact , _ = PreprodArtifact .objects .get_or_create (
152
156
project = project ,
153
- name = build_configuration ,
157
+ build_configuration = build_config ,
158
+ state = PreprodArtifact .ArtifactState .UPLOADING ,
154
159
)
155
160
156
- preprod_artifact , _ = PreprodArtifact .objects .get_or_create (
157
- project = project ,
158
- file_id = file_id ,
159
- build_configuration = build_config ,
160
- state = PreprodArtifact .ArtifactState .UPLOADED ,
161
- )
161
+ logger .info (
162
+ "Created preprod artifact row" ,
163
+ extra = {
164
+ "preprod_artifact_id" : preprod_artifact .id ,
165
+ "project_id" : project_id ,
166
+ "organization_id" : org_id ,
167
+ "checksum" : checksum ,
168
+ },
169
+ )
162
170
163
- logger .info (
164
- "Created preprod artifact" ,
171
+ return str (preprod_artifact .id )
172
+
173
+ except Exception as e :
174
+ sentry_sdk .capture_exception (e )
175
+ logger .exception (
176
+ "Failed to create preprod artifact row" ,
165
177
extra = {
166
- "preprod_artifact_id" : preprod_artifact .id ,
167
178
"project_id" : project_id ,
168
179
"organization_id" : org_id ,
169
180
"checksum" : checksum ,
170
181
},
171
182
)
172
-
173
- produce_preprod_artifact_to_kafka (
174
- project_id = project_id ,
175
- organization_id = org_id ,
176
- artifact_id = preprod_artifact .id ,
177
- )
178
-
179
- logger .info (
180
- "Finished preprod artifact row creation and kafka dispatch" ,
181
- extra = {
182
- "preprod_artifact_id" : preprod_artifact .id ,
183
- "project_id" : project_id ,
184
- "organization_id" : org_id ,
185
- "checksum" : checksum ,
186
- },
187
- )
183
+ return None
188
184
189
185
190
186
def _assemble_preprod_artifact_file (
@@ -262,7 +258,7 @@ def _assemble_preprod_artifact_size_analysis(
262
258
logger .exception (
263
259
"PreprodArtifact not found during size analysis assembly" ,
264
260
extra = {
265
- "artifact_id " : artifact_id ,
261
+ "preprod_artifact_id " : artifact_id ,
266
262
"project_id" : project .id ,
267
263
"organization_id" : org_id ,
268
264
},
0 commit comments