Skip to content

Build Steps Overview#

ALOps provides a set of building blocks that enables you to create your own build and deployment pipelines. The building blocks are called Build Steps and are defined in YAML files. Let's take a look at the build steps that are available in ALOps.

Related: Build steps v1

ALOps App Compiler#

Compile Business Central extension(s) from AL code.

Full Yaml Description:

    - task: ALOpsAppCompiler@2
      displayName: 'ALOps App Compiler'
      inputs:
        artifactversion:                      # BC/NAV Version, eg: 9, 10.4, NAV2016, 16.4.24524. $(artifactversion) $(artifactversion)
        artifacttype: OnPrem                  # Set Artifact Type. $(artifacttype) $(artifacttype)
        artifactcountry:                      # The Country for the Artifact. $(artifactcountry) $(artifactcountry)
        versionselect: Latest                 # The version to be selected from the Artifacts. $(versionselect) $(versionselect)
        updateruntime:                        # Updates the Runtime parameter in app.json. $(updateruntime) $(updateruntime)
        alternativeartifacturl:               # Overrule the ArtifactUrl which would be determined by [artifacttype/artifactcountry/versionselect]. $(alternativeartifacturl) $(alternativeartifacturl)
        alternativevsixurl:                   # Alternative VSIX download url. Overrules BC Artificat VSIX. 'Latest' can be specified. $(alternativevsixurl) $(alternativevsixurl)
        alsourcepath: $(System.DefaultWorkingDirectory)# Set the root folder for findings App.json's recursivly $(alsourcepath) $(alsourcepath)
        ruleset:                              # Overrule the Ruleset from VSCode settings. Path relative to [alsourcepath] $(ruleset) $(ruleset)
        suppresswarnings: KEEP                # Overrule the 'suppresswarnings' setting. $(suppresswarnings) $(suppresswarnings)
        appversiontemplate: 1.0.*.0           # Template for versioning Apps. '*' is replaced by the current Build Number. $(appversiontemplate) $(appversiontemplate)
        updatebuildnumber: True               # Update the Build number with the current version. $(updatebuildnumber) $(updatebuildnumber)
        appfilenametemplate: %APP_PUBLISHER%_%APP_NAME%_%APP_VERSION%_%BC_TYPE%_%BC_VERSION%_%BC_COUNTRY%.app# Template for App filename. $(appfilenametemplate) $(appfilenametemplate)
        alcodeanalyzer:                       # AL Analyzer(s) used for compiling. (Example: CodeCop,UICop) $(alcodeanalyzer) $(alcodeanalyzer)
        ignorepragmas:                        # Report Suppressed Diagnostics: diagnostics suppressed in source code should be emitted. $(ignorepragmas) $(ignorepragmas)
        enable_external_rulesets: False       # Enable External Rulesets. $(enable_external_rulesets) $(enable_external_rulesets)
        showmycode: Keep                      # Overrule ShowMyCode by setting other option than 'Keep'. $(showmycode) $(showmycode)
        resourceexposurepolicy_allowdebugging: Keep# Overrule allowDebugging by setting other option than 'Keep'. $(resourceexposurepolicy_allowdebugging) $(resourceexposurepolicy_allowdebugging)
        resourceexposurepolicy_allowdownloadingsource: Keep# Overrule allowDownloadingSource by setting other option than 'Keep'. $(resourceexposurepolicy_allowdownloadingsource) $(resourceexposurepolicy_allowdownloadingsource)
        resourceexposurepolicy_includesourceinsymbolfile: Keep# Overrule includeSourceInSymbolFile by setting other option than 'Keep'. $(resourceexposurepolicy_includesourceinsymbolfile) $(resourceexposurepolicy_includesourceinsymbolfile)
        internalsvisibleto: Keep              # Remove internalsVisibleTo by setting other option than 'Keep'. $(internalsvisibleto) $(internalsvisibleto)
        preprocessorsymbols:                  # Overwrite the preprocessorSymbols in app.json, comma seperated string. Set to 'NONE' to remove. $(preprocessorsymbols) $(preprocessorsymbols)
        generatereportlayouts: True           # Set Generate Report Layouts compiler option. $(generatereportlayouts) $(generatereportlayouts)
        applicationinsightskey:               # Overwrite the ApplicationInsightsKey in app.json. Set to 'NONE' to remove InsightsKey. $(applicationinsightskey) $(applicationinsightskey)
        alcachepath: $(System.DefaultWorkingDirectory)#  $(alcachepath) $(alcachepath)
        publishartifact: True                 # Publish generated App Artifact to DevOps. $(publishartifact) $(publishartifact)
        publishxlif: False                    # Publish generated XLIF to DevOps. $(publishxlif) $(publishxlif)
        failonwarnings: False                 # Fail task when any warning occurs. $(failonwarnings) $(failonwarnings)
        failonany: False                      # Fail task when any message occurs. $(failonany) $(failonany)
        storageaccount:                       # Non Default Storage Account. $(storageaccount) $(storageaccount)
        sastoken:                             # SAS Token used to access Storage Account. $(sastoken) $(sastoken)
        printappmanifest: True                # Print the final app.json before compile. $(printappmanifest) $(printappmanifest)
        outputalclogs: True                   # Output ALC logs. $(outputalclogs) $(outputalclogs)
        additionalprobingpaths:               # Add additional Assembly probing Paths. $(additionalprobingpaths) $(additionalprobingpaths)
        allowed_publisher_names:              # Allowed Publisher names. $(allowed_publisher_names) $(allowed_publisher_names)
        allowed_publisher_names_separator: ,  # Allowed Publisher names Separator. $(allowed_publisher_names_separator) $(allowed_publisher_names_separator)
        accept_insider_eula: False            # Accept Insider EULA. $(accept_insider_eula) $(accept_insider_eula)
        track_source_build_metadata: True     # Track Source and Build Metadata $(track_source_build_metadata) $(track_source_build_metadata)
        alc_continuebuildonerror: False       # Set ALC Continue Build On Error option. $(alc_continuebuildonerror) $(alc_continuebuildonerror)
        alc_errorlog: False                   # Set ALC Error Log option. When enabled will publish the log as an Artifact. $(alc_errorlog) $(alc_errorlog)
        pwsh: False                           # Run task in Powershell Core. $(pwsh) $(pwsh)

Parameters#

alternativevsixurl#

By default, it will take the compiler from the BC artifacts. If you want to use a different version, you can specify the URL here. Some keywords are also possible, like:

  • latest - will always take the latest version
  • prerelease - will take the latest prerelease version

Same as described in v1

applicationinsightskey#

Depending on the BC Version, ALOps will either set the "ApplicationInsightsKey" or the "ApplicationInsightsConnectionString". So to keep it simple, you can use this parameter for both cases.

updateruntime#

It could come in handy to control "runtime" from the pipeline. You can do that with the "updateruntime" parameter, which will set the runtime in the app.json file. Examples: - 11.0, 12.0 - will set it to a fixed runtime - Highest - will set it to the highest runtime available - depending on the used VSIX!

publishartifact and alc_errorlog#

The publishartifact parameter controls whether compiled .app files are published as pipeline artifacts. It does NOT control the publishing of error logs.

When alc_errorlog: true is set, error log files will always be published as artifacts, regardless of the publishartifact setting. This is by design to ensure error logs are available for debugging even when app files are not published.

Example:

- task: ALOpsAppCompiler@2
  inputs:
    publishartifact: false    # .app files will NOT be published
    alc_errorlog: true        # Error logs WILL be published

To prevent error logs from being published: - Set alc_errorlog: false (or omit it, as the default is false)

Related: See issue #875 for discussion about this behavior.

Examples#