Skip to content

Commit d665673

Browse files
authored
pull base content,head:MicrosoftDocs:main,into:wwlpublishsync
2 parents 1ffc92c + cab2a06 commit d665673

File tree

72 files changed

+619
-369
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+619
-369
lines changed

learn-pr/azure-devops/manage-build-dependencies/includes/1-introduction.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
In this module, you'll create a build pipeline that produces a package that multiple apps can use.
1+
In this module, you create a build pipeline that produces a package that multiple apps can use.
22

3-
It's likely that you've used open-source or other third-party components in your software. Using components that are popular in the community and have already been built and tested is often the fastest way to get things done.
3+
It's likely that you used open-source or other partner components in your software. Using components that are popular in the community and have already been built and tested is often the fastest way to get things done.
44

5-
You might also have your own app code that you can move into a library or package so that others can use it. This might be an open-source project, or software that only your team can access.
5+
You might also have your own app code that you can move into a library or package so that others can use it. This code might be an open-source project, or software that only your team can access.
66

7-
There are many ways to build and host your packages. The right solution depends both on the kinds of programming languages and frameworks you use and who you want to access your packages. Here, you'll continue your work with the Tailspin web team by creating a NuGet package for .NET that's hosted on Azure Artifacts.
7+
There are many ways to build and host your packages. The right solution depends both on the kinds of programming languages and frameworks you use and who you want to access your packages. Here, you continue your work with the Tailspin web team by creating a NuGet package for .NET that Azure Artifacts hosts.
88

9-
After completing this module, you'll be able to:
9+
After you complete this module, you'll be able to:
1010

1111
- Create and share packages that multiple applications can use.
1212
- Create a build pipeline for your package and publish your package to Azure Artifacts.
@@ -17,7 +17,7 @@ After completing this module, you'll be able to:
1717

1818
The modules in this learning path form a progression.
1919

20-
To follow the progression from the beginning, be sure to first complete the [Get started with Azure DevOps](../../../paths/evolve-your-devops-practices/index.yml?azure-portal=true) learning path.
20+
To follow the progression from the beginning, first complete the [Get started with Azure DevOps](../../../paths/evolve-your-devops-practices/index.yml?azure-portal=true) learning path.
2121

2222
We also recommend you start at the beginning of this learning path, [Build applications with Azure DevOps](../../../paths/build-applications-with-azure-devops/index.yml?azure-portal=true).
2323

@@ -33,7 +33,7 @@ This environment lets you complete the exercises in this and future modules. You
3333

3434
## Meet the team
3535

36-
You met the _Space Game_ web team at Tailspin Toys in previous modules. As a refresher, here's who you'll work with in this module.
36+
You met the _Space Game_ web team at Tailspin Toys in previous modules. As a refresher, here's who you work with in this module.
3737

3838
:::row:::
3939

@@ -47,4 +47,4 @@ You met the _Space Game_ web team at Tailspin Toys in previous modules. As a ref
4747

4848
:::row-end:::
4949

50-
Mara has prior experience with DevOps, and is helping the team adopt a more streamlined process by using Azure DevOps.
50+
Mara has prior experience with DevOps, and is helping the team adopt a more streamlined process by using Azure DevOps.

learn-pr/azure-devops/manage-build-dependencies/includes/2-plan-build-dependencies-for-your-pipeline.md

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
In this unit, you'll learn about packaging code to make it easier to share. You'll discover why you should make packages, the kinds of packages you can create, where you can host the packages, and how you can access them when they're hosted. You'll also learn about package versioning.
1+
In this unit, you learn about packaging code to make it easier to share. You discover why you should make packages, the kinds of packages you can create, where you can host the packages, and how you can access them when they're hosted. You also learn about package versioning.
22

3-
Codebases are always growing larger and more complex. It's unusual for a team to write all the code that their app uses. Instead, the team includes existing code written by other developers. There can be many of these packages, or dependencies, in an app. It's important to actively manage these dependencies to be able to maintain them properly and make sure they meet security requirements.
3+
Codebases are always growing larger and more complex. It's unusual for a team to write all the code that their app uses. Instead, the team includes existing code written by other developers. There can be many of these packages, or *dependencies*, in an app. It's important to actively manage dependencies to be able to maintain them properly and make sure they meet security requirements.
44

5-
Let's check in and see how the team is doing. Andy has called the team together to talk about a potential change to their code that would help out another team.
5+
Check in and see how the team is doing. Andy called the team together to talk about a potential change to their code that would help out another team.
66

77
## Team meeting
88

@@ -24,33 +24,33 @@ Let's check in and see how the team is doing. Andy has called the team together
2424

2525
## What is a package?
2626

27-
A _package_ contains reusable code that other developers can use in their own projects, even though they didn't write it.
27+
A *package* contains reusable code that other developers can use in their own projects, even though they didn't write it.
2828

29-
For compiled languages, a package typically contains the compiled binary code, such as .dll files in .NET, or .class files in Java. For languages that are interpreted instead of compiled, such as JavaScript or Python, a package might include source code.
29+
For compiled languages, a package typically contains the compiled binary code, such as *.dll* files in .NET or *.class* files in Java. For languages that are interpreted instead of compiled, such as JavaScript or Python, a package might include source code.
3030

3131
Either way, packages are typically compressed to ZIP or a similar format. Package systems often define a unique file extension, such as *.nupkg* or *.jar*, to make the package's use clear. Compression can help reduce download time and also produce a single file to simplify management.
3232

33-
Packages also often contain one or more files that provide metadata, or information about the package. This metadata might describe what the package does, specify its license terms, the author's contact information, and the package's version.
33+
Packages also often contain one or more files that provide metadata, or information about the package. This metadata might describe what the package does, specify its license terms, the author's contact information, and the package version.
3434

3535
## Why should I build a package?
3636

3737
There are advantages to building a package as opposed to duplicating the code.
3838

39-
One reason to create a package instead of duplicating code is to prevent _drift_. When code is duplicated, each copy can quickly diverge to satisfy the requirements of a particular app. It becomes difficult to migrate changes from one copy to the others. In other words, you lose the ability to improve the code in ways that benefit everyone.
39+
One reason to create a package instead of duplicating code is to prevent *drift*. When code is duplicated, each copy can quickly diverge to satisfy the requirements of a particular app. It becomes difficult to migrate changes from one copy to the others. In other words, you lose the ability to improve the code in ways that benefit everyone.
4040

4141
Packages also group related functionality into one reusable component. Depending on the programming language, a package can provide apps with access to certain types and functions, while restricting access to their implementation details.
4242

43-
Another reason to build a package is to provide a consistent way to build and test that package's functionality. When code is duplicated, each app might build and test that code in different ways. One set of tests might include checks from which another set could benefit.
43+
Another reason to build a package is to provide a consistent way to build and test the functionality of that package. When code is duplicated, each app might build and test that code in different ways. One set of tests might include checks from which another set could benefit.
4444

4545
One tradeoff is that you have another codebase to test and maintain with a package. You must also be careful when adding features. Generally speaking, a package should contain features that benefit many kinds of apps. For example, [Json.NET](https://www.newtonsoft.com/json?azure-portal=true) is a popular NuGet package for .NET that allows you to work with JSON files. Json.NET is open source, so the community can propose improvements and report issues.
4646

4747
When multiple apps can benefit from the same code, the advantages far outweigh the disadvantages. You have just one codebase, just one set of tests, and just one build process to manage.
4848

4949
## How can I identify dependencies?
5050

51-
If the goal is to reorganize your code into separate components, you need to identify those pieces of your app that can be removed, packaged to be made reusable, stored in a central location, and versioned. You might even want to replace your own code with third-party components that are either open source or that you license.
51+
If the goal is to reorganize your code into separate components, you need to identify those pieces of your app that can be removed, packaged to be made reusable, stored in a central location, and versioned. You might even want to replace your own code with partner components that are either open source or that you license.
5252

53-
There are many ways to identify the potential dependencies in your codebase. These include scanning your code for patterns of reuse, and analyzing the architecture of your solution. Here are some ways to identify dependencies:
53+
There are many ways to identify the potential dependencies in your codebase. These approaches include scanning your code for patterns of reuse, and analyzing the architecture of your solution. Here are some ways to identify dependencies:
5454

5555
* **Duplicate code**.
5656

@@ -62,7 +62,7 @@ There are many ways to identify the potential dependencies in your codebase. The
6262

6363
* **Individual lifecycle**.
6464

65-
Look for parts of the code that have a similar lifecycle that you can deploy and release individually. If this code can be maintained by a separate team, it's a good indication you can package it as a component outside of the solution.
65+
Look for parts of the code that have a similar lifecycle that you can deploy and release individually. If a separate team can maintain this code, it's a good indication you can package it as a component outside of the solution.
6666

6767
* **Stable parts**.
6868

@@ -72,7 +72,7 @@ There are many ways to identify the potential dependencies in your codebase. The
7272

7373
Whenever code and components are independent and unrelated to other parts of the system, you can potentially isolate them into separate dependencies.
7474

75-
You can use various tools to assist you in scanning and examining your codebase. These range from tools that scan for duplicate code and draw solution dependency graphs to tools that can compute metrics for coupling and cohesion.
75+
You can use various tools to assist you in scanning and examining your codebase. Examples range from tools that scan for duplicate code and draw solution dependency graphs to tools that can compute metrics for coupling and cohesion.
7676

7777
## What kinds of packages are there?
7878

@@ -83,11 +83,11 @@ You might already be familiar with these popular package systems:
8383
* **NuGet**: packages .NET libraries
8484
* **NPM**: packages JavaScript libraries
8585
* **Maven**: packages Java libraries
86-
* **Docker**: packages software in isolated units called _containers_
86+
* **Docker**: packages software in isolated units called *containers*
8787

8888
## Where are packages hosted?
8989

90-
You can host packages on your own network, or you can use a hosting service. A hosting service is often called a _package repository_ or _package registry_. Many of these services provide free hosting for open-source projects.
90+
You can host packages on your own network, or you can use a hosting service. A hosting service is often called a *package repository* or *package registry*. Many of these services provide free hosting for open-source projects.
9191

9292
Here are some popular hosting services for the package types we just described:
9393

@@ -105,9 +105,9 @@ Here are some popular hosting services for the package types we just described:
105105

106106
* [Docker Hub](https://hub.docker.com/?azure-portal=true)
107107

108-
Docker packages are called images, and contain complete, self-contained deployments. Most commonly, a Docker image represents a software component that can be hosted and executed by itself, without any dependencies on other images. Docker images are layered and might be dependent on other images.
108+
Docker packages are called images, and contain complete, self-contained deployments. Most commonly, a Docker image represents a software component that can be hosted and run by itself, without any dependencies on other images. Docker images are layered and might be dependent on other images.
109109

110-
A _package feed_ refers to your package repository server. This server can be on the internet or behind your firewall on your network. For example, you can [host your own NuGet feeds](/nuget/hosting-packages/overview?azure-portal=true) by using hosting products such as Azure Artifacts and MyGet. You can also host packages on a file share.
110+
A *package feed* refers to your package repository server. This server can be on the internet or behind your firewall on your network. For example, you can [host your own NuGet feeds](/nuget/hosting-packages/overview?azure-portal=true) by using hosting products such as Azure Artifacts and MyGet. You can also host packages on a file share.
111111

112112
When you host packages behind the firewall, you can include feeds to your own packages. You can also cache packages that you trust on your network when your systems can't connect to the internet.
113113

@@ -117,7 +117,7 @@ A good dependency management strategy depends on these three elements:
117117

118118
* **Standardization**.
119119

120-
Standardizing how you declare and resolve dependencies will help your automated release process remain repeatable and predictable.
120+
Standardize how you declare and resolve dependencies helps your automated release process remain repeatable and predictable.
121121

122122
* **Packaging formats and sources**.
123123

@@ -131,7 +131,7 @@ A good dependency management strategy depends on these three elements:
131131

132132
Many package feeds provide unrestricted access to packages. For example, you can download [Json.NET](https://www.nuget.org/packages/Newtonsoft.Json/?azure-portal=true) from nuget.org, without the need to sign in or authenticate.
133133

134-
Other package feeds require authentication. You can authenticate access to feeds in a few ways. For example, some kinds of feeds require a username and password. Other feeds require an _access token_, which is typically a long series of characters that identifies who you are and to what resources you have access. You can set access tokens to expire after a given time period.
134+
Other package feeds require authentication. You can authenticate access to feeds in a few ways. For example, some feeds require a username and password. Other feeds require an *access token*, which is typically a long series of characters that identifies who you are and to what resources you have access. You can set access tokens to expire after a given period.
135135

136136
## How are packages versioned?
137137

@@ -143,12 +143,12 @@ Semantic Versioning is a popular versioning scheme. Here's the format:
143143

144144
> **Major.Minor.Patch[-Suffix]**
145145
146-
Here is what each of these parameters means:
146+
Here's what each of these parameters means:
147147

148148
* A new **Major** version introduces breaking changes. Apps typically need to update how they use the package to work with a new major version.
149149
* A new **Minor** version introduces new features, but is backward-compatible with earlier versions.
150150
* A new **Patch** introduces backward-compatible bug fixes, but not new features.
151-
* The **-Suffix** part is optional and identifies the package as a pre-release version. For example, 1.0.0-beta1 might identify the package as the first beta prerelease build for the 1.0.0 release.
151+
* The **-Suffix** part is optional and identifies the package as a prerelease version. For example, 1.0.0-beta1 might identify the package as the first beta prerelease build for the 1.0.0 release.
152152

153153
When you reference a package, you do so by version number.
154154

@@ -160,9 +160,9 @@ Install-Package Newtonsoft.Json -Version 13.0.1
160160

161161
## What happens when the package changes?
162162

163-
When you reference a package from your app, you typically _pin_or specifythe version of that package you want to use.
163+
When you reference a package from your app, you typically *pin*, or specify, the version of that package you want to use.
164164

165-
Many frameworks let you specify allowable ranges of package versions to install. Some also allow you to specify wildcards, which we call a _floating version_.
165+
Many frameworks let you specify allowable ranges of package versions to install. Some also allow you to specify wildcards, which we call a *floating version*.
166166

167167
For example, in NuGet, version "1.0" means the first version that's equal to or greater than 1.0. "[1.0]" specifies to install version 1.0 only, and not a newer version.
168168

@@ -177,7 +177,7 @@ Here are a few other examples:
177177

178178
As each maintainer releases a new package version, you can evaluate what's changed and test your app against it. When you're ready, you can update the package's version number in your configuration and submit the change to your build pipeline.
179179

180-
Here's an example of how you might include the Newtonsoft.Json package in your C# application's project (.csproj) file. This example specifies version 13.0.1 of that package:
180+
Here's an example of how you might include the *Newtonsoft.Json* package in your C# application's project (*.csproj*) file. This example specifies version 13.0.1 of that package:
181181

182182
```xml
183183
<ItemGroup>

0 commit comments

Comments
 (0)