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.
- 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
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
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 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)- Primary File Path: Path to the primary build artifact file to upload
- Structure: Structure type for the upload (fileorfile+expansion)
- API Key: Buildstash API key for authentication (should be passed in as a secret variable)
- 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)
- Notes: Optional build notes
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 uploadsRefer to Azure docs for more detail.