Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[JENKINS-64388] Update endpoints after AppCenter changes #60

Merged
merged 24 commits into from
Jan 9, 2021

Conversation

mezpahlan
Copy link
Contributor

@mezpahlan mezpahlan commented Dec 9, 2020

Some tests have been ignored / commented out to save time in getting this out. Some new tests for the new functionality have not been written. I will follow this up later with those tests.

I've also not explicitly tested symbol uploading but I am hoping that that has not broken in the recent AppCenter changes.

All tests have been added back in and I have tested this with a ~28MB APK file.

@mezpahlan mezpahlan added the bug Something isn't working label Dec 9, 2020
@NotTheEconomist
Copy link

I was able to test this on our instance today. I attempted to upload both an APK using the GUI (using the legacy "Freestyle" job) and an IPA using the newer declarative pipeline syntax. The former gave this result, then hung forever:

File found matching pattern: client_builds/latest.apk
Creating an upload resource for app.
Create upload resource for app successful.
Setting metadata.
Setting metadata successful.
Uploading app to resource.
Upload app to resource chunk 1 successful.

The latter gave this result and finally succeeded

File found matching pattern: client_builds/latest.ipa
Creating an upload resource for app.
Create upload resource for app successful.
Setting metadata.
Setting metadata successful.
Uploading app to resource.
Upload app to resource chunk 1 successful.
Upload app to resource chunk 2 successful.
Upload app to resource chunk 3 successful.
Upload app to resource chunk 4 successful.
Upload app to resource chunk 5 successful.
Upload app to resource chunk 6 successful.
Upload app to resource chunk 7 successful.
Upload app to resource chunk 8 successful.
Upload app to resource chunk 9 successful.
Upload app to resource chunk 10 successful.
Upload app to resource chunk 11 successful.
Upload app to resource chunk 12 successful.
Upload app to resource chunk 13 successful.
Upload app to resource chunk 14 successful.
Upload app to resource chunk 15 successful.
Upload app to resource chunk 16 successful.
Upload app to resource chunk 17 successful.
Upload app to resource chunk 18 successful.
Upload app to resource chunk 19 successful.
Upload app to resource chunk 20 successful.
Upload app to resource chunk 21 successful.
Upload app to resource chunk 22 successful.
Upload app to resource chunk 23 successful.
Upload app to resource chunk 24 successful.
Upload app to resource chunk 25 successful.
Upload app to resource chunk 26 successful.
Upload app to resource chunk 27 successful.
Upload app to resource chunk 28 successful.
Upload app to resource chunk 29 successful.
Upload app to resource chunk 30 successful.
Upload app to resource chunk 31 successful.
Upload app to resource chunk 32 successful.
Upload app to resource chunk 33 successful.
Upload app to resource chunk 34 successful.
Upload app to resource chunk 35 successful.
Upload app to resource chunk 36 successful.
Upload app to resource chunk 37 successful.
Upload app to resource chunk 38 successful.
Upload app to resource chunk 39 successful.
Upload app to resource chunk 40 successful.
Upload app to resource chunk 41 successful.
Upload app to resource chunk 42 successful.
Upload app to resource chunk 43 successful.
Upload app to resource chunk 44 successful.
Upload app to resource chunk 45 successful.
Upload app to resource chunk 46 successful.
Upload app to resource chunk 47 successful.
Upload app to resource chunk 48 successful.
Upload app to resource chunk 49 successful.
Upload app to resource chunk 50 successful.
Upload app to resource chunk 51 successful.
Upload app to resource chunk 52 successful.
Upload app to resource chunk 53 successful.
Upload app to resource chunk 54 successful.
Upload app to resource chunk 55 successful.
Upload app to resource chunk 56 successful.
Upload app to resource chunk 57 successful.
Upload app to resource chunk 58 successful.
Upload app to resource chunk 59 successful.
Upload app to resource chunk 60 successful.
Upload app to resource chunk 61 successful.
Upload app to resource chunk 62 successful.
Upload app to resource chunk 63 successful.
Upload app to resource chunk 64 successful.
Upload app to resource chunk 65 successful.
Upload app to resource chunk 66 successful.
Upload app to resource chunk 67 successful.
Upload app to resource chunk 68 successful.
Upload app to resource chunk 69 successful.
Upload app to resource chunk 70 successful.
Upload app to resource chunk 71 successful.
Upload app to resource chunk 72 successful.
Upload app to resource chunk 73 successful.
Upload app to resource chunk 74 successful.
Upload app to resource chunk 75 successful.
Upload app to resource chunk 76 successful.
Upload app to resource chunk 77 successful.
Upload app to resource chunk 78 successful.
Upload app to resource chunk 79 successful.
Upload app to resource chunk 80 successful.
Upload app to resource chunk 81 successful.
Upload app to resource chunk 82 successful.
Upload app to resource chunk 83 successful.
Upload app to resource chunk 84 successful.
Upload app to resource chunk 85 successful.
Upload app to resource chunk 86 successful.
Upload app to resource chunk 87 successful.
Upload app to resource chunk 88 successful.
Upload app to resource chunk 89 successful.
Upload app to resource chunk 90 successful.
Upload app to resource chunk 91 successful.
Upload app to resource chunk 92 successful.
Upload app to resource chunk 93 successful.
Upload app to resource chunk 94 successful.
Upload app to resource chunk 95 successful.
Upload app to resource chunk 96 successful.
Upload app to resource chunk 97 successful.
Upload app to resource chunk 98 successful.
Upload app to resource chunk 99 successful.
Upload app to resource chunk 100 successful.
Upload app to resource chunk 101 successful.
Upload app to resource chunk 102 successful.
Upload app to resource chunk 103 successful.
Upload app to resource chunk 104 successful.
Upload app to resource chunk 105 successful.
Upload app to resource chunk 106 successful.
Upload app to resource chunk 107 successful.
Upload app to resource chunk 108 successful.
Upload app to resource chunk 109 successful.
Upload app to resource chunk 110 successful.
Upload app to resource chunk 111 successful.
Upload app to resource chunk 112 successful.
Upload app to resource chunk 113 successful.
Upload app to resource chunk 114 successful.
Upload app to resource chunk 115 successful.
Upload app to resource chunk 116 successful.
Upload app to resource chunk 117 successful.
Upload app to resource chunk 118 successful.
Upload app to resource chunk 119 successful.
Upload app to resource chunk 120 successful.
Upload app to resource chunk 121 successful.
Upload app to resource chunk 122 successful.
Upload app to resource chunk 123 successful.
Upload app to resource chunk 124 successful.
Upload app to resource chunk 125 successful.
Upload app to resource chunk 126 successful.
Upload app to resource chunk 127 successful.
Upload app to resource chunk 128 successful.
Upload app to resource chunk 129 successful.
Upload app to resource chunk 130 successful.
Upload app to resource chunk 131 successful.
Upload app to resource chunk 132 successful.
Upload app to resource chunk 133 successful.
Upload app to resource chunk 134 successful.
Upload app to resource chunk 135 successful.
Upload app to resource chunk 136 successful.
Upload app to resource chunk 137 successful.
Upload app to resource chunk 138 successful.
Upload app to resource chunk 139 successful.
Upload app to resource chunk 140 successful.
Upload app to resource chunk 141 successful.
Upload app to resource chunk 142 successful.
Upload app to resource chunk 143 successful.
Upload app to resource chunk 144 successful.
Upload app to resource chunk 145 successful.
Upload app to resource chunk 146 successful.
Upload app to resource chunk 147 successful.
Upload app to resource chunk 148 successful.
Upload app to resource chunk 149 successful.
Upload app to resource chunk 150 successful.
Upload app to resource chunk 151 successful.
Upload app to resource chunk 152 successful.
Upload app to resource chunk 153 successful.
Upload app to resource chunk 154 successful.
Upload app to resource chunk 155 successful.
Upload app to resource chunk 156 successful.
Upload app to resource chunk 157 successful.
Upload app to resource chunk 158 successful.
Upload app to resource chunk 159 successful.
Upload app to resource chunk 160 successful.
Upload app to resource chunk 161 successful.
Upload app to resource chunk 162 successful.
Upload app to resource chunk 163 successful.
Upload app to resource chunk 164 successful.
Upload app to resource chunk 165 successful.
Upload app to resource chunk 166 successful.
Upload app to resource chunk 167 successful.
Upload app to resource chunk 168 successful.
Upload app to resource chunk 169 successful.
Upload app to resource chunk 170 successful.
Upload app to resource chunk 171 successful.
Upload app to resource chunk 172 successful.
Upload app to resource chunk 173 successful.
Upload app to resource chunk 174 successful.
Upload app to resource chunk 175 successful.
Upload app to resource chunk 176 successful.
Upload app to resource chunk 177 successful.
Upload app to resource chunk 178 successful.
Upload app to resource chunk 179 successful.
Upload app to resource chunk 180 successful.
Upload app to resource chunk 181 successful.
Upload app to resource chunk 182 successful.
Upload app to resource chunk 183 successful.
Upload app to resource chunk 184 successful.
Upload app to resource chunk 185 successful.
Upload app to resource chunk 186 successful.
Upload app to resource chunk 187 successful.
Upload app to resource chunk 188 successful.
Upload app to resource chunk 189 successful.
Upload app to resource chunk 190 successful.
Upload app to resource chunk 191 successful.
Upload app to resource chunk 192 successful.
Upload app to resource chunk 193 successful.
Upload app to resource chunk 194 successful.
Upload app to resource chunk 195 successful.
Upload app to resource chunk 196 successful.
Upload app to resource chunk 197 successful.
Upload app to resource chunk 198 successful.
Upload app to resource chunk 199 successful.
Upload app to resource chunk 200 successful.
Upload app to resource chunk 201 successful.
Upload app to resource chunk 202 successful.
Upload app to resource chunk 203 successful.
Upload app to resource chunk 204 successful.
Upload app to resource chunk 205 successful.
Upload app to resource chunk 206 successful.
Upload app to resource chunk 207 successful.
Upload app to resource chunk 208 successful.
Upload app to resource chunk 209 successful.
Upload app to resource chunk 210 successful.
Upload app to resource chunk 211 successful.
Upload app to resource chunk 212 successful.
Upload app to resource chunk 213 successful.
Upload app to resource chunk 214 successful.
Upload app to resource chunk 215 successful.
Upload app to resource chunk 216 successful.
Upload app to resource chunk 217 successful.
Upload app to resource chunk 218 successful.
Upload app to resource chunk 219 successful.
Upload app to resource chunk 220 successful.
Upload app to resource chunk 221 successful.
Upload app to resource chunk 222 successful.
Upload app to resource chunk 223 successful.
Upload app to resource chunk 224 successful.
Upload app to resource chunk 225 successful.
Upload app to resource chunk 226 successful.
Upload app to resource chunk 227 successful.
Upload app to resource chunk 228 successful.
Upload app to resource chunk 229 successful.
Upload app to resource chunk 230 successful.
Upload app to resource chunk 231 successful.
Upload app to resource chunk 232 successful.
Upload app to resource chunk 233 successful.
Upload app to resource chunk 234 successful.
Upload app to resource chunk 235 successful.
Upload app to resource chunk 236 successful.
Upload app to resource chunk 237 successful.
Upload app to resource chunk 238 successful.
Upload app to resource chunk 239 successful.
Upload app to resource chunk 240 successful.
Upload app to resource chunk 241 successful.
Upload app to resource chunk 242 successful.
Upload app to resource chunk 243 successful.
Upload app to resource chunk 244 successful.
Upload app to resource chunk 245 successful.
Upload app to resource chunk 246 successful.
Upload app to resource chunk 247 successful.
Upload app to resource chunk 248 successful.
Upload app to resource chunk 249 successful.
Upload app to resource chunk 250 successful.
Upload app to resource chunk 251 successful.
Upload app to resource chunk 252 successful.
Upload app to resource chunk 253 successful.
Upload app to resource chunk 254 successful.
Upload app to resource chunk 255 successful.
Upload app to resource chunk 256 successful.
Upload app to resource chunk 257 successful.
Upload app to resource chunk 258 successful.
Upload app to resource chunk 259 successful.
Upload app to resource chunk 260 successful.
Upload app to resource chunk 261 successful.
Upload app to resource chunk 262 successful.
Upload app to resource chunk 263 successful.
Upload app to resource chunk 264 successful.
Upload app to resource chunk 265 successful.
Upload app to resource chunk 266 successful.
Upload app to resource chunk 267 successful.
Upload app to resource chunk 268 successful.
Upload app to resource chunk 269 successful.
Upload app to resource chunk 270 successful.
Upload app to resource chunk 271 successful.
Upload app to resource chunk 272 successful.
Upload app to resource chunk 273 successful.
Upload app to resource chunk 274 successful.
Upload app to resource chunk 275 successful.
Upload app to resource chunk 276 successful.
Upload app to resource chunk 277 successful.
Upload app to resource chunk 278 successful.
Upload app to resource chunk 279 successful.
Upload app to resource chunk 280 successful.
Upload app to resource chunk 281 successful.
Upload app to resource chunk 282 successful.
Upload app to resource chunk 283 successful.
Upload app to resource chunk 284 successful.
Upload app to resource chunk 285 successful.
Upload app to resource chunk 286 successful.
Upload app to resource chunk 287 successful.
Upload app to resource chunk 288 successful.
Upload app to resource chunk 289 successful.
Upload app to resource chunk 290 successful.
Upload app to resource chunk 291 successful.
Upload app to resource chunk 292 successful.
Upload app to resource chunk 293 successful.
Upload app to resource chunk 294 successful.
Upload app to resource chunk 295 successful.
Upload app to resource chunk 296 successful.
Upload app to resource chunk 297 successful.
Upload app to resource chunk 298 successful.
Upload app to resource chunk 299 successful.
Upload app to resource chunk 300 successful.
Upload app to resource chunk 301 successful.
Upload app to resource chunk 302 successful.
Upload app to resource chunk 303 successful.
Upload app to resource chunk 304 successful.
Upload app to resource chunk 305 successful.
Upload app to resource chunk 306 successful.
Upload app to resource chunk 307 successful.
Upload app to resource chunk 308 successful.
Upload app to resource chunk 309 successful.
Upload app to resource chunk 310 successful.
Upload app to resource chunk 311 successful.
Upload app to resource chunk 312 successful.
Upload app to resource chunk 313 successful.
Upload app to resource chunk 314 successful.
Upload app to resource chunk 315 successful.
Upload app to resource chunk 316 successful.
Upload app to resource chunk 317 successful.
Upload app to resource chunk 318 successful.
Upload app to resource chunk 319 successful.
Upload app to resource chunk 320 successful.
Upload app to resource chunk 321 successful.
Upload app to resource chunk 322 successful.
Upload app to resource chunk 323 successful.
Upload app to resource chunk 324 successful.
Upload app to resource chunk 325 successful.
Upload app to resource chunk 326 successful.
Upload app to resource chunk 327 successful.
Upload app to resource chunk 328 successful.
Upload app to resource chunk 329 successful.
Upload app to resource chunk 330 successful.
Upload app to resource chunk 331 successful.
Upload app to resource chunk 332 successful.
Upload app to resource chunk 333 successful.
Upload app to resource chunk 334 successful.
Upload app to resource chunk 335 successful.
Upload app to resource chunk 336 successful.
Upload app to resource chunk 337 successful.
Upload app to resource chunk 338 successful.
Upload app to resource chunk 339 successful.
Upload app to resource chunk 340 successful.
Upload app to resource chunk 341 successful.
Upload app to resource chunk 342 successful.
Upload app to resource chunk 343 successful.
Upload app to resource chunk 344 successful.
Upload app to resource chunk 345 successful.
Upload app to resource chunk 346 successful.
Upload app to resource chunk 347 successful.
Upload app to resource chunk 348 successful.
Upload app to resource chunk 349 successful.
Upload app to resource chunk 350 successful.
Upload app to resource chunk 351 successful.
Upload app to resource chunk 352 successful.
Upload app to resource chunk 353 successful.
Upload app to resource chunk 354 successful.
Upload app to resource chunk 355 successful.
Upload app to resource chunk 356 successful.
Upload app to resource chunk 357 successful.
Upload app to resource chunk 358 successful.
Upload app to resource chunk 359 successful.
Upload app to resource chunk 360 successful.
Upload app to resource chunk 361 successful.
Upload app to resource chunk 362 successful.
Upload app to resource chunk 363 successful.
Upload app to resource chunk 364 successful.
Upload app to resource chunk 365 successful.
Upload app to resource chunk 366 successful.
Upload app to resource chunk 367 successful.
Upload app to resource chunk 368 successful.
Upload app to resource chunk 369 successful.
Upload app to resource chunk 370 successful.
Upload app to resource chunk 371 successful.
Upload app to resource chunk 372 successful.
Upload app to resource chunk 373 successful.
Upload app to resource chunk 374 successful.
Upload app to resource chunk 375 successful.
Upload app to resource chunk 376 successful.
Upload app to resource chunk 377 successful.
Upload app to resource chunk 378 successful.
Upload app to resource chunk 379 successful.
Upload app to resource chunk 380 successful.
Upload app to resource chunk 381 successful.
Upload app to resource chunk 382 successful.
Upload app to resource chunk 383 successful.
Upload app to resource chunk 384 successful.
Upload app to resource chunk 385 successful.
Upload app to resource chunk 386 successful.
Upload app to resource chunk 387 successful.
Upload app to resource chunk 388 successful.
Upload app to resource chunk 389 successful.
Upload app to resource chunk 390 successful.
Upload app to resource chunk 391 successful.
Upload app to resource chunk 392 successful.
Upload app to resource chunk 393 successful.
Upload app to resource chunk 394 successful.
Upload app to resource chunk 395 successful.
Upload app to resource chunk 396 successful.
Upload app to resource chunk 397 successful.
Upload app to resource chunk 398 successful.
Upload app to resource chunk 399 successful.
Upload app to resource chunk 400 successful.
Upload app to resource chunk 401 successful.
Upload app to resource chunk 402 successful.
Upload app to resource chunk 403 successful.
Upload app to resource chunk 404 successful.
Upload app to resource chunk 405 successful.
Upload app to resource chunk 406 successful.
Upload app to resource chunk 407 successful.
Upload app to resource chunk 408 successful.
Upload app to resource chunk 409 successful.
Upload app to resource chunk 410 successful.
Upload app to resource chunk 411 successful.
Upload app to resource chunk 412 successful.
Upload app to resource chunk 413 successful.
Upload app to resource chunk 414 successful.
Upload app to resource chunk 415 successful.
Upload app to resource chunk 416 successful.
Upload app to resource chunk 417 successful.
Upload app to resource chunk 418 successful.
Upload app to resource chunk 419 and final successful.
Finishing release.
Finishing release successful.
Updating release.
Updating release release successful.
Polling for app release.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.
Polling for app release successful however not yet ready will try again.

However both runs have this warning which looks like it's handling secrets wrong.

2020-12-10 00:17:01.173+0000 [id=470]   WARNING hudson.util.Secret#toString: Use of toString() on hudson.util.Secret from java.lang.String.valueOf(String.java:2994). Prefer getPlainText() or getEncryptedValue() depending your needs. see https://jenkins.io/redirect/hudson.util.Secret/
2020-12-10 00:17:01.173+0000 [id=470]   WARNING hudson.util.Secret#toString: Use of toString() on hudson.util.Secret from java.lang.String.valueOf(String.java:2994). Prefer getPlainText() or getEncryptedValue() depending your needs. see https://jenkins.io/redirect/hudson.util.Secret/
2020-12-10 00:17:01.174+0000 [id=470]   WARNING hudson.util.Secret#toString: Use of toString() on hudson.util.Secret from java.lang.String.valueOf(String.java:2994). Prefer getPlainText() or getEncryptedValue() depending your needs. see https://jenkins.io/redirect/hudson.util.Secret/
2020-12-10 00:17:01.174+0000 [id=470]   WARNING o.j.p.s.d.DescribableModel#uninstantiate2: Cannot create control version of class org.jenkinsci.plugins.workflow.steps.CoreStep using {delegate=@appCenter$AppCenterRecorder(apiToken=${API_TOKEN},appName=<REDACTED>,branchName=,buildVersion=,commitHash=,distributionGroups=<REDACTED>,mandatoryUpdate=false,notifyTesters=true,ownerName=<REDACTED>,pathToApp=client_builds/latest.ipa,pathToDebugSymbols=,pathToReleaseNotes=,releaseNotes=Deployed by Jenkins: ${JOB_NAME} #${BUILD_NUMBER})}
java.lang.ClassCastException: io.jenkins.plugins.appcenter.AppCenterRecorder.apiToken expects class java.lang.String but received class hudson.util.Secret
        at org.jenkinsci.plugins.structs.describable.DescribableModel.coerce(DescribableModel.java:492)
        at org.jenkinsci.plugins.structs.describable.DescribableModel.buildArguments(DescribableModel.java:409)
        at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:329)
Caused: java.lang.IllegalArgumentException: Could not instantiate {apiToken=${API_TOKEN}, appName=<REDACTED>, branchName=, buildVersion=, commitHash=, distributionGroups=<REDACTED>, mandatoryUpdate=false, notifyTesters=true, ownerName=<REDACTED>, pathToApp=client_builds/latest.ipa, pathToDebugSymbols=, pathToReleaseNotes=, releaseNotes=Deployed by Jenkins: ${JOB_NAME} #${BUILD_NUMBER}} for io.jenkins.plugins.appcenter.AppCenterRecorder
        at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:334)
        at org.jenkinsci.plugins.structs.describable.UninstantiatedDescribable.instantiate(UninstantiatedDescribable.java:208)
        at org.jenkinsci.plugins.structs.describable.DescribableModel.coerce(DescribableModel.java:466)
        at org.jenkinsci.plugins.structs.describable.DescribableModel.buildArguments(DescribableModel.java:409)
        at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:329)
Caused: java.lang.IllegalArgumentException: Could not instantiate {delegate=@appCenter$AppCenterRecorder(apiToken=${API_TOKEN},appName=<REDACTED>,branchName=,buildVersion=,commitHash=,distributionGroups=<REDACTED>,mandatoryUpdate=false,notifyTesters=true,ownerName=<REDACTED>,pathToApp=client_builds/latest.ipa,pathToDebugSymbols=,pathToReleaseNotes=,releaseNotes=Deployed by Jenkins: ${JOB_NAME} #${BUILD_NUMBER})} for org.jenkinsci.plugins.workflow.steps.CoreStep
        at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:334)
        at org.jenkinsci.plugins.structs.describable.DescribableModel.uninstantiate2(DescribableModel.java:672)
        at org.jenkinsci.plugins.workflow.actions.ArgumentsAction.resolve(ArgumentsAction.java:306)
        at org.jenkinsci.plugins.workflow.actions.ArgumentsAction.getResolvedArguments(ArgumentsAction.java:293)
        at org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode.getDelegateType(StepAtomNode.java:134)
        at org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode.effectiveDisplayName(StepAtomNode.java:90)
        at org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode.getTypeDisplayName(StepAtomNode.java:102)
        at org.jenkinsci.plugins.workflow.graph.FlowNode.getDisplayName(FlowNode.java:257)
        at com.cloudbees.workflow.rest.external.FlowNodeExt.addBasicNodeData(FlowNodeExt.java:206)
        at com.cloudbees.workflow.rest.external.AtomFlowNodeExt.create(AtomFlowNodeExt.java:71)
        at com.cloudbees.workflow.rest.external.ChunkVisitor.makeAtomNode(ChunkVisitor.java:68)
        at com.cloudbees.workflow.rest.external.ChunkVisitor.atomNode(ChunkVisitor.java:154)
        at org.jenkinsci.plugins.workflow.graphanalysis.ForkScanner.fireVisitChunkCallbacks(ForkScanner.java:749)
        at org.jenkinsci.plugins.workflow.graphanalysis.ForkScanner.visitSimpleChunks(ForkScanner.java:767)
        at org.jenkinsci.plugins.workflow.graphanalysis.ForkScanner.visitSimpleChunks(ForkScanner.java:631)
        at com.cloudbees.workflow.rest.external.RunExt.createNew(RunExt.java:319)
        at com.cloudbees.workflow.rest.external.RunExt.create(RunExt.java:307)
        at com.cloudbees.workflow.rest.external.JobExt.create(JobExt.java:143)
        at com.cloudbees.workflow.rest.endpoints.JobAPI.doRuns(JobAPI.java:69)
        at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
        at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:396)
        at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:408)
        at com.cloudbees.workflow.util.ServeJson$Processor.invoke(ServeJson.java:30)
        at org.kohsuke.stapler.PreInvokeInterceptedFunction.invoke(PreInvokeInterceptedFunction.java:26)
        at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:212)
        at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:145)
        at org.kohsuke.stapler.MetaClass$11.doDispatch(MetaClass.java:536)
        at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58)
        at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:766)
        at org.kohsuke.stapler.Stapler.invoke(Stapler.java:898)

@mezpahlan
Copy link
Contributor Author

Hi @NotTheEconomist thanks for testing it out.

I'm a bit worried about that stacktrace since I don't think I changed anything relating to secrets in this PR. I've checked the type of apiToken mentioned in io.jenkins.plugins.appcenter.AppCenterRecorder.apiToken expects class java.lang.String but received class hudson.util.Secret and it is actually a Secret. So I can't at the moment explain how that stacktrace is being generated. ☹️ . Why would it say that it expects a String? That field is declared as a Secret.

Regarding the two log traces that eventually hang: Can you tell me what version of Jenkins you are using, the size of those files, and if possible past the pipeline configuration from your Jenkinsfile (obviously redacted as need).

p.s. ❤️ the github handle 😺

@mezpahlan
Copy link
Contributor Author

@NotTheEconomist I suspect this is probably your issue about the Secrets JENKINS-62305.

@mezpahlan
Copy link
Contributor Author

If anyone is watching this with anticipation and are able to try this pre-release can you install the HPI from build 4 please.

If you could let me know if that works for you I'd appreciate that. I've made some changes to how the chunked upload handled large files.

@mezpahlan
Copy link
Contributor Author

Regarding the secrets handling stack trace above. I am more and more convinced this is a completely separate issue. I have raised a tracking defect as JENKINS-64495. I'll track issues there.

For now I will continue on with addressing the changes in AppCenter endpoints here.

@jensneubauer
Copy link

If you could let me know if that works for you I'd appreciate that. I've made some changes to how the chunked upload handled large files.

Works for me. However, my files were only 2.7 and 3.8 MB in size.

@mezpahlan
Copy link
Contributor Author

Thanks @jensneubauer !

@kgluszczyk
Copy link

If you could let me know if that works for you I'd appreciate that. I've made some changes to how the chunked upload handled large files.

worked for 97.18 MB apk

@mezpahlan
Copy link
Contributor Author

Thanks @kgluszczyk .

Since this has been open for about a month I'm going to merge this now and prep a release later today. Thanks to all that helped out with this.

@mezpahlan mezpahlan merged commit 8129c9e into jenkinsci:master Jan 9, 2021
@mezpahlan mezpahlan deleted the JENKINS-64388-update-endpoints branch January 9, 2021 15:40
@adriavernetta
Copy link

adriavernetta commented Mar 11, 2021

Hi all! Since updating to the 0.11.0 version an old issue has come up (mapping.txt being shown as properly uploaded, but then not being shown in AppCenter).

I didn't find how to file a bug or request in this project. Where should I head to?
Thanks!

@mezpahlan
Copy link
Contributor Author

mezpahlan commented Mar 11, 2021

Hi @adriavernetta we haven't moved to GH issues just yet (that's a whole different discussion within the Jenkins community) so at the moment you need to head over to https://issues.jenkins.io/ and create an issue against the appcenter-plugin component.

@adriavernetta
Copy link

Thank you @mezpahlan (you tagged the wrong adrian haha). Will open it there :)

@mezpahlan
Copy link
Contributor Author

Wooops! How many of you are there 😝 . Sorry about that.

@adriavernetta
Copy link

Haha, quite a common name in all its forms :)
Issue opened here (and I see already asssigned to you)

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
5 participants