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 versionprerelease
- will take the latest prerelease version
nav_app_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#
- Default
- NextMajor
- NextMinor
- Working with CodeCops
- Fail On Warnings
- Custom Visx - "latest" is also possible!
- Custom CodeCops
- Combine with App Signing