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)
        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)

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!

Examples#