HodorNV / ALOps

ALOps
59 stars 24 forks source link

Increased duration of ALOpsAppPublish@1 #758

Closed Arthurvdv closed 1 month ago

Arthurvdv commented 5 months ago

Describe the bug In our pipelines we have a step to install the Test-Libraries in the container, before running the Test Suite with ALOpsAppTest@1.

We're experiencing a increased duration from 30 seconds to 4 minuten. Probably due to the changes with the release of v24.

the used yaml please provide the yaml that you used. It helps you put the yaml like this:

steps:
  - task: ALOpsAppPublish@1
    displayName: "Install AL TestTool"
    inputs:
      usedocker: true
      installaltesttool: true
      skip_verification: true
      install_al_app_names: |
        Tests-TestLibraries
        System Application Test
        System Application Test Library

the output before.txt after.txt

Screenshots before after

Arthurvdv commented 5 months ago

I've come to the realization that this step has become unnecessary, which then kinda resolves my issue.

Creating the docker images had a wrong parameter;

- task: ALOpsDockerCreate@1
  inputs:
    artifacttype: Sandbox
    artifactcountry: BE
    versionselect: Daily
    accept_insider_eula: true
    includetesttoolkit: true
    includetestframeworkonly: true

Changed the includetestframeworkonly to includetestlibrariesonly, and removed the step ALOpsAppPublish@1 step.

waldo1001 commented 5 months ago

Yeah, we noticed it was slower since v24. Thanks for the suggestion!

joandrsn commented 5 months ago

We also have a large pipeline which uses the ALOpsAppPublish-step. The step is much slower on BC24 than on BC23.

We also see an increase in compilation time using the following step:

    - task: ALOpsAppCompiler@2
      displayName: "ALOps - Fast Compiler apps"
      condition: succeeded()
      inputs:
        artifactversion: $(Version)
        artifactcountry: $(Localization)
        artifacttype: $(EnvironmentType)
        versionselect: $(ArtifactVersion)
        appversiontemplate: $(CompilerArgumentForVersionNo)
        preprocessorsymbols: $(preprocessorSymbols)
        appfilenametemplate: "EVSBA__%APP_NAME%_%APP_VERSION%_APP.app"
        alsourcepath: "$(System.DefaultWorkingDirectory)/Apps"
        publishartifact: ne(variables['SBA_CreateXliff'], '1')    # If we create xliff, then those will be published
        failonwarnings: $(FailAppOnWarnings)
        accept_insider_eula: True

We are talking increase of 2m30s on average for 14 apps. We also compile tests like this, which have increased by 3m52s on average.

When we have 2x fast compile + 3x publish steps in the same pipeline, we have an increase in pipeline runtime of 18 minutes from BC23 to BC24 with the exact same YAML.

Maybe it is having something to do with the new Cmdlets? On Viva Engage, there is thread going on these new Cmdlets being slower: https://www.yammer.com/dynamicsnavdev/#/threads/show?threadId=2746068688338944

waldo1001 commented 5 months ago

Thanks for the link - really interesting! It for sure has something to do with "Get-NavAppInfo" being much slower (probably because of the bridge). Together with that - there are so many things that work differently in PS7/DotNetCore. One example: Split 🙈.

waldo1001 commented 4 months ago

We have an idea on how to speed this up (basically making sure to not use Microsoft's "bridge"). We'll need time for this, as we need to do this for every single step.

waldo1001 commented 3 months ago

If we're talking about v24 (and we should) - can you try with the pwsh parameter to true?

joandrsn commented 3 months ago

We are talking about BC24.

I am unsure if it makes any difference, since in ALOpsAppCompiler@2, there is no mention of pwsh in the documentation: https://docs.alops.be/ALOpsSteps/Buildstepsv2/#alops_app_compiler

I changed on the compilation step anyway and got the following results: Run no. 1 Run no. 2 Run no. 3
With pwsh 10m 6s 8m 14s 8m 10s
Without pwsh 8m 30s 8m 27s 8m 15s

The reason for Run no.1 with pwsh may be because I was attached to the output in Azure Devops.

Personally I do not see any difference, but I am open to suggestions.

waldo1001 commented 2 months ago

We did some improvements to some steps, which we'll release soon. Hopefully it has enough impact for you.

waldo1001 commented 1 month ago

In the meantime, we did some more optimizations, so after next release, I hope you'll see some more impact.

waldo1001 commented 1 month ago

Quite some optimizations - hopefully better (from v1.465)

Arthurvdv commented 1 month ago

Not sure if I should close this issue as the author of this issue, or that @joandrsn want to comment findings of the latest release?

waldo1001 commented 1 month ago

Not sure if I should close this issue as the author of this issue, or that @joandrsn want to comment findings of the latest release?

What are you findings? ;-)

joandrsn commented 1 month ago

I have looked at some of our pipelines. One pipeline has 3 publish steps.

Old version: 1.465.6167 New version: 1.466.6266

step 1: 1min 30s faster step 2: ~15s faster step 3: ~1min faster

So far it's looking good for publishing.

The compilation is the same.

Arthurvdv commented 1 month ago

Do I need to set te pwsh: True flag for testing this?

waldo1001 commented 1 month ago

Depends - when you're building for v24 then yes.

Arthurvdv commented 1 month ago

I did some testing and see a 10-15% decrease in duration, great work!