This is a repo that contains yaml and scripts to build and publish third party packages using the vcpkg package manager.
Authorized user can access build pipelines here:
Pipeline: "Build Package (preconfigured)"
This pipeline is intended to be used periodically to build packages in a TechSmith-approved way for use in our products.
It does the following:
- Allows user to pick a package to build from a dropdown list
- Matches the user's selection with a known list of package configurations (see: preconfigured-packages.json)
- Gets the latest vcpkg from our clone of it (see: TechSmith/vcpkg)
- Builds the package for Mac and Windows
- Publishes these packages as pipeline artifacts
- Publishes those artifacts to a GitHub release (see: TechSmith/ThirdParty-Packages-vcpkg/releases)
Future features may include:
- Allow user to optionally enter in a hash of vcpkg to use, rather than always using the latest
- Get vcpkg from Microsoft instead of needing our own clone of it
Pipeline: "Build Package (custom)"
This pipeline is for use when testing out building a new package. Artifacts from this pipeline should not be used in a TechSmith build. When you finish testing using this pipeline, you must configure the "Build Package (preconfigured)" pipeline to contain your new package with it's custom build options and expose it as a new package that a user can choose to build from that pipeline.
It does the following:
- Allows user to enter in:
a. A custom package + optional feature flags (ex.
somepackage
orsomepackage[feature1,feature2]
) b. A link type (dynamic
orstatic
) c. A build type (release
ordebug
) - Gets the latest vcpkg from our clone of it (see: TechSmith/vcpkg)
- Builds the package for Mac and Windows
- Publishes these packages as pipeline artifacts
Linux builds can be developed and run from Windows via WSL. The ffmpeg-cloud pre-configured package for example was created using Ubuntu, which is the default WSL OS.
Given that WSL is quite slow when reading / writing files between Linux and Windows, it's best to run builds directly within a Linux mounted file location (for example ~/projects/ThirdParty-Packages-vcpkg
instead of /mnt/c/projects/ThirdParty-Packages-vcpkg
).