-
Notifications
You must be signed in to change notification settings - Fork 806
Release Process
Brian Bowman edited this page Mar 11, 2017
·
2 revisions
The WinObjC team has been publishing regular releases over the last few months. The goal of this page is to clarify the internal process we have when we publish a release. This page also clarifies the different branches we have, and the quality gates that are in place on these branches. This process has undergone improvements over the last few months and will likely be tuned as we learn more.
We have two active branches of development accessible to everyone on GitHub.
- This is the new active development branch for part of the WinObjC Microsoft team.
- The code in this branch is minimally tested. Pre-release packages may be (periodically) published after automatic nightly validation.
- This is also the default branch for the project (all pull-requests go here).
- This is our release/stable branch.
- Code is merged from develop to master on a regular cadence (explained later in this page).
- Once code is merged to master, we perform extended validation.
- Once validation is complete, the branch is tagged, a new release is created, and stable packages are published. Note: master HEAD may not be stable while we validate, please always sync to the latest label
We have multiple quality gates on different branches. Our builds and tests are hosted internally on VSO, with commit triggers.
- This happens before a pull request is merged.
- Performs full build of the SDK package on X86 and ARM.
- Runs unit tests for x86 Debug and Release
- Builds the sample apps that are part of the repo.
- Note: This is mostly only build step, so it may break some apps.
- Note: ARM tests are not run.
- Performed every week day.
- Performs all the steps in CI build
- Builds several OSS sample apps (we are constantly adding more apps to the mix).
- Builds some real world apps.
- Performs launch tests on the apps that were built on ARM and x86.
- Performs unit tests and functional tests on ARM and x86.
- Performs additional validation (api analysis, which is where the annotations come into play).
- Publishes WinObjC symbols to symbol server if you ever need to debug your app.
- Publishes WinObjC pre-release packages on a manual basis.
- Note: The launch tests don't test the apps, they just verify that the app can be installed and launched.
- Performed on commit
- Performs same list of steps as Nightly build on develop branch
- On special occasions, we perform extended validation.
- This includes manually installing and using some of the test apps that we produced and checking them for regressions.
- We do this during the weekly release and when we are making breaking changes (ex: the CoreFoundation change).
Twice a month, we have a Shiproom where (among other things), we do the following:
- Decide what code makes it into the our next release. This is an accumulation of the code in develop and potientially a few cherry-picked changes. This code is merged into
master
- Master CI build has to pass all gates as described earlier.
- Extended validation should pass.
- If there are regressions, we cherry-pick changes and test again.
- When all gates pass, we tag the branch, and create a new release and publish it to nuget.org
- Note: Currently we release once a month, but we may change that in the future depending on needs.
- For a stable build, use the last stable NuGet packages or sync to the commit tag from
master
that matches the desired stable release - For contributions, or to stay cutting edge, use the pre-release packages and the develop branch.
Project
Using the bridge
- Getting Started
- Using vsimporter
- Using the SDK
- Building From Source
- Adding Objective C to an Existing Project
- UI Guidance
- Changing the SDK Version of a Project
- Debugging
- Debugging Stack Traces from Crash Dumps
- Supported Third Party Libraries
- Creating and Linking Against C++ Static Libraries
- Packaging
Samples and Tutorials
- Quick Start Tutorial
- Building a To-Do List App
- Building a Calculator App
- Mixing and Matching UIKit and XAML
- IOS Bridge Samples Repo
Contributing
Links