Buildstash Azure DevOps Extension
This Azure DevOps extension allows you to upload build artifacts to Buildstash.
Buildstash is a platform for software teams to manage all their past builds, organize, share with team members, and steer through to deployment or publishing.
Features
- Upload software builds, for any platform
- Attach associated metadata to builds - such as git commit, Azure Pipelines run data, etc
- Once stored in Buildstash, builds can be be powerfully organized, shared, and more
Installation
Install the extension to your Azure DevOps organization via the marketplace at https://marketplace.visualstudio.com/items?itemName=Buildstash.buildstash-tasks
Add the Buildstash upload task to your pipeline script, using the example below.
Add the application specific API key as a secret variable for your pipeline, with name BUILDSTASH_API_KEY.
Note: You will need to have an active Buildstash account and API key for your application, sign up at buildstash.com
Usage
Add the "Upload to Buildstash" task to your Azure DevOps pipeline:
- task: BuildstashUpload@1
displayName: Upload to Buildstash
inputs:
apiKey: $(BUILDSTASH_API_KEY)
structure: 'file'
primaryFilePath: 'example.exe'
versionComponent1Major: '1'
versionComponent2Minor: '0'
versionComponent3Patch: '1'
versionComponentExtra: 'beta'
versionComponentMeta: '2024.12.02'
customBuildNumber: '12345'
platform: 'windows'
stream: 'default'
# Optional custom target
customTarget: 'Galaxy Store'
# Optional build associations
labels: |
to-review
signed
architectures: |
x64
x86
# Optional CI info
ciBuildDuration: '15m30s'
# Optional VC info
vcHostType: 'git'
vcHost: 'github'
vcRepoName: $(Build.Repository.Name)
vcRepoUrl: $(Build.Repository.Uri)
vcBranch: $(Build.SourceBranchName)
vcCommitSha: $(Build.SourceVersion)
vcCommitUrl: $(Build.Repository.Uri)/commit/$(Build.SourceVersion)
# Optional metadata artifacts (SBOMs, build logs, etc)
metadataArtifacts: |
[
{"path": "$(Build.ArtifactStagingDirectory)/sbom.json", "description": "SBOM"},
{"path": "$(Build.ArtifactStagingDirectory)/build.log", "description": "Build log"}
]
Required
- Primary File Path: Path to the primary build artifact file to upload
- Structure: Structure type for the upload (
file or file+expansion)
- API Key: Buildstash API key for authentication (should be passed in as a secret variable)
Optional
- Expansion File Path: Path to the optional expansion file to upload (can be used to upload Android .obb files with a primary .apk)
- Version Components: Major, minor, patch version components, with optional extra and meta components
- Custom Build Number: Custom build number, in any preferred format
- Version Control Information: Host type, host, repository details, branch, commit information
- Platform: Platform name (must exactly match platform slug attached to your app)
- Stream: Stream name (must exactly match)
- Custom Target: Custom target for this build. Must exactly match the name of a target you've defined, and be accessible to this app
- Metadata Artifacts: Related metadata files (SBOMs, build logs, etc). JSON array of objects with
path and optional description fields. Max 10 files, 5MB each
- Notes: Optional build notes
Adjust Timeout
By default Azure DevOps will timeout jobs after 60 minutes.
This is probably fine, but if you are uploading a particularly massive build, or have a slow connection, you may wish to tweak this.
This is done on the job as below:
jobs:
- job: Test
timeoutInMinutes: 60 # how long to run the job before automatically cancelling in minutes - increase if needed for large uploads
Refer to Azure docs for more detail.