Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Storage/feature branch merge with master #7276

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
157 commits
Select commit Hold shift + click to select a range
0020de4
Update Tracing README versions (#6642)
alzimmermsft Dec 4, 2019
a2fa92b
Changed Datalake to beta instead of preview (#6644)
alzimmermsft Dec 4, 2019
2b4c453
Add maven profile to verify readme (#6625)
srnagar Dec 5, 2019
226125d
Workaround template behavior change. (#6652)
mitchdenny Dec 5, 2019
8e79572
Profile activation for verify readme (#6650)
srnagar Dec 5, 2019
02692b6
Track 1 data plane dev packages (#6655)
mitchdenny Dec 5, 2019
e7e9202
Cosmos Issue #6240: Port read-my-writes fix from V4 (#6242)
Dec 5, 2019
962c0da
Cosmos Issue #6253: Port RntbdRequestTimer memory leak fix from V4 (#…
Dec 5, 2019
6819bcc
Prevent HttpLoggingPolicy Consuming Body (#6638)
alzimmermsft Dec 5, 2019
5e37d79
Remove hard-coded version and name from clients (#6557)
sima-zhu Dec 5, 2019
19a644f
Excluding beanutils library from commons validator because of securit…
kushagraThapar Dec 6, 2019
4db0118
Exposed default time to live API on CosmosContainerProperties (#6651)
kushagraThapar Dec 6, 2019
9c8ab03
Kv keys updates (#6657)
g2vinay Dec 6, 2019
a4ed961
Kv keys version updates (#6682)
g2vinay Dec 6, 2019
ad27a4a
Update package index links in README.md (#6672)
weshaggard Dec 6, 2019
1f44a1b
Revert "Remove hard-coded version and name from clients (#6557)" (#6684)
g2vinay Dec 6, 2019
2b24156
Update versions of released libraries (#6685)
alzimmermsft Dec 6, 2019
a7775d6
Fixed issue where account SAS does not work on clients (#6601)
gapra-msft Dec 6, 2019
fdf67a2
Introducing Revapi into build system (#6381)
JonathanGiles Dec 7, 2019
da4c03f
Storage: regenerate package-2019-06 (#6597)
xseeseesee Dec 9, 2019
e3f61b3
CosmosDB: regenerate package-2019-08-preview (#6628)
xseeseesee Dec 9, 2019
2a0186e
Post ga version updates dec2019 (#6706)
JimSuplizio Dec 9, 2019
6b85ab7
Blob Sas (#6409)
gapra-msft Dec 9, 2019
d8bb377
Add Custom Header - In AddHeaderPolicy and RequestIDPolicy (#6602)
hemanttanwar Dec 9, 2019
a59492f
Add Live TestMode and Skip Recording Concepts (#6671)
alzimmermsft Dec 9, 2019
93ef855
Remove Queue Cryptography Module (#6715)
alzimmermsft Dec 9, 2019
ef8545d
Queue, File and Datalake Sas (#6709)
gapra-msft Dec 9, 2019
a400f61
Fixed bug where eTag would not deserialize in listPaths (#6723)
gapra-msft Dec 9, 2019
87a4536
Fixed parsing of consistency level string value from property bag (#6…
kushagraThapar Dec 9, 2019
87d6e0e
README for samples in Event Hubs (#6710)
srnagar Dec 9, 2019
778c292
init CI pipeline (#6731)
mssfang Dec 10, 2019
59fc5f2
HDInsight: regenerate package-2018-06-preview (#6705)
xseeseesee Dec 10, 2019
64d9eed
Add missing HTTP request methods to HttpMethod enum (#6729)
srnagar Dec 10, 2019
ba76215
Clients fetches module name and version from property file (#6734)
sima-zhu Dec 10, 2019
da4bd6d
Added null value holder change (#6737)
kushagraThapar Dec 10, 2019
c5780ef
[ServiceBus] Minor change to teardown in tests so teatdown doesn't th…
yvgopal Dec 10, 2019
2e412af
Changing dependencies with current version of core, since we added ne…
hemanttanwar Dec 10, 2019
e5c47e6
Enhance Blob Test Reliability (#6566)
alzimmermsft Dec 11, 2019
6021619
Cosmos ChangeFeedProcessor fixes (#6744)
milismsft Dec 11, 2019
dfae816
Update root readme for December releases (#6749)
samvaity Dec 11, 2019
d2d3720
AutoRest: update autorest.java cmd (#6735)
xseeseesee Dec 11, 2019
b715af0
Run live tests on all operating systems (#6668)
JimSuplizio Dec 11, 2019
d227635
Added compiler args to suppress unused warnings in samples and test c…
alzimmermsft Dec 11, 2019
d69caa8
Added some tests for making up the test coverage (#6754)
sima-zhu Dec 11, 2019
d6a8381
Update version tags on tracing readme (#6766)
samvaity Dec 11, 2019
b90bab4
Added support for exists method on PathClient (#6767)
gapra-msft Dec 12, 2019
0937d8e
Ignore null headers and allow full url paths (#6760)
jianghaolu Dec 12, 2019
6298fa4
Add changelog to artifacts if it exists (#6746)
JimSuplizio Dec 12, 2019
6d443fa
AzConfig: User provided Customized Headers Policy (#6544)
mssfang Dec 12, 2019
1f9dc34
Publish test results even if build is canceled (#6780)
mikeharder Dec 12, 2019
9f046b7
More tests on fluxUtil and Base64Util (#6770)
sima-zhu Dec 12, 2019
ba4770c
Added response decoder configuration to fix max header size issue (#6…
kushagraThapar Dec 12, 2019
0f2e88f
Add eventhub properties to processing spans (#6768)
samvaity Dec 12, 2019
ad82447
Add "eng" folder to core path triggers (#6803)
mikeharder Dec 12, 2019
2622d88
Added support for ADLS Error Mapping (#6753)
gapra-msft Dec 12, 2019
e7bd953
Added changeLog for azure-core (#6805)
sima-zhu Dec 12, 2019
01f4e8b
Added overloads that do not overwrite by default (#6774)
gapra-msft Dec 12, 2019
f5bfce5
Add connection string null or empty message error (#6811)
mssfang Dec 12, 2019
9f9a455
Setting selector filter (#6693)
mssfang Dec 13, 2019
bf2c9ea
Fixes wrong property file name with unknown name and unknown version …
mssfang Dec 13, 2019
2b1356d
Shorten tracing span names (#6810)
samvaity Dec 13, 2019
de3d83e
This will snapshot the repo state for analysis if the build fails. (#…
mitchdenny Dec 13, 2019
0d3ce64
Capture repo state during build. (#6828)
mitchdenny Dec 13, 2019
8cf70b5
Remove repo capture logic (#6836)
mitchdenny Dec 13, 2019
613b1d7
update service mapper for missing dirs (#6847)
JimSuplizio Dec 13, 2019
4edc3d4
Fixed storage flaky live tests (#6677)
sima-zhu Dec 13, 2019
7619e96
Updated release versions to 3.5.0 (#6852)
kushagraThapar Dec 13, 2019
bd9c58b
Add managed identity live tests in new e2e module (#6833)
jianghaolu Dec 14, 2019
2a61494
Fix Event Hubs READMEs (#6849)
conniey Dec 15, 2019
b52329a
Update qpid-proton-j-extensions dependency (#6743)
conniey Dec 15, 2019
7bec67b
Add links on batch send operation in eventhubs (#6773)
samvaity Dec 16, 2019
3dfb10d
Add Migration Guide for Event Hubs (#6854)
conniey Dec 16, 2019
04dbbaf
Fixed storage flaky live tests Part 2 (#6850)
sima-zhu Dec 16, 2019
4f22af5
Remove surefire failed test reruns (#6883)
alzimmermsft Dec 17, 2019
c3e8aa0
Doc index updates (#6871)
JimSuplizio Dec 17, 2019
b8bc001
Set core dep version to 1.1.0 (#6928)
JimSuplizio Dec 17, 2019
84cfc13
Prepare Repo for DocWarden Updates (#6662)
chidozieononiwu Dec 17, 2019
6564a3f
Fix azure-data-appconfigurationchangelog (#6932)
chidozieononiwu Dec 17, 2019
f637ad0
KeyVault Certificate client API review consistency update (#6823)
samvaity Dec 17, 2019
e3bfae9
Update Certificates library version in README (#6939)
samvaity Dec 18, 2019
3471d46
Add readme exclusion for path (#6940)
chidozieononiwu Dec 18, 2019
63be3e8
Add exclusion fir missing changelog (#6941)
chidozieononiwu Dec 18, 2019
43fb5f2
Updated versions to next beta version (#6926)
kushagraThapar Dec 18, 2019
4e1155c
Test against all built (#6927)
JimSuplizio Dec 18, 2019
66daae5
Rev up azure-core-test beta after release (#6938)
hemanttanwar Dec 18, 2019
a9136de
Update certs version post preview release (#6948)
samvaity Dec 18, 2019
1343aed
Fix changelog (#6951)
chidozieononiwu Dec 18, 2019
ab54405
Updated storage versions post release (#6953)
gapra-msft Dec 19, 2019
12a52bc
Fix Java Links in the root README (#6925)
JimSuplizio Dec 19, 2019
774cd97
Update storage-blob changelog (#6974)
chidozieononiwu Dec 19, 2019
756fc6c
Configure single shot upload (#6950)
rickle-msft Dec 19, 2019
cf32dc2
More Robust BlobBatch Implementation (#6882)
alzimmermsft Dec 19, 2019
71ff41a
Text analytics Preview 1 (#6161)
mssfang Dec 19, 2019
360d638
Policy: generate package-2019-09 (#6630)
xseeseesee Dec 20, 2019
40d92b8
increase and verify version functions (#6980)
JimSuplizio Dec 20, 2019
6f3e5d9
Updates Event Hubs samples (#6986)
conniey Dec 20, 2019
f37c90c
Update error handling logic and add tests for EPC (#6978)
srnagar Dec 20, 2019
2d5d3ab
Correct documentation of `EventPosition.FromOffset` (#6990)
ellismg Dec 20, 2019
622e36a
Remove isInclusive testcase for offset (#6991)
conniey Dec 21, 2019
83fd66c
Changes for unreleased dependencies (#6989)
JimSuplizio Dec 21, 2019
f23ff41
[Event Hubs] Use code snippets from .java files in README (#6993)
srnagar Dec 22, 2019
ded5633
Media Services: generate 2018 07 01 (#7053)
ChenTanyi Dec 27, 2019
1a4fb85
remove duplicate version (#7055)
mssfang Dec 27, 2019
05d3b81
Add JUnit engine dependency to run unit tests for Text Analytics (#7052)
srnagar Dec 27, 2019
8b5531c
Update for Disabled tests in Text Analytics (#7061)
samvaity Dec 27, 2019
1fef465
readme updates (#7019)
mssfang Dec 28, 2019
bdee14e
Added ability to overwrite for download to file (#6994)
gapra-msft Jan 2, 2020
6e181f2
Changing the version of azure client authentication library dependenc…
yvgopal Jan 2, 2020
e6792e8
Split Text Analytics to function based package private clients (#7050)
samvaity Jan 2, 2020
79817de
ChangeLog updates for core modules (#7066)
sima-zhu Jan 3, 2020
3b14327
Net App: generate 2019 10 01 (#7088)
ChenTanyi Jan 3, 2020
918103c
Unit tests for user error handler (#7048)
srnagar Jan 3, 2020
ef05815
Move version and product name from amqp to event hubs library (#7092)
srnagar Jan 3, 2020
19405bb
January release versions for azure-core - getting ready (#7040)
hemanttanwar Jan 3, 2020
41996ff
draft to update contributing for updated versioning (#7093)
JimSuplizio Jan 3, 2020
bb7f7df
Added async samples and refactored sync samples (#7073)
mssfang Jan 3, 2020
d072967
Initial update for January 2020 release (#7098)
joshfree Jan 3, 2020
600994d
AAD sample and README revised, and correct indentation (#7074)
mssfang Jan 3, 2020
8f9c8a1
Doc Index Generation Clean up (#7102)
chidozieononiwu Jan 3, 2020
794c146
BlobOutputStream using BufferedUpload (#7067)
gapra-msft Jan 3, 2020
ac9e65f
core interdependencies should be using current (#7110)
JimSuplizio Jan 4, 2020
019f360
Added a package for Java nio implementation (#7105)
rickle-msft Jan 4, 2020
ebd48c1
Port from v2.6 | Default Direct TCP Options feature to v3 (#7123)
Jan 4, 2020
51c4efc
Reactor netty connection pooling (#7130)
kushagraThapar Jan 6, 2020
643b4cb
fix parent tag validation (#7141)
JimSuplizio Jan 6, 2020
02afbe2
KV-Keys code update (#7075)
g2vinay Jan 6, 2020
126d3c9
changing previously missed readme (#7114)
hemanttanwar Jan 6, 2020
09b81e2
connectionString() method should throw IllegalArgurmentException (#7121)
mssfang Jan 6, 2020
5efc5a6
add release info for 2020 January (#7116)
mssfang Jan 6, 2020
ee31a90
Use standard scheduler and dispose of Integration test one (#7127)
conniey Jan 6, 2020
820dfda
Update Event Hubs and azure-core-amqp current versions and CHANGELOG …
conniey Jan 6, 2020
eb439e3
Print out test name before running test (#7109)
alzimmermsft Jan 6, 2020
7b7dcb9
Cosmosdb release 3.6.0-beta.1 (#7146)
kushagraThapar Jan 6, 2020
ad8791d
Added canLogAtLevel API in logging. (#6886)
sima-zhu Jan 6, 2020
aec20d7
Inject codesnippets for readme, update changelog Text Analytics (#7118)
samvaity Jan 6, 2020
b4b3cce
Update AzConfig release version to 1.0.1 (#7151)
mssfang Jan 6, 2020
4eb87b3
Code Owners for Text Analytics (#7160)
alzimmermsft Jan 7, 2020
8db3b94
release update and minor fix (#7161)
mssfang Jan 7, 2020
e24c82c
[eventhubs] Add a note about Roles for AAD Auth (#7157)
ellismg Jan 7, 2020
ee51635
Updated changelog and versions post release (#7164)
kushagraThapar Jan 7, 2020
db95780
Added basic CI file for spring boot. (#7196)
mitchdenny Jan 7, 2020
8c6e49b
Policy Insights: generate 2019 10 01 (#6793)
ChenTanyi Jan 7, 2020
1fd993d
IoT Central: generate 2018 09 01 (#6792)
ChenTanyi Jan 7, 2020
4bf3f2b
Storage Release Version Update (#7155)
gapra-msft Jan 7, 2020
f40e4bd
Version up after azure core release. (#7163)
hemanttanwar Jan 7, 2020
068d7fe
update_versions.py fix for update-type all (#7231)
JimSuplizio Jan 7, 2020
0708143
update release date to current date (#7235)
mssfang Jan 7, 2020
e378be3
KV version updates Jan 2020 (#7144)
g2vinay Jan 7, 2020
f821fa7
Improve logging and update consumer close logic (#7175)
srnagar Jan 7, 2020
c036768
Update identity for 1.0.2 (#7104)
jianghaolu Jan 7, 2020
cac2ac9
Recreating connections on transient failures (#7090)
conniey Jan 7, 2020
b3c2d7b
No, really fix the script this time (#7239)
JimSuplizio Jan 7, 2020
8b40f51
README Fixes : Fixing links to sdk libraries (#7236)
hemanttanwar Jan 7, 2020
0d62324
Update identity to 1.0.2 everywhere (#7244)
jianghaolu Jan 7, 2020
c6cc384
KV changelog updates (#7176)
g2vinay Jan 7, 2020
0f27612
Fixes NullReferenceException when using long running producer (#7166)
conniey Jan 7, 2020
8d6189b
Merge branch 'master' into feature/storage/stg71-base
gapra-msft Jan 8, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
41 changes: 21 additions & 20 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
Expand Up @@ -6,33 +6,34 @@
###########

# Catch all
/sdk/ @joshfree @jonathangiles
/sdk/ @joshfree @jonathangiles

# Service teams
/sdk/appconfiguration/ @mssfang @alzimmermsft @conniey @sima-zhu
/sdk/batch/ @xingwu1 @bgklein @matthchr
/sdk/core/ @alzimmermsft @jianghaolu @srnagar @hemanttanwar
/sdk/cosmos/ @moderakh @christopheranderson @kushagraThapar
/sdk/eventhubs/ @conniey @srnagar @mssfang
/sdk/identity/ @jianghaolu @g2vinay @hemanttanwar
/sdk/keyvault/ @g2vinay @samvaity
/sdk/servicebus/ @yvgopal @nemakam
/sdk/tracing/ @samvaity @alzimmermsft
/sdk/appconfiguration/ @mssfang @alzimmermsft @conniey @sima-zhu
/sdk/batch/ @xingwu1 @bgklein @matthchr
/sdk/core/ @alzimmermsft @jianghaolu @srnagar @hemanttanwar
/sdk/cosmos/ @moderakh @christopheranderson @kushagraThapar
/sdk/eventhubs/ @conniey @srnagar @mssfang
/sdk/identity/ @jianghaolu @g2vinay @hemanttanwar
/sdk/keyvault/ @g2vinay @samvaity
/sdk/servicebus/ @yvgopal @nemakam
/sdk/textanalytics/ @samvaity @mssfang
/sdk/tracing/ @samvaity @alzimmermsft

/sdk/storage/ @rickle-msft @jaschrep-msft @gapra-msft @alzimmermsft @sima-zhu
/sdk/storage/ @rickle-msft @jaschrep-msft @gapra-msft @alzimmermsft @sima-zhu

# Management Plane
/**/resource-manager/ @yaohaizh
/sdk/**/azure-mgmt-*/ @yaohaizh
/**/resource-manager/ @yaohaizh
/sdk/**/azure-mgmt-*/ @yaohaizh

###########
# Eng Sys
###########
/eng/ @JimSuplizio @mitchdenny @weshaggard @danieljurek
/eng/code-quality-reports/ @mssfang @JonathanGiles
/eng/jacoco-test-coverage/ @srnagar @JonathanGiles
/eng/spotbugs-aggregate-report/ @srnagar @JonathanGiles
/parent/ @JimSuplizio
/eng/ @JimSuplizio @mitchdenny @weshaggard @danieljurek
/eng/code-quality-reports/ @mssfang @JonathanGiles
/eng/jacoco-test-coverage/ @srnagar @JonathanGiles
/eng/spotbugs-aggregate-report/ @srnagar @JonathanGiles
/parent/ @JimSuplizio

/**/tests.yml @danieljurek
/**/ci.yml @mitchdenny
/**/tests.yml @danieljurek
/**/ci.yml @mitchdenny
69 changes: 22 additions & 47 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,31 +87,31 @@ The dependency-version should be set to the most recent released version and the

`com.azure:azure-identity;1.0.0-preview.4;1.0.0-preview.5`

Note: In the case of a new or unreleased artifact both versions will be the same.
Note: In the case of a new artifact both versions will be the same. In the case of a released artifact, the dependecny version should be the latest released version.

### Libraries vs External Dependencies

Libraries refer to things that are built and released as part of the Azure SDK. Libraries have a current version and a dependency version.

External Dependencies refer to dependencies for things that are not built and released as part of the Azure SDK regardless of the source. External Dependencies will only ever have one version.
External Dependencies refer to dependencies for things that are not built and released as part of the Azure SDK regardless of the source. External Dependencies will only ever have a dependency version.

### Current version vs Dependency version
### Current version, Dependency version and Unreleased Dependency version

Current version - This is the version we should be using when defining a component in its POM file and also when dependent components are built within the same pipeline. The current version is the version currently in development.
Dependency version - This is the version we should be using when a given library is a dependency outside of a particular area. This should be the latest released version of the package.
Dependency version - This is the version we should be using when a given library is a dependency outside of a particular area. This should be the latest released version of the package whenever possible.
Unreleased Dependency version – Whenever possible, libraries should be using the latest released version for dependencies but there is the case where active development in one library is going to be needed by another library or libraries that are built in separate pipelines. These types of changes are specifically additive and not breaking. Once a library has GA’d, nothing short of breaking changes should ever force the dependency versions across the repo to an unreleased version. The reason for this is that it would prevent other libraries, that don’t need this change, from releasing.

For example: `com.azure:azure-storage-blob-batch` has dependencies on `com.azure:azure-core`, `com.azure:azure-core-http-netty` and `com.azure:azure-storage-blob`. Because `com.azure:azure-core` and `com.azure:azure-core-http-netty` are both built outside of azure-storage pipeline we should be using the released or *Dependency* versions of these when they're dependencies of another library. Similarly, libraries built as part of the same pipeline, that have interdependencies, should be using the Current version. Since `com.azure:azure-storage-blob-batch` and `com.azure:azure-storage-blob` are both built part of the azure-batch pipeline when `com.azure:azure-storage-blob` is declared as a dependency of `com.azure:azure-storage-blob-batch` it should be the *Current* version.
An example of Current vs Dependency versions: `com.azure:azure-storage-blob-batch` has dependencies on `com.azure:azure-core`, `com.azure:azure-core-http-netty` and `com.azure:azure-storage-blob`. Because `com.azure:azure-core` and `com.azure:azure-core-http-netty` are both built outside of azure-storage pipeline we should be using the released or *Dependency* versions of these when they're dependencies of another library. Similarly, libraries built as part of the same pipeline, that have interdependencies, should be using the Current version. Since `com.azure:azure-storage-blob-batch` and `com.azure:azure-storage-blob` are both built part of the azure-batch pipeline when `com.azure:azure-storage-blob` is declared as a dependency of `com.azure:azure-storage-blob-batch` it should be the *Current* version.

This is going to be especially important after GA when releases aren't going to be the entire Azure SDK every time. If we're releasing a patch for a targeted azure-storage fix then we shouldn't need to build and release azure-core, we should be targeting the released versions and only building/releasing that update to azure-storage. It's worth noting that right now, in the version_client.txt, the dependency/current versions are the same. This will change once we GA, at which point the current version should be ahead of the dependency version.

What about README files? Right now the README files in the repo end up getting into an odd state since things like samples and versions can get updated during the development process. We're in the process of versioning documentation with the releases which means that the docs are snapshot at the time of the release and then versioned and stored. This will allow the README files in the repo to have updated samples and versions that are setup for the next release.
An example of an Unreleased Dependency version: Additive, not breaking, API changes have been made to `com.azure:azure-core`. `com.azure:azure-storage-blob` has a dependency on `com.azure:azure-core` and requires the additive API change that has not yet been released. An unreleased entry needs to be created in [version_client.txt](./eng/versioning/version_client.txt), under the unreleased section, with the following format: `unreleased_<groupId>:<artifactId>;dependency-version`, in this example that would be `unreleased_com.azure:azure-core;1.2.0` (this should match the 'current' version of core). The dependency update tags in the pom files that required this dependency would now reference `{x-version-update;unreleased_com.azure:azure-core;dependency}`. Once the updated library has been released the unreleased dependency version should be removed and the POM file update tags should be referencing the released version.

### Tooling, version files and marker tags

All of the tooling lives under the **eng\versioning** directory.

- version_client.txt - Contains the Client library and versions
- version_data.txt - Contains Data library and versions
- external_dependencies.txt - Contains the external dependency versions
- update_versions.py - This is just a basic python script that will climb through the source tree and update POM and README files. The script utilizes tags within the files to do replacements and the tags are slightly different between the POM and README files.
- set_versions.py - This script should only be used by the build system when we start producing nightly ops builds.

Expand All @@ -135,56 +135,31 @@ In README files this ends up being slightly different. Because the version tag i
```
[//]: # ({x-version-update-end})

What if I've got something that, for whatever reason, shoudln't be updated? There's a tag for that.

`<!-- {x-version-exempt;<groupId>:<artifactId>;reason for excemption} -->`

In theory, absence of an x-version-update tag would do the same thing but the tooling is still being developed and eventually there will be checkin blockers if xml has a version element with no tag.

### What does the process look like?

Let's say we've GA'd and I need to tick up the version of azure-storage libraries how would I do it? Guidelines for incrementing versions after release can be found [here](https://github.com/Azure/azure-sdk/blob/master/docs/policies/releases.md#incrementing-after-release).

1. I'd open up eng\versioning\version_client.txt and update the current-versions of the libraries that are built and released as part of the azure storage pipeline. This list can be found in pom.service.xml under the sdk/storage directory. It's worth noting that any module entry starting with "../" are external module dependencies and not something that's released as part of the pipeline. Once we GA, these build dependencies for library components outside of a given area should go away and be replaced with downloading the appropriate dependency from Maven like we do for external dependencies.
1. I'd open up eng\versioning\version_client.txt and update the current-versions of the libraries that are built and released as part of the azure storage pipeline. This list can be found in pom.service.xml under the sdk/storage directory. It's worth noting that any module entry starting with "../" are external module dependencies and not something that's released as part of the pipeline. Dependencies for library components outside of a given area would be downloading the appropriate dependency from Maven like we do for external dependencies.
2. Execute the update_versions python script from the root of the enlistment
`python eng/versioning/update_versions.py --ut libary --bt client`
This will go through the entire source tree and update all of the references in the POM and README files with the updated versions. Git status will show all of the modified files.
3. Review and submit a PR with the modified files.

### Next steps: External dependencies, Management plane and service pipeline changes
### Next steps: Management plane

- External dependencies. Right now there are only version files for client and data (eng\versioning\version_\[client|data\].txt) which only encompass the built binaries for their respective tracks. External dependencies for both client and data are next on the list which should allow modification of the parent/pom.xml to remove the list of version properties and dependency management sections which brings things one step closer to not having to publish the parent pom.
- Management plane. Management is in the process of being moved to service pipeline builds. The versioning work needs to wait until that work is finished.
- Service pipeline changes. The service pipelines currently have to build not only the libraries that are part of that pipeline but also the Azure SDK libraries that are dependencies. Once we GA and can start targeting the released version of those packages and pulling them from Maven instead of building them. An good example of this would be in sdk/appconfiguration/pom.service.xml where to build azure-data-appconfiguration we end up building azure-core, azure-core-test and azure-core-http-netty along with azure-data-appconfiguration instead of just building azure-data-appconfiguration.

### How are versioning and dependencies going to impact development after GA?

As mentioned above, in the service pipeline changes, the plan after we GA is to start targeting the released version of the packages and pulling them from Maven. This is going to fundamentally change some aspects of the development process especially when work needs to be done on given library that requires dependency changes in one or more libraries.

- **Scenario 1: Making changes to a single library which is not a dependency of any other libraries:** This ends up being the most straightforward scenario and really isn't much different than it is today.
- [ ] Appropriately increase the version
- [ ] Make the code changes
- [ ] Submit the PR
- [ ] Merge the PR
- [ ] Publish the new version

- **Scenario 2: Making changes to a library that also requires dependency changes:** Right now things are in a state where dependency changes can be made along with libraries that depend on them because of the project dependencies in the service pom files. Local development isn't going to change that much except when changing the version of a library and its dependency or dependencies means that the service poms are going to have to be built, and installed, in the appropriate order. This is because these new versions of the library dependencies won't yet be released and Maven will need to find these in the local cache. The biggest change to the process is going to be around PRs and publishing. Separate PRs are going to have to be submitted in order, with dependencies being submitted first. This is necessary because the dependencies need to be published in order to allow things that depend on them to continue using the published version. Trying to submit everything in one PR would cause build breaks since the dependency being referenced is a version not yet published. An example of this would be making changes to `com.azure:azure-storage-common` that also required dependency changes to `com.azure:azure-identity`.
Changes are going to have to be made to `com.azure:azure-identity` first.
- [ ] Appropriately increase the version of `com.azure:azure-identity`
- [ ] Make the code changes
- [ ] Build and optionally install locally
This isn't completely necessary other than to install the updated version of the dependency into the local cache on the machine. The alternative to this would be to publish (DevOps or otherwise) and reference that version of the dependency after the release. Either one would allow `com.azure:azure-storage-common` to use the updated version of `com.azure:azure-identity`
- [ ] Submit the PR for the `com.azure:azure-identity`
- [ ] Merge the PR for the `com.azure:azure-identity`
- [ ] Publish the `com.azure:azure-identity` with the updated version.

Only after the dependency `com.azure:azure-identity` has been published can the PR for `com.azure:azure-storage-common` be created.
- [ ] Appropriately increase the version of `com.azure:azure-storage-common` and the dependency version of `com.azure:azure-identity` in its pom file.
- [ ] Make the code changes, if any
- [ ] Build/Test or whatever
- [ ] Submit the PR for `com.azure:azure-storage-common`
- [ ] Merge the PR for `com.azure:azure-storage-common`
- [ ] Publish the PR for `com.azure:azure-storage-common`

### Making changes to an already GA'd library that require other libraries to depend on the unreleased version

This is where the `unreleased_` dependency tags come into play. Using the Unreleased Dependency example above, where `com.azure:azure-storage-blob` has a dependency on an unreleased `com.azure:azure-core`:

- [ ] Make the additive changes to `com.azure:azure-core`
- [ ] In [version_client.txt](./eng/versioning/version_client.txt) add the entry for the unreleased azure core in the unreleased section at the bottom of the file. The entry would look like `unreleased_com.azure:azure-core;<version>`.
Note: The version of the library referenced in the unreleased version tag should match the current version of that library.
- [ ] In the pom.xml file for `com.azure:azure-storage-blob`, the dependency tag for `com.azure:azure-core` which was originally `{x-version-update;com.azure:azure-core-test;dependency}` would now become `{x-version-update;unreleased_com.azure:azure-core-test;dependency}`
After the unreleased version of `com.azure:azure-core` was released but before `com.azure:azure-storage-blob` has been released.
- [ ] In [version_client.txt](./eng/versioning/version_client.txt) the the dependency version of `com.azure:azure-core` would become the released version and the "unreleased_" entry, at this time, would be removed.
- [ ] In the pom.xml file for `com.azure:azure-storage-blob`, the dependency tag for `com.azure:azure-core` would get changed back to `{x-version-update;com.azure:azure-core-test;dependency}`

### Nightly package builds

Expand Down
Loading