|
| 1 | +# Daily Build Propsal for .Net BotBuilder SDK |
| 2 | + |
| 3 | +This proposal describes our plan to publish daily builds for consumption. The goals of this are: |
| 4 | +1. Make it easy for developers (1P and 3P) to consume our daily builds. |
| 5 | +2. Exercise our release process frequently, so issues don't arise at critical times. |
| 6 | +3. Meet Developers where they are. |
| 7 | + |
| 8 | +Use the [ASP.Net Team](https://github.com/dotnet/aspnetcore/blob/master/docs/DailyBuilds.md) as inspiration, and draft off the work they do. |
| 9 | + |
| 10 | +# Versioning |
| 11 | +Move to Python suggested versioning for dailies defined in [PEP440](https://www.python.org/dev/peps/pep-0440/#developmental-releases). |
| 12 | + |
| 13 | +The tags we use for preview versions are: |
| 14 | +``` |
| 15 | +.<yyyymmdd>.dev{incrementing value} |
| 16 | +-rc{incrementing value} |
| 17 | +``` |
| 18 | + |
| 19 | +# Daily Builds |
| 20 | +All our Python wheel packages would be pushed to the SDK_Public project at [fuselabs.visualstudio.com](https://fuselabs.visualstudio.com). |
| 21 | + |
| 22 | + Note: Only a public project on Devops can have a public feed. The public project on our Enterprise Tenant is [SDK_Public](https://fuselabs.visualstudio.com/SDK_Public). |
| 23 | + |
| 24 | +This means developers could add this feed their projects by adding the following command on a pip conf file, or in the pip command itself: |
| 25 | + |
| 26 | +```bash |
| 27 | +extra-index-url=https://pkgs.dev.azure.com/ConversationalAI/BotFramework/_packaging/SDK%40Local/pypi/simple/ |
| 28 | +``` |
| 29 | + |
| 30 | +## Debugging |
| 31 | +To debug daily builds in VSCode: |
| 32 | +* In the launch.json configuration file set the option `"justMyCode": false`. |
| 33 | + |
| 34 | +## Daily Build Lifecyle |
| 35 | +Daily builds older than 90 days are automatically deleted. |
| 36 | + |
| 37 | +# Summary - Weekly Builds |
| 38 | +Once per week, preferably on a Monday, a daily build is pushed to PyPI test. This build happens from master, the same as a standard daily build. This serves 2 purposes: |
| 39 | + |
| 40 | +1. Keeps PyPI "Fresh" for people that don't want daily builds. |
| 41 | +2. Keeps the release pipelines active and working, and prevents issues. |
| 42 | + |
| 43 | +These builds will have the "-dev" tag and ARE the the daily build. |
| 44 | + |
| 45 | +**This release pipeline should be the EXACT same pipeline that releases our production bits.** |
| 46 | + |
| 47 | +Weekly builds older than 1 year should be automatically delisted. |
| 48 | + |
| 49 | +## Adding packages to the feed |
| 50 | +Our existing Release pipelines would add packages to the feed. |
| 51 | +# Migration from MyGet |
| 52 | + |
| 53 | +1. Initially, our daily builds should go to both MyGet and Azure Devops. |
| 54 | +2. Our docs are updated once builds are in both locations. |
| 55 | +3. Towards the end of 2020, we stop publising to MyGet. |
| 56 | + |
| 57 | +# Containers |
| 58 | +ASP.Net and .Net Core 5 also publish a container to [Docker Hub](https://hub.docker.com/_/microsoft-dotnet-nightly-aspnet/) as part of their daily feed. We should consider that, along with our samples, in the next iteration of this work. |
0 commit comments