Skip to content

Create full build pipeline in Azure DevOps #6698

@Daniel15

Description

@Daniel15

Following on from #6495, it would be good to configure the full build pipeline in Azure DevOps so we consider using it exclusively. It should simplify releases a bit as we wouldn't have to wait for both CircleCI and AppVeyor to finish the build, and won't encounter issues where one passes while the other fials.

Parts of the build:

  • Restore packages (yarn install --frozen-lockfile)
  • For non-release builds, set the version number (./scripts/set-dev-version.js)
  • Build dist (yarn build-dist)
  • Run tests
  • Build Windows installer (yarn build-win-installer). Must be ran on Windows
  • Build Debian and RPM packages (./scripts/build-deb.sh). Must be ran on Linux
  • For master builds:
  • For tagged version builds:
    • Publish to npm
    • Publish to everything else (GPG sign, push to GitHub releases, update Debian repo, update RPM repo). Currently done as a webhook

The current Azure DevOps pipeline runs some acceptance tests, and builds Yarn for each config (OS + Node.js version). I think we actually just need to restore packages and build Yarn once, and then can reuse those built artifacts for each test job (rather than having multiple jobs that each build then test Yarn).

One potential approach I can see for this is:

  • Build job that runs on Linux - Restores packages, builds dist + the Debian and RPM packages, saves pipeline artifacts
  • Windows Build job - Restores pipeline artifacts from build job, builds the Windows installer, saves artifact (.msi file)
  • Test jobs for each combination we support
  • Publish job to publish everything, for tagged releases, only if the build fails

Need to figure out whether Azure DevOps supports webhooks for deployment (either post the artifacts to the webhook, or allow retrieving them via an API).

cc @arcanis

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions