arduino-cli for Azure DevOps
Inofficial community implementation of arduino-cli task for Azure DevOps.
Installation
Install via Visual Studio MarketPlace.
Usage
Example usage for Azure DevOps and detailed description of tasks and arguments.
Tasks
install: ArduinoCliInstall@1
Installs arduino-cli to agent, when not installed already.
version
(string): Set specific version, for example 0.18.0
or as latest
to install arduino-cli. It isn't recommendet to use latest
since arduino-cli has often breaking changes!
Example:
- task: ArduinoCliInstall@1
inputs:
version: 'latest'
core update-index: ArduinoCliCoreUpdateIndex@1
Updates the index of cores.
- (Optional)
additionalUrls
(string): Comma-separated list of additional URLs for the Boards Manager.
- (Optional)
configFile
(file path): The custom config file (if not specified the default will be used).
- (Optional)
format
(string): The output format, can be {text|json}.
- (Optional)
logFile
(file path): Path to the file where logs will be written.
- (Optional)
logFormat
(string): The output format for the logs.
- (Optional)
logLevel
(string): Messages with this level and above will be logged.
- (Optional)
verbose
(boolean): Print the logs on the standard output.
- (Optional)
ArdunioCliToolPath
(file path): Path to the arduino-cli if not using arduino-cli install task before this one.
Example:
- task: ArduinoCliCoreUpdateIndex@1
core install: ArduinoCliCoreInstall@1
Installs additionals cores.
core
(string): Name of core. arduino:avr
for latest verion, arduino:avr@1.8.1
for specific verion.
- (Optional)
runPostInstall
(boolean): Force run of post-install scripts (if the CLI is not running interactively).
- (Optional)
skipPostInstall
(boolean): Force skip of post-install scripts (if the CLI is running interactively).
- (Optional)
additionalUrls
(string): Comma-separated list of additional URLs for the Boards Manager.
- (Optional)
configFile
(file path): The custom config file (if not specified the default will be used).
- (Optional)
format
(string): The output format, can be {text|json}.
- (Optional)
logFile
(file path): Path to the file where logs will be written.
- (Optional)
logFormat
(string): The output format for the logs.
- (Optional)
logLevel
(string): Messages with this level and above will be logged.
- (Optional)
verbose
(boolean): Print the logs on the standard output.
- (Optional)
ArdunioCliToolPath
(file path): Path to the arduino-cli if not using arduino-cli install task before this one.
Example:
- task: ArduinoCliCoreInstall@1
inputs:
core: 'arduino:avr'
lib update-index: ArduinoCliLibdateIndex@1
Updates the libraries index to the latest version.
- (Optional)
additionalUrls
(string): Comma-separated list of additional URLs for the Boards Manager.
- (Optional)
configFile
(file path): The custom config file (if not specified the default will be used).
- (Optional)
format
(string): The output format, can be {text|json}.
- (Optional)
logFile
(file path): Path to the file where logs will be written.
- (Optional)
logFormat
(string): The output format for the logs.
- (Optional)
logLevel
(string): Messages with this level and above will be logged.
- (Optional)
verbose
(boolean): Print the logs on the standard output.
- (Optional)
ArdunioCliToolPath
(file path): Path to the arduino-cli if not using arduino-cli install task before this one.
Example:
- task: ArduinoCliCoreUpdateIndex@1
lib install: ArduinoCliLibInstall@1
Installs additionals cores.
installLibBy
(string): Specify how to install a library. You can choose by name libName
, git url gitUrl
or zip path zipPath
.
lib
(string): Name of lib. AudioZero
for latest verion, AudioZero@1.0.0
for specific verion. Can only be used, when installLibBy
is libName
.
gitUrl
(string): Enter git url for libraries hosted on repositories. Can only be used, when installLibBy
is gitUrl
.
zipPath
(filePath): Enter a path to zip file. Can only be used, when installLibBy
is zipPath
.
- (Optional)
additionalUrls
(string): Comma-separated list of additional URLs for the Boards Manager.
- (Optional)
configFile
(file path): The custom config file (if not specified the default will be used).
- (Optional)
format
(string): The output format, can be {text|json}.
- (Optional)
logFile
(file path): Path to the file where logs will be written.
- (Optional)
logFormat
(string): The output format for the logs.
- (Optional)
logLevel
(string): Messages with this level and above will be logged.
- (Optional)
verbose
(boolean): Print the logs on the standard output.
- (Optional)
ArdunioCliToolPath
(file path): Path to the arduino-cli if not using arduino-cli install task before this one.
Example:
- task: ArduinoCliLibInstall@1
inputs:
installLibBy: 'libName'
lib: 'OneWire@2.3.5'
build: ArduinoCliBuild@1
Builds binary from Arduino sketch.
fqbn
(string): Fully Qualified Board Name, e.g.: arduino:avr:uno
.
sketchDir
(file path): Path to sketch directory. For example: $(System.DefaultWorkingDirectory)/MySketch
, when a sketch is located in $(System.DefaultWorkingDirectory)/MySketch/MySketch.ino
.
- (Optional)
outputDir
(file path): Save build artifacts in this directory. Supported by arduino-cli 0.11.0 and newer.
- (Optional)
buildCachePath
(file path): CBuilds of 'core.a' are saved into this path to be cached and reused.
- (Optional)
buildPath
(file path): CPath where to save compiled files. If omitted, a directory will be created in the default temporary path of your OS
- (Optional)
buildProperty
(string): Override a build property with a custom value. Can be used multiple times for multiple properties.
- (Optional)
clean
(boolean): Optional, cleanup the build folder and do not use any cached build.
- (Optional)
exportBinaries
(boolean): If set built binaries will be exported to the sketch folder.
- (Optional)
libraries
(string): List of custom libraries paths separated by commas.
- (Optional)
onlyCompilationDatabase
(boolean): Just produce the compilation database, without actually compiling.
- (Optional)
optimizeForDebug
(boolean): Optional, optimize compile output for debugging, rather than for release.
- (Optional)
vidPid
(string): When specified, VID/PID specific build properties are used, if board supports them.
- (Optional)
warnings
(string): Optional, can be none
, default
, more
and all
. Defaults to none
. Used to tell gcc which warning level to use (-W flag). (default none
).
- (Optional)
additionalUrls
(string): Comma-separated list of additional URLs for the Boards Manager.
- (Optional)
configFile
(file path): The custom config file (if not specified the default will be used).
- (Optional)
format
(string): The output format, can be {text|json}.
- (Optional)
logFile
(file path): Path to the file where logs will be written.
- (Optional)
logFormat
(string): The output format for the logs.
- (Optional)
logLevel
(string): Messages with this level and above will be logged.
- (Optional)
verbose
(boolean): Print the logs on the standard output.
- (Optional)
ArdunioCliToolPath
(file path): Path to the arduino-cli if not using arduino-cli install task before this one.
Example:
- task: ArduinoCliBuild@1
inputs:
fqbn: 'arduino:avr:uno'
sketchDir: '$(System.DefaultWorkingDirectory)/Main'
Example azure-pipelines.yml
Basic example script for building Blink example on Azure DevOps for Arduino Uno.
See azure-pipelines.yml:
# Sample azure cli to build and publish Arduino Blink example for the Arduino Uno board
trigger:
- main
pool:
vmImage: 'ubuntu-latest'
steps:
# Install latest version of arduino cli
# Not recommended to use the version 'latest'!!!
# arduino-cli has often breaking changes!
# Check https://github.com/arduino/arduino-cli/issues if something is not working anymore!
# So set a specific version! Like: 0.18.0
- task: ArduinoCliInstall@1
inputs:
version: 'latest'
# "The first thing to do upon a fresh install is to update the local cache of available platforms and libraries by running"
# see "Getting started" https://arduino.github.io/arduino-cli/getting-started/#connect-the-board-to-your-pc
- task: ArduinoCliCoreUpdateIndex@1
# Install core for 'arduino:avr'
- task: ArduinoCliCoreInstall@1
inputs:
core: 'arduino:avr'
# Build Main/Main.ino for fqbn 'arduino:avr:uno'
# Like every arduino project, the sketch file must be in a directory named the same as the sketch... ¯\_(ツ)_/¯
# Since arudino cli version 0.10.0 you can't specify a custom path to a sketch file, like 'somedir/someskecht.ino'!
- task: ArduinoCliBuild@1
inputs:
fqbn: 'arduino:avr:uno'
sketchDir: '$(System.DefaultWorkingDirectory)/Main'
outputDir: '$(Build.ArtifactStagingDirectory)'
# Publish build artifacts
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'ArduinoUno-Blink'
publishLocation: 'Container'
- Pipeline triggers on commit on
main
on `ubuntu-latest``
- Installs latest arduino-cli with task
ArduinoCliInstall@1
- "The first thing to do upon a fresh install is to update the local cache of available platforms and libraries by running" Getting started, so run task
ArduinoCliCoreUpdateIndex@1
- Install core for
arduino:avr
in task ArduinoCliCoreInstall@1
- Build Main/Main.ino for Arudino Uno with task
ArduinoCliBuild@1
Changelog
1.1.3
1.1.2
- Update license, add privacy and update extensions uris and tags
1.1.1
- Fix some variables have a value, but they are not required
1.1.0
- Add more build options to support arduino-cli 0.18.0
1.0.1
1.0.0
- Added basic version for cli tasks install, core update-index, lib update-index, lib install, build