├── .gitignore
├── 0.md
├── 1.md
├── 2.md
├── 3.md
├── 4.md
├── 5.md
├── README.md
├── azure-pipelines.yml
├── conclusion.md
├── files
├── Business
│ └── Cost Insights.json
├── OWASP
│ ├── azure-pipelines.yml
│ └── dockerfile
├── SmartHotel
│ ├── SmartHotel360_Website-Deploy.json
│ ├── SmartHotel_Petchecker-Web.json
│ └── WhiteSourceBolt.json
└── SonarQubeContainers.yml
├── img
├── ARMOutputs-install.png
├── ARMOutputs-navigate.png
├── ARMOutputs-success.png
├── Add-OWASP-tasks-Report.png
├── Add-OWASP-tasks-navigate.png
├── Add-OWASP-tasks-search.png
├── Add-OWASP-tasks.png
├── AddArtifact.png
├── AllReposImported.png
├── Artifact-owasp-zap-vsts-extension.png
├── AzDevOpsAnalyticsViews-ApprovedBugs.png
├── AzDevOpsAnalyticsViews-addfield.png
├── AzDevOpsAnalyticsViews-history.png
├── AzDevOpsAnalyticsViews-newview.png
├── AzDevOpsAnalyticsViews.png
├── AzDevOpsBugBash.png
├── AzDevOpsOrgContinue.png
├── AzDevOpsOrgSignIn.png
├── AzDevOpsOrgStart.png
├── AzDevOpsPreviewFeatures-Activate.png
├── AzDevOpsPreviewFeatures.png
├── AzureCloudShell-ready.png
├── AzureCloudShell.png
├── AzureCloudShellBash-ready.png
├── AzureCostInsightsMarketplace.png
├── AzureDevOpsLab-Builds-01.png
├── AzureDevOpsLab-Builds-02.png
├── AzureDevOpsLab-Builds-03.png
├── AzureDevOpsLab-Builds-031.png
├── AzureDevOpsLab-Builds-04.png
├── AzureDevOpsLab-Builds-05.png
├── AzureDevOpsLab-Builds-Run-01.png
├── AzureDevOpsLab-Builds-Run-end.png
├── AzureDevOpsLab-Builds-WhiteSourceBolt-report.png
├── AzureDevOpsLab-Builds-WhiteSourceBolt.png
├── AzureDevOpsLab-Builds-trigger.png
├── AzureDevOpsLab-CreateProject-01.png
├── AzureDevOpsLab-CreateProject-02.png
├── AzureDevOpsLab-ImportRepo-CloneURL.png
├── AzureDevOpsLab-ImportRepo.png
├── AzureDevOpsLab-Releases-01.png
├── AzureDevOpsLab-Releases-02.png
├── AzureDevOpsLab-Releases-03.png
├── AzureDevOpsLab-Releases-04.png
├── AzureDevOpsLab-Releases-05.png
├── AzureDevOpsLab-Releases-06.png
├── AzureDevOpsLab-Releases-07.png
├── AzureDevOpsLab-Releases-08.png
├── AzureDevOpsLab-Releases-09.png
├── AzureDevOpsLab-Releases-10.png
├── AzureDevOpsLab-Releases-CheckOutput-1.png
├── AzureDevOpsLab-Releases-CheckOutput-deploytask.png
├── AzureDevOpsLab-Releases-CheckOutput-logs.png
├── AzureDevOpsLab-Releases-CheckOutput-site.png
├── AzureDevOpsLab-Releases-Edit.png
├── AzureDevOpsLab-Releases-Run-create.png
├── AzureDevOpsLab-Releases-Run-executing.png
├── AzureDevOpsLab-Releases-Run.png
├── AzureDevOpsLab-Releases-add.png
├── AzureDevOpsLab-Releases-delete.png
├── AzureDevOpsLab-Releases-trigger.png
├── AzureDevOpsLab-Repo-commit.png
├── AzureDevOpsLab-Repo-edit.png
├── AzureDevOpsLab-SignIn.png
├── AzureSubscriptionAvailable.png
├── AzureSubscriptionSelect.png
├── BuildListAfterImports.png
├── CloneRepo.png
├── CloudShellStorage.png
├── CloudShellStorageAdvanced.png
├── CommandLine.png
├── CostInsights-Import-Build.png
├── CostInsights-Import-finish.png
├── CostInsights-Import.png
├── CostInsights-configuration.png
├── CostInsights-resourcetype.png
├── CostInsights-run.png
├── CostInsights-subscription.png
├── Dashboard-AddWidget.png
├── Dashboard-SearchWidget.png
├── EmptyDevOpsOrg.png
├── Import-OWASP-repo-navigation.png
├── Import-OWASP-repo.png
├── LaunchMicrosoftTeams.png
├── NGINX-ZAP-Report.png
├── OWASP-Attach-Report-Navigate.png
├── OWASP-Attach-Report.png
├── OWASP-Repo-import.png
├── OWASP-build.png
├── OWASP-docker-pull.png
├── OWASP-finish.png
├── OWASP-pipeline-dragdrop.png
├── OWASP-pipeline.png
├── OwaspBuildConfirmCommit.png
├── PAT-token-create.png
├── PAT-token-navigate.png
├── PAT-token-security.png
├── PAT-token-variable.png
├── PAT-token.png
├── PBI-Desktop.png
├── PowerBI-AzDevOps-ApprovedBugs.png
├── PowerBI-AzDevOps-Login.png
├── PowerBI-AzDevOps-OrgDetails.png
├── PowerBI-AzDevOps-SignedIn.png
├── PowerBI-AzDevOps-getData.png
├── PowerBI-AzDevOps.png
├── PowerBI-MyWorkspace.png
├── PowerBI-fields.png
├── PowerBi-WorkItem-Count.png
├── Powershell-Download.png
├── PublishPowerBI-Workspace.png
├── RGName.png
├── ReleasePipeline_SetAgentPool.png
├── RemoveArtifact.png
├── SPNCreation.png
├── SSH-ZAP-test.png
├── SSH-service-connection.png
├── Save.png
├── ServiceConnectionConfig.png
├── ServiceConnectionFinish.png
├── ServiceConnections.png
├── SmartHotel-Add-SSH-Task.png
├── SmartHotel-Configure-SSH-Task-1.png
├── SmartHotel-DockerHost-AddServiceConnection.png
├── SmartHotel-DockerHost.png
├── SmartHotelRepoWaitToFinish.png
├── TeamAzDevOpsConfigEventType.png
├── TeamAzDevOpsConfigOK.png
├── TeamAzDevOpsConfigOrg.png
├── TeamAzDevOpsConnectorInstall.png
├── TeamCreateFromScratch.png
├── TeamsAddMembers.png
├── TeamsAddTab.png
├── TeamsAzDevOpsConfigFinish.png
├── TeamsAzDevOpsConnector.png
├── TeamsConfigure.png
├── TeamsConnector.png
├── TeamsCreateNewTeam.png
├── TeamsCreateTeam.png
├── TeamsDashboard.png
├── TeamsFinalconfig.png
├── TeamsPrivateTeam.png
├── TestQueueBuilds.png
├── VariablesUpdate.png
├── WhiteSourceBolt-freeaccount.png
├── WhiteSourceBolt-success.png
├── active-bugs-field-criteria.png
├── active-bugs-general.png
├── active-bugs-history.png
├── active-bugs-team.png
├── active-bugs-verify-success.png
├── active-bugs-verify.png
├── add_channel.png
├── add_kanbanboard.png
├── add_members.png
├── add_tab.png
├── add_website.png
├── add_website2.png
├── add_website3.png
├── addwidget.gif
├── azuredevops_activity.png
├── azuredevops_connector.png
├── azuredevops_tab.png
├── buildpipeline.png
├── card-active-bugs.png
├── channel_added.png
├── check-of-is-current.png
├── choose-count-distinct.png
├── choose-view.png
├── connector_configuration.png
├── connectors.png
├── conversation_files.png
├── conversations.png
├── create_channel.png
├── create_team.png
├── create_team2.png
├── create_team3.png
├── fields-common.png
├── filter-priority-1-and-2.png
├── filter-priority-legend.png
├── flow.png
├── get-data-2.png
├── install_connector.png
├── iscurrent.png
├── kanban_selectorg.png
├── kanban_selectorg2.png
├── kanbanboard_teams.png
├── launch_teams.png
├── manage_connector.png
├── nginx.png
├── onenote.png
├── open-analytics-views-vert.png
├── powerbi.png
├── publish-powerbi.png
├── screen2.png
├── select-date.png
├── select-line-chart-work-id.png
├── select_kanbanboard.png
├── specify-account.png
├── upload_files.png
├── wi-type-picker-bugs.png
├── wikiasweb.png
├── wikiasweb2.png
├── wikipage.png
├── workitems.png
└── workitems2.png
├── intro.md
└── whitelist_spellchecker.txt
/.gitignore:
--------------------------------------------------------------------------------
1 | ################################################################################
2 | # This .gitignore file was automatically created by Microsoft(R) Visual Studio.
3 | ################################################################################
4 |
5 | /imgs
6 |
--------------------------------------------------------------------------------
/0.md:
--------------------------------------------------------------------------------
1 |
2 | # Lab: Create Azure DevOps Project
3 |
4 | This lab will guide you through the initial setup of an Azure DevOps Project, providing a quicker, prebuilt setup.
5 |
6 | The first required step is to clone the public GitHub repository where the Lab is hosted.
7 | This will allow you to have access to several pre-prepared assets, necessary for the different Lab modules we'll be implementing.
8 |
9 | On the lab windows, press the *Windows* start menu and search for *x64_x86 Cross Tools Prompt for VS 2017*, launching it in *Administrator mode*.
10 |
11 | 
12 |
13 | Navigate to the root folder, by typing `cd\` and pressing *enter*. Then execute the following command:
14 |
15 | ```
16 | git clone https://github.com/devsecopsbiz/technical-lab.git
17 | ```
18 |
19 | And you will get all the content on the *C:\technical-lab* folder, as shown in the image:
20 |
21 | 
22 |
23 | ## Setup Azure DevOps Project
24 |
25 | > Use Azure DevOps Labs to create a preconfigured project and enrich it for a quick start.
26 |
27 | * Start by creating a new Project using a preselected Lab.
28 | For that, on your browser navigate to the following URL:
29 |
30 | ```
31 | https://azuredevopsdemogenerator.azurewebsites.net/?name=WhiteSource-Bolt&templateid=77362
32 | ```
33 |
34 | 1. Navigate to the Azure DevOps Demo Generator and *Sign In* with the credentials you've used to create the Azure DevOps Organization, and then press the **Accept** button to proceed.
35 |
36 | 
37 |
38 | 2. Select your Organization from the dropdown, fill in the *Project Name* with a name of your choice.
39 |
40 | Check the check-box allowing *WhiteSource Bolt* to be installed and then press *Create Project*:
41 |
42 | 
43 |
44 | 3. Wait for a few seconds for the project to create and then *Navigate* to it:
45 |
46 | 
47 |
48 | * Install additional extensions from the Marketplace:
49 |
50 | 1. Navigate to `https://marketplace.visualstudio.com/items?itemName=keesschollaart.arm-outputs`, selecting the *Get it free* button.
51 |
52 | 
53 |
54 | 2. Now, select the recently created Azure DevOps Organization on the dropdown, and press *Install*.
55 |
56 | 
57 |
58 | 3. After a few seconds you should see a success message. Now, select the *Proceed to organization*.
59 |
60 | 
61 |
62 | 4. Navigate to `https://marketplace.visualstudio.com/items?itemName=keesschollaart.AzureCostInsights`, selecting the *Get it free* button.
63 |
64 | 
65 |
66 | 5. As for the previous extension, select the recently created Azure DevOps Organization on the dropdown, and press *Install*.
67 |
68 | 6. After a few seconds you should see a success message. Select the *Proceed to organization*.
69 |
70 | 7. Now, select the project you've just created, by pressing its name.
71 |
72 |
73 | * Create a free account for *WhiteSource Bolt*
74 |
75 | 1. Navigate to *WhiteSource Bolt* under *Pipelines -> WhiteSource Bolt*.
76 |
77 | 2. Fill in your details to create a free account.
78 |
79 | 
80 |
81 | 3. After a few seconds, we're good to go!
82 |
83 | 
84 |
85 | * Import additional Git repositories, required for the labs:
86 |
87 | 1. Navigate to *Repos* and on the upper repositories drop down, select *Import repository*:
88 |
89 | 
90 |
91 | 2. Fill in the *Clone URL* with `https://github.com/devsecopsbiz/SmartHotel360-Website`
92 | and press *Import*:
93 |
94 | 
95 |
96 | Wait for a couple of seconds for it to finish.
97 |
98 | 
99 |
100 | 3. Select *Import repository* again, now filling with `https://github.com/devsecopsbiz/owasp-zap-vsts-extension`
101 | and press *Import*.
102 |
103 | 
104 |
105 | 4. You should now see the complete list of repositories available, has shown in the following image:
106 |
107 | 
108 |
109 |
110 | *********
111 |
--------------------------------------------------------------------------------
/1.md:
--------------------------------------------------------------------------------
1 |
2 | # Lab: Azure DevOps CI/CD
3 |
4 | This lab will guide you through building Continuous Integration (CI) and Continuous Deployment (CD) pipelines with Azure DevOps. The build pipeline will make use of a Java application, built with Maven, but also a .NET Core and Azure Functions App.
5 | For the release pipeline we'll be leveraging ARM templates and Azure App Services to host our application.
6 |
7 | ## Create Build Pipeline
8 |
9 | * Navigate to *Pipelines*, *Builds*.
10 |
11 | 
12 |
13 | ### WhiteSource Bolt Build
14 | 1. Here you should see an existing build definition name *WhiteSourceBolt*.
15 | Under *New*, select *Import a pipeline* to import a precooked pipeline to build the recently imported SmartHotel repository:
16 |
17 | 
18 |
19 | 2. Drag and drop the `SmartHotel_Petchecker-Web.json` file, located on the Lab repository under *~/files/SmartHotel/*, or Browse for the same file. Then, press *Import* to start the import process:
20 |
21 | 
22 |
23 | ```
24 | Change the Name, removing the "-import" portion of it.
25 | The final name should be "SmartHotel_Petchecker-Web", as shown in the image:
26 | ```
27 |
28 | 
29 |
30 | 3. Select the **Hosted VS2017** Agent pool:
31 |
32 | 
33 |
34 | 4. Now select the *Source Repository* `SmartHotel360-Website`, by pressing *Get sources*, *Azure Repos Git* and selecting the correct repository on the *Repository* dropdown:
35 |
36 | 
37 |
38 | 5. To finish, enable the *Continuous integration* trigger by navigating to *Triggers* and selecting *Enable continuous integration*:
39 |
40 | 
41 |
42 | Save by pressing the **Save** button, confirming the save on the popup (no need to change anything on the *Select folder* or add a Comment):
43 |
44 | 
45 |
46 | ### OWASP Build
47 |
48 | Now we'll be using an alternative way to setup our CI build, leveraging a YAML file.
49 |
50 | Navigate to the *owasp-zap-vsts-extension* repository, and drag and drop the **azure-pipelines.yml** file, located on the Lab contents you've downloaded, under *~/files/OWASP*, into the repository.
51 |
52 | 
53 |
54 | Click on the **Commit** button to confirm.
55 |
56 | 
57 |
58 | You should end up with the following contents:
59 |
60 | 
61 |
62 | This will generate an additional build pipeline, now available together with the remaining ones.
63 | Navigate back to *Pipelines*, *Builds* to double check:
64 |
65 | 
66 |
67 |
68 | ## Create Release Pipeline
69 |
70 | * Under *Pipelines*, navigate to *Releases* and press **New pipeline**
71 |
72 | 
73 |
74 | 1. We first need to create a dummy, empty, Release pipeline in order for the *Import* to become available.
75 | Let's do this by pressing *New pipeline*, *Empty job* and **Save**:
76 |
77 | 
78 |
79 | 
80 |
81 | 2. Navigate back to *All pipelines* and select **Import release pipeline**:
82 |
83 | 
84 |
85 | 3. Drag and drop, or navigate as before, to select the **SmartHotel360_Website-Deploy.json** file:
86 |
87 | 
88 |
89 | 4. Press *OK* to start the import process. You should now have a release pipeline like this:
90 |
91 | 
92 |
93 | 5. Navigate to the Stage tasks:
94 |
95 | 
96 |
97 | 6. Select the *Agent job*, and set the *Agent pool* to **Hosted**
98 |
99 | 
100 |
101 | 7. Select the first task and, under *Azure Subscription*, select the **Manage** button.
102 | It will redirect you to a page were we'll be configuring access to the Resource Group from our Azure Subscription.
103 |
104 | 
105 |
106 | Under `New service connection`, select `Azure Resource Manager`:
107 |
108 | 
109 |
110 | Select the available *resource group* from the dropdown, give the service connection a name and press OK.
111 |
112 | > Important: Save the Resource Group name for later use (copy to notepad for example).
113 |
114 | 
115 |
116 | You should then see a new Service connection appear:
117 |
118 | 
119 |
120 |
121 | 8. Going back to the *release pipeline* (should be on a previous tab on the browser), the dropdown should now show you the brand new *Service connection*.
122 |
123 | Select it.
124 | > If it hasn't loaded, press the refresh button on the right and then open the dropdown again.
125 |
126 | 
127 |
128 |
129 | Step in each one of the tasks with error, selecting and authorizing an Azure Subscription to use in the lab.
130 |
131 | > For the *ARM Outputs* task in particular, it's also required to specify the *Azure Connection Type* as **Azure Resource Manager**
132 |
133 | 9. Navigate to *Variables* and update the values.
134 |
135 | **location:** West US
136 |
137 | **ResourceGroup:**
138 |
139 | 
140 |
141 | 10. Remove the existing *Artifact* by navigating back to the *Pipeline* tab, selecting the Artifact, and pressing *Delete*.
142 |
143 | 
144 |
145 | 11. Now, add the **SmartHotel_Petchecker-Web** build artifact. This will make sure we're using the artifact coming from the build we've created before.
146 |
147 | > Important: set the *Source alias* to `SmartHotel Petchecker Web`
148 |
149 | 
150 |
151 | 12. To finish, enable the Continuous Deployment trigger
152 |
153 | 
154 |
155 | 13. Press the **Save** button, confirming with the **OK** button.
156 | > Important: Set the release pipeline name to **SmartHotel360_Website-Deploy**
157 |
158 |
159 | #### Run a test build
160 |
161 | 1. In Azure DevOps, click on Builds and, for each build, select it and press the "Queue" button on the right upper corner.
162 |
163 | 
164 |
165 | 2. Monitor the build logs, by double clicking the running build, and wait for it to complete
166 |
167 | 
168 |
169 | 3. The release will be triggered automatically when the build is complete (be patient, this can take some time). Review the results as it completes.
170 |
171 | 
172 |
173 | 4. Navigate to the release logs and check the details regarding the last step, **Echo Website Name**.
174 |
175 | 
176 |
177 | Here you should see the website URL. Press and click on the URL to navigate to it.
178 |
179 | 
180 |
181 | The website we've just deployed looks like :
182 |
183 | 
184 |
185 |
186 | 7. Now kick-off the full CI/CD pipeline by making an edit to the code in the Azure DevOps code repository.
187 | Navigate back to *Repos*, *SmartHotel360-Website* repository, select **appsettings.Development.json** and press *Edit*
188 |
189 | 
190 |
191 | 8. Change the *Name* property value to something you want, and *Commit* the change after it
192 |
193 | 
194 |
195 |
196 | *********
197 |
--------------------------------------------------------------------------------
/2.md:
--------------------------------------------------------------------------------
1 |
2 | # Lab: Security
3 |
4 | This lab will guide you through adding some Security validations into our pipelines, detecting and fixing security vulnerabilities, but also problematic open source licenses.
5 |
6 | ## Review WhiteSource Bolt task configurations on Build
7 |
8 | *WhiteSource Bolt for Azure DevOps* is a free extension, which scans all your projects and detects open source components, their license and known vulnerabilities.
9 |
10 | It covers over 200 programming languages support and continuous tracking of multiple open source vulnerabilities databases like the NVD, security advisories, peer-reviewed vulnerability databases, and popular open source projects issue trackers.
11 |
12 | ### Let's start adding it to our pipelines
13 |
14 | 1. In Azure DevOps, click on "Pipelines" on the left menu and then click "Builds"
15 |
16 | 2. Select the *SmartHotel_Petchecker-Web* and *WhiteSourceBolt* build pipelines, clicking the "Edit" button for each, and select the **WhiteSource Bolt** task. Review it.
17 |
18 | 
19 |
20 | 3. Now navigate to *Pipelines*, *WhiteSource Bolt* on the left and explore the generated reports
21 |
22 | 
23 |
24 |
25 | ## Add OWASP ZAP penetration testing tool to the Release pipeline
26 |
27 | OWASP is a worldwide not-for-profit organization dedicated to helping improve the quality of software. ZAP is a free penetration testing tool for beginners to professionals. ZAP includes an API and a weekly docker container image that can be integrated into your deployment process
28 |
29 | ### Let's start adding it to our pipelines
30 |
31 | 1. Start by setting up a Docker host for later use:
32 |
33 | ## Deploy a template with the Azure Docker VM extension
34 | Let's use an existing quickstart template to create an Ubuntu VM that uses the Azure Docker VM extension to install and configure the Docker host.
35 |
36 | You need to login onto the Azure Portal (`https://portal.azure.com`), and access the Cloud Shell, setting it up to *Bash*.
37 |
38 | 
39 |
40 | Since we're using brand new Subscriptions, we need to create a storage to support Cloud Shell.
41 |
42 | Press **Show advanced settings** and fill in **Storage account** and **File share** before hitting the **Create storage** button.
43 |
44 | 
45 |
46 | 
47 |
48 | After a few seconds you should see something like:
49 |
50 | 
51 |
52 | Cloud Shell already provides us the latest Azure CLI, allowing us to execute the following commands.
53 |
54 | First, grab the resource group name (*name* property) already created for the lab. Paste it on notepad for example.
55 |
56 | ```azurecli
57 | az group list
58 | ```
59 |
60 | 
61 |
62 | Next, deploy a VM with that includes the Azure Docker VM extension from an Azure Resource Manager template from GitHub.
63 |
64 | On the bash cloud shell, run the following command providing, when prompted, your own unique values for *adminUsername*, *adminPassword*, and *dnsNameForPublicIP*.
65 |
66 | > Replace the name of the resource group with the one you got previously.
67 | > And *dnsNameForPublicIP* will be your public VM name and must be unique.
68 |
69 | Command to execute:
70 |
71 | ```azurecli
72 | az group deployment create --resource-group --template-uri https://raw.githubusercontent.com/devsecopsbiz/azure-quickstart-templates/f99d00825b32577a5321f4e91ca07e0f914c3aa6/docker-simple-on-ubuntu/azuredeploy.json
73 | ```
74 |
75 |
76 | It takes a few minutes for the deployment to finish.
77 |
78 |
79 | ## Deploy your first NGINX container
80 | To view details of your VM, including the DNS name, use *az vm show*:
81 |
82 | > Replace the name of the resource group with the one you got previously
83 |
84 | ```azurecli
85 | az vm show --resource-group --name myDockerVM --show-details --query [fqdns] --output tsv
86 | ```
87 |
88 | SSH to your new Docker host. **Provide your own** username and DNS name from the preceding steps:
89 |
90 | ```
91 | ssh @
92 | ```
93 |
94 | Once logged in to the Docker host, let's run an NGINX container:
95 |
96 | ```
97 | sudo docker run -d -p 80:80 nginx
98 | ```
99 |
100 | The output is similar to the following example as the NGINX image is downloaded and a container started:
101 |
102 | ```
103 | Unable to find image 'nginx:latest' locally
104 | latest: Pulling from library/nginx
105 | efd26ecc9548: Pull complete
106 | a3ed95caeb02: Pull complete
107 | a48df1751a97: Pull complete
108 | 8ddc2d7beb91: Pull complete
109 | Digest: sha256:2ca2638e55319b7bc0c7d028209ea69b1368e95b01383e66dfe7e4f43780926d
110 | Status: Downloaded newer image for nginx:latest
111 | b6ed109fb743a762ff21a4606dd38d3e5d35aff43fa7f12e8d4ed1d920b0cd74
112 | ```
113 |
114 | Check the status of the containers running on your Docker host as follows:
115 |
116 | ```
117 | sudo docker ps
118 | ```
119 |
120 | The output is similar to the following example, showing that the NGINX container is running and TCP ports 80 and 443 and being forwarded:
121 |
122 | ```
123 | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
124 | b6ed109fb743 nginx "nginx -g 'daemon off" About a minute ago Up About a minute 0.0.0.0:80->80/tcp, 443/tcp adoring_payne
125 | ```
126 |
127 | To see your container in action, open up a web browser and enter the DNS name of your Docker host:
128 |
129 | 
130 |
131 |
132 | 2. Before proceeding any further, let's run a OWASP ZED Attack Proxy against our published website.
133 |
134 | > Note: Replace the website URI with the one you've deployed earlier. e.g. *https://smarthotel360lcu4bmxi7kl4w.azurewebsites.net*
135 |
136 | ```
137 | docker run -v $(pwd):/zap/wrk/:rw -t owasp/zap2docker-weekly zap-baseline.py -t -g gen.conf -r testreport.html
138 | ```
139 | Docker image will be pulled and the container will be then executed.
140 |
141 | 
142 |
143 | When if finishes you should see a summary like this
144 |
145 | 
146 |
147 |
148 | 3. Navigate back to your Azure DevOps Project and let's grab a personal access token (PAT) we'll be needing later on.
149 | > Save that PAT token, it can't be retrieved later
150 |
151 | 3.1 Navigate to the user profile and select *Security*
152 |
153 | 
154 |
155 | 3.2 Select *Personal access token*
156 |
157 | 
158 |
159 | 3.3 Create a new personal access token
160 |
161 | 
162 |
163 | 3.4 Copy the token, making sure you don't lose it.
164 |
165 | 
166 |
167 | 4. On your Azure DevOps project, navigate to *Pipelines*, *Releases* *SmartHotel360_Website-Deploy*, and press the **Edit** button.
168 |
169 | Then, under *Variables*, add a new variable setting:
170 |
171 | **Name:** PAT
172 |
173 | **Value:**
174 |
175 | **Secret:** press the locker button, making it a secret, hiding the contents
176 |
177 | You should get the following configuration:
178 |
179 | 
180 |
181 | Save the release pipeline.
182 |
183 |
184 | 4. Let's get back to the Release pipeline and add some extra tasks to launch the ZAP test and grab the results.
185 | Start by adding two **SSH** tasks, one for running the tests and another for publishing the test report to a public website.
186 |
187 | Under `Pipeline`, add a new Artifact, from the *owasp-zap-vsts-extension* build, as shown in the following image:
188 |
189 | 
190 |
191 | > Important: make sure your *Source alias* for this artifact is **_owasp-zap-vsts-extension**
192 |
193 | Now, *view stage tasks*:
194 |
195 | 
196 |
197 | 4.1. Before going further we need to configure the SSH service connection to the provisioned Docker machine.
198 | Press the *Manage* button, *New service connection*, *SSH*, and fill in the following details, replacing *Host name*, *User name* and *Password* with your own details, specified on the previous steps of this lab.
199 |
200 | 
201 |
202 | Press *OK* and go back to the previous tab, on the release pipeline. Refresh the *SSH service connection* drop down and select the fresh new connection.
203 |
204 | 4.2. For the first `SSH` task, we need to specify the command to run and check the `Continue on error` option. This is required due to possible failing tests, that we don't want to prevent the deployment to proceed.
205 |
206 | 
207 |
208 | > Tip: Rename `Display name` to make it clearer to understand what is going on here.
209 |
210 | Change the URI with the value of your own website, published on the previous Labs, and copy the updated command:
211 |
212 | ```
213 | docker run -v $(pwd):/zap/wrk/:rw -t owasp/zap2docker-weekly zap-baseline.py -t $(SmartHotelWebsiteURL) -g gen.conf -r $(Release.DefinitionName)_$(Release.ReleaseName)_OwaspZapReport.html
214 | ```
215 |
216 | 4.3. On the second `SSH` task insert the following command:
217 |
218 | ```
219 | docker stop $(docker ps -a -q)
220 | docker run -v $(pwd):/usr/share/nginx/html -d -p 80:80 nginx
221 | ```
222 |
223 | This will copy the generated test report to the NGINX container, making it publicly available.
224 | Rename the *Display name* as suggested before, making it clearer to understand in the future.
225 |
226 | 4.4. Next we'll be adding a *Powershell* task to download the generated test report and pass into the release pipeline.
227 |
228 | Add the following command to download the file, changing the *URI* on both commands.
229 |
230 | ```
231 | Invoke-WebRequest -Uri "http://..cloudapp.azure.com/$(Release.DefinitionName)_$(Release.ReleaseName)_OwaspZapReport.html" -OutFile "$(System.DefaultWorkingDirectory)\OwaspZapReport.html"
232 | ```
233 |
234 | 
235 |
236 | 4.5. To finish, add a *Command Line* task, were we'll be executing the **owasp-zap-vsts-tool.exe** to attach the report into Azure DevOps.
237 |
238 | 
239 |
240 | 5. Paste this command on the *Script* text box as seen in the image, adapting the URI on the Echo command.
241 |
242 | ```
243 | $(System.DefaultWorkingDirectory)/_owasp-zap-vsts-extension/drop/owasp-zap-vsts-tool/bin/Release/owasp-zap-vsts-tool.exe attachreport collectionUri="$(System.TeamFoundationCollectionUri)" teamProjectName="$(System.TeamProject)" releaseUri=$(Release.ReleaseUri) releaseEnvironmentUri=$(Release.EnvironmentUri) filepath=$(System.DefaultWorkingDirectory)\OwaspZapReport.html personalAccessToken=$(PAT)
244 |
245 | echo "http://..cloudapp.azure.com/$(Release.DefinitionName)_$(Release.ReleaseName)_OwaspZapReport.html"
246 | ```
247 |
248 | 
249 |
250 | 6. To finish the Security Lab, run the release pipeline and, when it has finished, navigate to your website made available using NGINX.
251 | You can check the URI by navigating to the *Attach Report* task log:
252 |
253 | 
254 |
255 | You should see something like:
256 |
257 | 
258 |
--------------------------------------------------------------------------------
/3.md:
--------------------------------------------------------------------------------
1 |
2 | # Lab: Azure DevOps Business
3 |
4 | This workshop will guide you through the process of creating and configuring a set of specialized dashboards, each with a different scope that can be used by distinct team members and stakeholders.
5 |
6 | ## Azure Cost Insights
7 |
8 | It's easy to get your Azure Costs out of control. _Wouldn't it be great to get insights of your infrastructure spending in your daily routine?_
9 |
10 | Costs are a concern of everyone, developers, product owners and operations.
11 | They come together in Azure DevOps, so why not show these insights there?
12 |
13 | *Azure Cost Insights* is a widget that you can add on your Azure DevOps Dashboard.
14 |
15 | This widget is built with the belief that cost insights need to be scoped to your costs.
16 |
17 |
18 | ### Getting started
19 |
20 | You need to create an Azure Pipeline for the widget to work. This pipeline is going to download and host your cost-data, used by the widget.
21 |
22 | 
23 |
24 | 1. **Create the build pipeline**
25 |
26 | Navigate to *Pipelines*, *Builds* and *Import a pipeline*.
27 |
28 | 
29 |
30 | Drag and drop the **Cost Insights.json** file, located on the Lab repository under *~/files/Business/*, or Browse for the same file. Then, press *Import* to start the import process:
31 |
32 | 
33 |
34 | After importing, configure the missing settings as following:
35 |
36 | 
37 |
38 | **Pipeline** -> **Agent pool**: Hosted VS2017
39 |
40 | **Get sources** -> **Repository**: SmartHotel360-Website
41 |
42 | **Download cost data** -> **Azure RM Subscription**: `Azure subscription being used in the lab`
43 |
44 | When you're finished, your pipeline will look like this:
45 |
46 | 
47 |
48 | 2. **Queue the build** and wait for it to finish
49 |
50 | 
51 |
52 | 3. **Add the Widget to your Dashboard**
53 | - Go to your teams' dashboard and add a 'Azure Cost Insights' widget.
54 |
55 | Navigate back to *Overview*, *Dashboards* and press the **Add a widget** button.
56 |
57 | 
58 |
59 | Then, search for the **Azure Cost Insights** widget and press the **Add** button.
60 |
61 | 
62 |
63 | Configure it by selecting the build we've just created, grouping by *Resource Type* as shown in the image:
64 |
65 | 
66 |
67 | Now add another 'Azure Cost Insights' and configure it as shown below:
68 |
69 | 
70 |
71 | ## Examples
72 |
73 | 
74 |
--------------------------------------------------------------------------------
/4.md:
--------------------------------------------------------------------------------
1 |
2 | # Lab: Connect Azure DevOps to Power BI
3 |
4 | Now we're going to explore one of the many possibilities to reach out to key stakeholders like Business are.
5 |
6 | We'll start by creating a custom Analytics view for approved bugs and then generate a Power BI report based on that view. You'll learn how to filter the Analytics view, create a trend chart, as well as a card showing the current count of approved bugs.
7 |
8 | Using Power BI connected to Analytics views, you can create reports on your work items. Reports can show your current work data and also historical revisions of the work items.
9 |
10 | ## Create a view to only include Approved bugs
11 |
12 | Under **Overview**, navigate to **Analytics view**, choose **New View** to create a custom view. Fill out the forms provided in each tab as shown in the steps below.
13 |
14 | 
15 |
16 | -------------
17 |
18 | > If you don't see "Analytics views" available, navigate to your user details and select "Preview features".
19 | Then, activate the "Analytics views" preview flag.
20 |
21 | 
22 |
23 | 
24 |
25 | -------------
26 |
27 | Choose **Continue** to move to the next tab in the panel. If you need to revisit a tab, simply click the tab title.
28 |
29 | ### Name your view and set to Private
30 |
31 | 1. Give your view a name, such as *Approved bugs*. Select **Private view** to save it under **My Views**. Otherwise, you can select **Shared view** to save it under **Shared Views**.
32 |
33 | 
34 |
35 | Choose **Continue** to move to the next tab.
36 |
37 | 2. From the **Work items** tab, select the Project and Team that contain the data you want to report on.
38 |
39 | Here we choose the *MsReadyLab* project and the *MsReadyLab Team*.
40 |
41 | 
42 |
43 | To add additional projects or teams, click *Add row icon* to add a new row and then select the project and team.
44 |
45 |
46 | 3. Under **Backlogs and work items**, add a new row, and then select **Bug** from the list of work items types.
47 |
48 | 
49 |
50 | 4. Under **Field criteria**, choose the **State** field set to **Approved**.
51 |
52 | 
53 |
54 | Choose **Continue** to move to the next tab.
55 |
56 | 5. In the next tab, **Fields**, keep the existing fields and include an additional field by pressing the "Add" button. Select the **Priority** field.
57 |
58 | 
59 |
60 | Choose **Continue** to move to the next tab.
61 |
62 | 6. In the **History** tab, select **Rolling period in days** and enter **60** days. Keep the **Granularity** set to **Daily**. These selections will generate 60 snapshot rows of data for each approved bug. Each day will include all the details of that work item as it was at the end of that day.
63 |
64 | 
65 |
66 | Choose **Continue** to move to the next tab.
67 |
68 | 7. On the last tab, **Verification**, click **Verify view**. The system will verify your view by running a test query against the data set it defines and validate all your filter criteria.
69 |
70 | 
71 |
72 | > Verification time will vary based on the amount of data defined in your view. Verify your view to make sure all the definitions are correct.
73 |
74 | Once your view successfully verifies, choose **Save**. You can then start using it in Power BI. Verification also returns an estimate of the number of rows in the dataset and the time it will take to load in Power BI.
75 |
76 | 
77 |
78 | If your view fails to verify successfully, you'll get an error explaining the issue and pointing to a possible fix. Try changing the options you selected in the **Work Items** and **History** tabs to include less data, and then verify the view again.
79 |
80 | ## Open Power BI desktop and load your view
81 |
82 | Now we just need to connect our brand new Analytics view to Power BI, and we'll start doing that by opening Power BI Desktop.
83 |
84 | 1. Using the Windows search bar, search for **Power BI Desktop** and open it.
85 |
86 | 
87 |
88 | 2. Now, choose **Get Data**, choose **More**, then **Azure DevOps (Beta)**, and then click **Connect**.
89 |
90 | 
91 |
92 | 
93 |
94 | 3. Enter your organization name, the same Azure DevOps name you used to create the Approved Bugs view, and the same project for which you defined the Approved Bugs view.
95 |
96 | 
97 |
98 | Login with the lab credentials.
99 |
100 | 
101 |
102 | And confirm if you're signed in. You should see a message like:
103 |
104 | 
105 |
106 | 4. Expand the **Private Views** folder, choose the **Approved Bugs** view you saved in the previous section, and then click **Load**.
107 |
108 | 
109 |
110 | ## Create a daily bug trend report
111 |
112 | After having imported data from our Azure DevOps Analytics view, we'll be briefly exploring how to create a Power BI report.
113 |
114 | 1. In your report, (1) select the Line chart visual, (2) enter `work item id` in the search field, and then (3) check the box for **Work Item Id**.
115 |
116 | 
117 |
118 | 2. Click the context menu icon next to the **Work Item Id** field and change it from **Count** to **Count (Distinct)**.
119 |
120 | 
121 |
122 | 3. Next, select the **Date** field in the fields list as your axis. To see a daily trend, click the context menu icon next to the field and change it from **Date Hierarchy** to **Date**.
123 |
124 | 
125 |
126 | To view trends over time, you want to use **Date** and not **Date Hierarchy**. The **Date Hierarchy** in Power BI rolls ups everything into a simple number for the period. The day level in the hierarchy rolls all days to a number between 1-31. For example, April 3 and May 3 both roll up into number 3. This is not the same as counting items per actual date.
127 |
128 | ## Filter your trend by Priority
129 |
130 | 1. To group your bugs by `Priority`, search for the field in the list (a). Drag the Priority field into the `Legend` of your trend chart (b)
131 |
132 | 
133 |
134 | 2. The chart now shows a daily distinct count of bugs, grouped by Priority.
135 |
136 | 3. To just show only Priority 0 and 1 bugs, click the context menu icon next to the **Priority** field to set the filters.
137 |
138 | 
139 |
140 | The trend chart is now grouped and filtered by high priority bugs.
141 |
142 | You should now have a configuration like:
143 |
144 | 
145 |
146 |
147 | ## Create a card for latest bug count
148 |
149 | 1. Add a new page by clicking the plus sign (+) at the bottom of the page.
150 |
151 | 2. Select the card visual, add the **Work Item Id** field, add the **Work Item Type** field, and click the context menu icon next to the field and change it from **Count** to **Count (Distinct)**.
152 |
153 | The card now shows the number of active bugs times the number of days they existed within the selected time period. For this example, that number is 1066.
154 |
155 | 
156 |
157 | 3. To get the latest count, add **Is Current** as a page level filter, and select the True checkbox. The **Is Current** field is added automatically to all data sets, marking the rows that contain the latest revision of the work items.
158 |
159 | 
160 |
161 | The value on this card should match the count on the last day of the trend chart, which you can obtain by returning to Page 1 and hovering over the last day as shown.
162 |
163 | 
164 |
165 | ## Save your report, optionally share with others
166 |
167 | 1. Choose **File > Save As** to save your report to your local workspace.
168 |
169 | 2. To publish your report to Power BI, choose the **Publish** tab.
170 |
171 | 
172 |
173 | Select your Power BI workspace as the destination and press the Publish button.
174 |
175 | 
176 |
177 | After seeing the success message, navigate to your Workspace to check the report.
178 |
179 | 
180 |
181 |
182 | ## Continue to explore your data
183 |
184 | Analytics views provide you with a great deal of power and flexibility to filter your data and generate useful reports quickly and easily using Power BI. Within a custom view, you can create data sets that span multiple teams or projects.
185 |
186 | *************
187 |
--------------------------------------------------------------------------------
/5.md:
--------------------------------------------------------------------------------
1 |
2 | # Lab: Increase communication with Microsoft Teams
3 |
4 | 1. Launch **Microsoft Teams** by searching for it using the Windows search:
5 |
6 | 
7 |
8 | 1. After launching the application, on the left side of **Teams**, click **Teams**, and then at the bottom of the teams list, click **Join or create a team**. A team is a collection of people who gather together around a common goal.
9 |
10 | 
11 |
12 | 1. In the **Join or create team** window select **Create a new team**.
13 |
14 | 
15 |
16 | 1. Select the **Build a team from scratch** option
17 |
18 | 
19 |
20 | 1. Set it to **Private**
21 |
22 | 
23 |
24 | 1. Give your team a name and press **Create**
25 |
26 | 
27 |
28 | 1. Add members for your team in order to get notified the events that occur and also start conversations with your team members.
29 |
30 | 
31 |
32 |
33 | ## Integrating Microsoft Teams with Azure DevOps Services
34 |
35 | **Azure DevOps** integration with Microsoft Teams provides a comprehensive chat and collaborative experience across the development cycle. Teams can easily stay informed of important activities in your Azure DevOps team projects with notifications and alerts on work items, pull requests, code commits, build and release.
36 |
37 | 1. On the recently created Team, click the ellipsis or **'...'** at the top navigation of your team channel, and then select **Connectors**.
38 |
39 | 
40 |
41 | 1. Select **Azure DevOps** connector from the list and click **Add**.
42 |
43 | 
44 |
45 | 1. Click **Install** to add the connector for your team.
46 |
47 | 
48 |
49 | 1. Select your organization (you may be prompted to sign in first), the project, and your team. Choose the type of activity you want to be notified about. Depending on the event, you may be given further fields to filter down the notifications so you can filter out notifications your team does not care about. For example, for work item events, you can filter by area path, work item type, and even particular field changes.
50 |
51 | 
52 | 
53 |
54 | When you are happy with the configuration, **Save** it.
55 |
56 | 1. Since Azure DevOps is configured now, activity from your Azure DevOps Services project will start appearing in your Teams channel.
57 |
58 | 
59 |
60 | 1. If you want to make a change to an existing connector, navigate to the **Configured** tab on the **Connector** dialog, find the connector, and click **Manage**.
61 |
62 | 
63 |
64 | ## Azure DevOps Kanban board & Dashboards in Teams
65 |
66 | Your Kanban board turns your backlog into an interactive signboard, providing a visual flow of work. As work progresses from idea to completion, you update the items on the board. Each column represents a work stage, and each card represents a user story (blue cards) or a bug (red cards) at that stage of work.
67 |
68 | You can bring in your teams kanban board or favorite dashboard directly into Microsoft Teams.
69 | These can be added using Tabs. **Tabs** allow team members to access your service on a dedicated canvas, within a channel or in user's personal app space. You can leverage your existing web app to create a great tab experience within Teams.
70 |
71 | 1. To bring your Kanban board or Dashboard into Microsoft Teams, click the **+** icon to add new tab. Find the Azure DevOps icon and select **Azure DevOps**
72 |
73 | 
74 |
75 | 
76 |
77 |
78 | 1. Select the Organization
79 |
80 | 
81 |
82 | 
83 |
84 | 1. Once you have authenticated and selected your organization, you will be displayed a screen to select a **Kanban board** or **Dashboard**.
85 |
86 | 
87 |
88 | Select the **Kanban board** and select your project, team, backlog level. **Save** the configuration.
89 |
90 | 1. Now you can see the **Kanban Board** appearing in the tab.
91 |
92 | 
93 |
94 | All the work can be monitored during the daily stand ups and the updates are real when the work items states are changed. It also allows us to customize the Kanban Board from within the Teams and synced.
95 |
96 | 1. Now let's add a new **Tab**, but now selecting a Dashboard instead of a Kanban board.
97 | Repeat steps 1) and 2), and then select **Add a Dashboard**
98 |
99 | 
100 |
101 | You should have this final configuration, with two extra tabs, one containing a Dashboard and another with a Kanban board.
102 |
103 | 
104 |
105 | *****************
106 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | **Welcome to Dev*Ops: Hands on DevSecOps and DevOpsBiz cookbook!**
2 |
3 | DevOps has been propagating throughout the world as the place to be in order to be Agile and successful.
4 | As maturity sets in, new challenges start to come up, namely the security role and the integration with the business teams.
5 | As such, buzz words like _DevSecOps_ and even _DevSecOpsBiz_ are becoming more popular in discussions.
6 |
7 | Ready to start our journey? [Let's go](https://github.com/devsecopsbiz/cookbook/blob/master/intro.md) !
8 |
--------------------------------------------------------------------------------
/azure-pipelines.yml:
--------------------------------------------------------------------------------
1 | resources:
2 | - repo: self
3 |
4 | pool:
5 | name: Hosted VS2017
6 |
7 | steps:
8 | - task: ottostreifel.spellcheck-task.spellcheck.spellcheck@2
9 | displayName: 'Spellcheck **/*.md'
10 | inputs:
11 | files: '**/*.md'
12 | whitelistedWords: 'whitelist_spellchecker.txt'
13 |
14 |
--------------------------------------------------------------------------------
/conclusion.md:
--------------------------------------------------------------------------------
1 | [](https://dev.azure.com/DevStarOpsSandbox/devsecopsbiz-session/_build/latest?definitionId=12&branchName=master)
2 |
3 | # Microsoft Ready, July 2019
4 | ## R-AIST307-P1: Dev*Ops: Hands on DevSecOps and DevOpsBiz cookbook
5 |
6 | **THE END**
7 |
8 | Hope you've enjoyed this cookbook and find it useful for future.
9 |
10 | Feel free to contribute and make this an awesome content!
11 |
12 |
13 | ## Thank you !
14 |
--------------------------------------------------------------------------------
/files/Business/Cost Insights.json:
--------------------------------------------------------------------------------
1 | {"options":[{"enabled":false,"definition":{"id":"5d58cc01-7c75-450c-be18-a388ddb129ec"},"inputs":{"branchFilters":"[\"+refs/heads/*\"]","additionalFields":"{}"}},{"enabled":false,"definition":{"id":"a9db38f9-9fdc-478c-b0f9-464221e58316"},"inputs":{"workItemType":"Bug","assignToRequestor":"true","additionalFields":"{}"}}],"triggers":[{"schedules":[{"branchFilters":["+refs/heads/master"],"timeZoneId":"UTC","startHours":0,"startMinutes":0,"daysToBuild":31,"scheduleJobId":"edba412e-9a43-438a-9c04-3121a06402a7","scheduleOnlyWithChanges":true}],"triggerType":8}],"variables":{"system.debug":{"value":"false","allowOverride":true}},"retentionRules":[{"branches":["+refs/heads/*"],"artifacts":[],"artifactTypesToDelete":["FilePath","SymbolStore"],"daysToKeep":10,"minimumToKeep":1,"deleteBuildRecord":true,"deleteTestResults":true}],"properties":{},"tags":[],"_links":{"self":{"href":"https://dev.azure.com/MSREADY19Sandbox/14c80a64-4bef-4a3e-a9fe-3ab2b1f5cf10/_apis/build/Definitions/5?revision=4"},"web":{"href":"https://dev.azure.com/MSREADY19Sandbox/14c80a64-4bef-4a3e-a9fe-3ab2b1f5cf10/_build/definition?definitionId=5"},"editor":{"href":"https://dev.azure.com/MSREADY19Sandbox/14c80a64-4bef-4a3e-a9fe-3ab2b1f5cf10/_build/designer?id=5&_a=edit-build-definition"},"badge":{"href":"https://dev.azure.com/MSREADY19Sandbox/14c80a64-4bef-4a3e-a9fe-3ab2b1f5cf10/_apis/build/status/5"}},"jobAuthorizationScope":1,"jobTimeoutInMinutes":60,"jobCancelTimeoutInMinutes":5,"process":{"phases":[{"steps":[{"environment":{},"enabled":true,"continueOnError":false,"alwaysRun":false,"displayName":"Download cost data eefa0282-1d13-4199-a232-19484c955d28","timeoutInMinutes":0,"condition":"succeeded()","task":{"id":"adff96fa-a978-4c69-8fb4-08fda81b3c15","versionSpec":"1.*","definitionType":"task"},"inputs":{"ConnectedServiceNameARM":"eefa0282-1d13-4199-a232-19484c955d28","DaysToDownload":"60","apiToUse":"usage","offerType":"MS-AZR-0003P","currency":"USD","locale":"en-US","regioInfo":"US"}},{"environment":{},"enabled":true,"continueOnError":false,"alwaysRun":false,"displayName":"Publish Cost Data","timeoutInMinutes":0,"condition":"succeeded()","task":{"id":"4d134cd4-16b8-4e68-818e-ed839f0bd94c","versionSpec":"1.*","definitionType":"task"},"inputs":{}}],"name":"Agent job 1","refName":"Job_1","condition":"succeeded()","target":{"executionOptions":{"type":0},"allowScriptsAuthAccessOption":false,"type":1},"jobAuthorizationScope":1}],"type":1},"repository":{"properties":{"cleanOptions":"0","labelSources":"0","labelSourcesFormat":"$(build.buildNumber)","reportBuildStatus":"true","gitLfsSupport":"false","skipSyncSource":"false","checkoutNestedSubmodules":"false","fetchDepth":"0"},"id":"efdf1e00-0164-488a-9535-8c1adb7ce7a4","type":"TfsGit","name":"technical-lab","url":"https://MSREADY19Sandbox@dev.azure.com/MSREADY19Sandbox/devsecopsbiz-session/_git/technical-lab","defaultBranch":"refs/heads/master","clean":"false","checkoutSubmodules":false},"processParameters":{},"quality":1,"authoredBy":{"displayName":"Rodrigo Antunes","url":"https://app.vssps.visualstudio.com/Ab740cb1e-2e72-4242-a301-c5007a232db3/_apis/Identities/0dbf009e-02df-4433-97f7-dafbf974ddd1","_links":{"avatar":{"href":"https://dev.azure.com/MSREADY19Sandbox/_apis/GraphProfile/MemberAvatars/aad.ZTQ0ZmUyMTMtY2I0ZS03ZWY1LWIzNGItZTMxNTJlMGNiYWVm"}},"id":"0dbf009e-02df-4433-97f7-dafbf974ddd1","uniqueName":"rodant@microsoft.com","imageUrl":"https://dev.azure.com/MSREADY19Sandbox/_api/_common/identityImage?id=0dbf009e-02df-4433-97f7-dafbf974ddd1","descriptor":"aad.ZTQ0ZmUyMTMtY2I0ZS03ZWY1LWIzNGItZTMxNTJlMGNiYWVm"},"drafts":[],"queue":{"_links":{"self":{"href":"https://dev.azure.com/MSREADY19Sandbox/_apis/build/Queues/3"}},"id":3,"name":"Hosted VS2017","url":"https://dev.azure.com/MSREADY19Sandbox/_apis/build/Queues/3","pool":{"id":3,"name":"Hosted VS2017","isHosted":true}},"id":5,"name":"Cost Insights","url":"https://dev.azure.com/MSREADY19Sandbox/14c80a64-4bef-4a3e-a9fe-3ab2b1f5cf10/_apis/build/Definitions/5?revision=4","uri":"vstfs:///Build/Definition/5","path":"\\","type":2,"queueStatus":0,"revision":4,"createdDate":"2019-02-10T18:27:08.167Z","project":{"id":"14c80a64-4bef-4a3e-a9fe-3ab2b1f5cf10","name":"devsecopsbiz-session","description":"Welcome to FY19 Winter MSReady and the DevSecOpsBiz sessions. This organization contains demos and labs. Enjoy!","url":"https://dev.azure.com/MSREADY19Sandbox/_apis/projects/14c80a64-4bef-4a3e-a9fe-3ab2b1f5cf10","state":1,"revision":16,"visibility":0,"lastUpdateTime":"2019-02-10T03:31:18.857Z"}}
--------------------------------------------------------------------------------
/files/OWASP/azure-pipelines.yml:
--------------------------------------------------------------------------------
1 | # .NET Desktop
2 | # Build and run tests for .NET Desktop or Windows classic desktop solutions.
3 | # Add steps that publish symbols, save build artifacts, and more:
4 | # https://docs.microsoft.com/azure/devops/pipelines/apps/windows/dot-net
5 |
6 | trigger:
7 | - master
8 |
9 | pool:
10 | vmImage: 'VS2017-Win2016'
11 |
12 | variables:
13 | solution: '**/*.sln'
14 | buildPlatform: 'Any CPU'
15 | buildConfiguration: 'Release'
16 |
17 | steps:
18 | - task: NuGetToolInstaller@0
19 |
20 | - task: NuGetCommand@2
21 | inputs:
22 | restoreSolution: '$(solution)'
23 |
24 | - task: VSBuild@1
25 | inputs:
26 | solution: '$(solution)'
27 | platform: '$(buildPlatform)'
28 | configuration: '$(buildConfiguration)'
29 |
30 | - task: CopyFiles@2
31 | displayName: 'Copy Files to: $(build.artifactstagingdirectory)'
32 | inputs:
33 | SourceFolder: '$(system.defaultworkingdirectory)'
34 | Contents: '**\bin\$(BuildConfiguration)\**'
35 | TargetFolder: '$(build.artifactstagingdirectory)'
36 |
37 | - task: PublishBuildArtifacts@1
38 | displayName: 'Publish Artifact: drop'
39 | inputs:
40 | PathtoPublish: '$(build.artifactstagingdirectory)'
41 |
42 | - task: PublishBuildArtifacts@1
43 | displayName: 'Publish Artifact: scripts'
44 | inputs:
45 | PathtoPublish: scripts
46 | ArtifactName: scripts
47 |
--------------------------------------------------------------------------------
/files/OWASP/dockerfile:
--------------------------------------------------------------------------------
1 | ROM microsoft/windowsservercore
2 | ADD publish/ /
3 | ENTRYPOINT wasp-zap-vsts-tool.exe
--------------------------------------------------------------------------------
/files/SmartHotel/SmartHotel360_Website-Deploy.json:
--------------------------------------------------------------------------------
1 | {
2 | "source": 2,
3 | "revision": 1,
4 | "description": null,
5 | "createdBy": {
6 | "displayName": "Rodrigo Antunes",
7 | "url": "https://app.vssps.visualstudio.com/A54ce9761-51bb-4a26-a4f5-1c19a57402b8/_apis/Identities/0dbf009e-02df-4433-97f7-dafbf974ddd1",
8 | "_links": {
9 | "avatar": {
10 | "href": "https://dev.azure.com/MrRodant/_apis/GraphProfile/MemberAvatars/aad.ZTQ0ZmUyMTMtY2I0ZS03ZWY1LWIzNGItZTMxNTJlMGNiYWVm"
11 | }
12 | },
13 | "id": "0dbf009e-02df-4433-97f7-dafbf974ddd1",
14 | "uniqueName": "rodant@microsoft.com",
15 | "imageUrl": "https://dev.azure.com/MrRodant/_api/_common/identityImage?id=0dbf009e-02df-4433-97f7-dafbf974ddd1",
16 | "descriptor": "aad.ZTQ0ZmUyMTMtY2I0ZS03ZWY1LWIzNGItZTMxNTJlMGNiYWVm"
17 | },
18 | "createdOn": "2019-01-17T18:51:01.823Z",
19 | "modifiedBy": {
20 | "displayName": "Rodrigo Antunes",
21 | "url": "https://app.vssps.visualstudio.com/A54ce9761-51bb-4a26-a4f5-1c19a57402b8/_apis/Identities/0dbf009e-02df-4433-97f7-dafbf974ddd1",
22 | "_links": {
23 | "avatar": {
24 | "href": "https://dev.azure.com/MrRodant/_apis/GraphProfile/MemberAvatars/aad.ZTQ0ZmUyMTMtY2I0ZS03ZWY1LWIzNGItZTMxNTJlMGNiYWVm"
25 | }
26 | },
27 | "id": "0dbf009e-02df-4433-97f7-dafbf974ddd1",
28 | "uniqueName": "rodant@microsoft.com",
29 | "imageUrl": "https://dev.azure.com/MrRodant/_api/_common/identityImage?id=0dbf009e-02df-4433-97f7-dafbf974ddd1",
30 | "descriptor": "aad.ZTQ0ZmUyMTMtY2I0ZS03ZWY1LWIzNGItZTMxNTJlMGNiYWVm"
31 | },
32 | "modifiedOn": "2019-01-17T18:51:01.823Z",
33 | "isDeleted": false,
34 | "variables": {
35 | "location": {
36 | "value": "East US"
37 | },
38 | "ResourceGroup": {
39 | "value": "Website"
40 | }
41 | },
42 | "variableGroups": [],
43 | "environments": [
44 | {
45 | "id": 1,
46 | "name": "Stage 1",
47 | "rank": 1,
48 | "owner": {
49 | "displayName": "Rodrigo Antunes",
50 | "url": "https://app.vssps.visualstudio.com/A54ce9761-51bb-4a26-a4f5-1c19a57402b8/_apis/Identities/0dbf009e-02df-4433-97f7-dafbf974ddd1",
51 | "_links": {
52 | "avatar": {
53 | "href": "https://dev.azure.com/MrRodant/_apis/GraphProfile/MemberAvatars/aad.ZTQ0ZmUyMTMtY2I0ZS03ZWY1LWIzNGItZTMxNTJlMGNiYWVm"
54 | }
55 | },
56 | "id": "0dbf009e-02df-4433-97f7-dafbf974ddd1",
57 | "uniqueName": "rodant@microsoft.com",
58 | "imageUrl": "https://dev.azure.com/MrRodant/_api/_common/identityImage?id=0dbf009e-02df-4433-97f7-dafbf974ddd1",
59 | "descriptor": "aad.ZTQ0ZmUyMTMtY2I0ZS03ZWY1LWIzNGItZTMxNTJlMGNiYWVm"
60 | },
61 | "variables": {},
62 | "variableGroups": [],
63 | "preDeployApprovals": {
64 | "approvals": [
65 | {
66 | "rank": 1,
67 | "isAutomated": true,
68 | "isNotificationOn": false,
69 | "id": 1
70 | }
71 | ],
72 | "approvalOptions": {
73 | "requiredApproverCount": null,
74 | "releaseCreatorCanBeApprover": false,
75 | "autoTriggeredAndPreviousEnvironmentApprovedCanBeSkipped": false,
76 | "enforceIdentityRevalidation": false,
77 | "timeoutInMinutes": 0,
78 | "executionOrder": 1
79 | }
80 | },
81 | "deployStep": {
82 | "id": 2
83 | },
84 | "postDeployApprovals": {
85 | "approvals": [
86 | {
87 | "rank": 1,
88 | "isAutomated": true,
89 | "isNotificationOn": false,
90 | "id": 3
91 | }
92 | ],
93 | "approvalOptions": {
94 | "requiredApproverCount": null,
95 | "releaseCreatorCanBeApprover": false,
96 | "autoTriggeredAndPreviousEnvironmentApprovedCanBeSkipped": false,
97 | "enforceIdentityRevalidation": false,
98 | "timeoutInMinutes": 0,
99 | "executionOrder": 2
100 | }
101 | },
102 | "deployPhases": [
103 | {
104 | "deploymentInput": {
105 | "parallelExecution": {
106 | "parallelExecutionType": 0
107 | },
108 | "skipArtifactsDownload": false,
109 | "artifactsDownloadInput": {
110 | "downloadInputs": []
111 | },
112 | "queueId": 81,
113 | "demands": [],
114 | "enableAccessToken": false,
115 | "timeoutInMinutes": 0,
116 | "jobCancelTimeoutInMinutes": 1,
117 | "condition": "succeeded()",
118 | "overrideInputs": {}
119 | },
120 | "rank": 1,
121 | "phaseType": 1,
122 | "name": "Agent job",
123 | "refName": null,
124 | "workflowTasks": [
125 | {
126 | "environment": {},
127 | "taskId": "94a74903-f93f-4075-884f-dc11f34058b4",
128 | "version": "2.*",
129 | "name": "Deploying Resources",
130 | "refName": "",
131 | "enabled": true,
132 | "alwaysRun": false,
133 | "continueOnError": false,
134 | "timeoutInMinutes": 0,
135 | "definitionType": "task",
136 | "overrideInputs": {},
137 | "condition": "succeeded()",
138 | "inputs": {
139 | "ConnectedServiceName": "",
140 | "action": "Create Or Update Resource Group",
141 | "resourceGroupName": "$(ResourceGroup)",
142 | "location": "$(location)",
143 | "templateLocation": "Linked artifact",
144 | "csmFileLink": "",
145 | "csmParametersFileLink": "",
146 | "csmFile": "$(System.DefaultWorkingDirectory)/SmartHotel Petchecker Web/arm/smarthote360.website.deployment.json",
147 | "csmParametersFile": "",
148 | "overrideParameters": "",
149 | "deploymentMode": "Incremental",
150 | "enableDeploymentPrerequisites": "None",
151 | "deploymentGroupEndpoint": "",
152 | "project": "",
153 | "deploymentGroupName": "",
154 | "copyAzureVMTags": "true",
155 | "runAgentServiceAsUser": "false",
156 | "userName": "",
157 | "password": "",
158 | "outputVariable": "",
159 | "deploymentOutputs": ""
160 | }
161 | },
162 | {
163 | "environment": {},
164 | "taskId": "584bcff2-3353-4f11-872b-6ba01267a972",
165 | "version": "5.*",
166 | "name": "ARM Outputs",
167 | "refName": "",
168 | "enabled": true,
169 | "alwaysRun": false,
170 | "continueOnError": false,
171 | "timeoutInMinutes": 0,
172 | "definitionType": "task",
173 | "overrideInputs": {},
174 | "condition": "succeeded()",
175 | "inputs": {
176 | "ConnectedServiceNameSelector": "",
177 | "ConnectedServiceNameARM": "",
178 | "resourceGroupName": "$(ResourceGroup)",
179 | "prefix": "",
180 | "outputNames": "",
181 | "whenLastDeploymentIsFailed": "fail",
182 | "deploymentNameFilter": ""
183 | }
184 | },
185 | {
186 | "environment": {},
187 | "taskId": "497d490f-eea7-4f2b-ab94-48d9c1acdcb1",
188 | "version": "3.*",
189 | "name": "Deploy Azure Function",
190 | "refName": "",
191 | "enabled": true,
192 | "alwaysRun": false,
193 | "continueOnError": false,
194 | "timeoutInMinutes": 0,
195 | "definitionType": null,
196 | "overrideInputs": {},
197 | "condition": "succeeded()",
198 | "inputs": {
199 | "ConnectedServiceName": "",
200 | "WebAppKind": "functionapp",
201 | "WebAppName": "$(function)",
202 | "DeployToSlotFlag": "false",
203 | "ResourceGroupName": "",
204 | "SlotName": "",
205 | "ImageSource": "Registry",
206 | "AzureContainerRegistry": "",
207 | "AzureContainerRegistryLoginServer": "",
208 | "AzureContainerRegistryImage": "",
209 | "AzureContainerRegistryTag": "",
210 | "DockerRepositoryAccess": "public",
211 | "RegistryConnectedServiceName": "",
212 | "PrivateRegistryImage": "",
213 | "PrivateRegistryTag": "",
214 | "DockerNamespace": "",
215 | "DockerRepository": "",
216 | "DockerImageTag": "$(Build.BuildId)",
217 | "VirtualApplication": "",
218 | "Package": "$(System.DefaultWorkingDirectory)/SmartHotel Petchecker Web/Function-app/SmartHotel360.WebsiteFunction.zip",
219 | "BuiltinLinuxPackage": "$(System.DefaultWorkingDirectory)/**/*.zip",
220 | "RuntimeStack": "",
221 | "StartupCommand": "",
222 | "WebAppUri": "",
223 | "ScriptType": "",
224 | "InlineScript": "",
225 | "ScriptPath": "",
226 | "GenerateWebConfig": "false",
227 | "WebConfigParameters": "",
228 | "AppSettings": "",
229 | "ConfigurationSettings": "",
230 | "TakeAppOfflineFlag": "true",
231 | "UseWebDeploy": "false",
232 | "SetParametersFile": "",
233 | "RemoveAdditionalFilesFlag": "false",
234 | "ExcludeFilesFromAppDataFlag": "false",
235 | "AdditionalArguments": "",
236 | "RenameFilesFlag": "true",
237 | "XmlTransformation": "false",
238 | "XmlVariableSubstitution": "false",
239 | "JSONFiles": ""
240 | }
241 | },
242 | {
243 | "environment": {},
244 | "taskId": "497d490f-eea7-4f2b-ab94-48d9c1acdcb1",
245 | "version": "3.*",
246 | "name": "Deploy SmartHotel Website",
247 | "refName": "",
248 | "enabled": true,
249 | "alwaysRun": false,
250 | "continueOnError": false,
251 | "timeoutInMinutes": 0,
252 | "definitionType": "task",
253 | "overrideInputs": {},
254 | "condition": "succeeded()",
255 | "inputs": {
256 | "ConnectedServiceName": "",
257 | "WebAppKind": "webApp",
258 | "WebAppName": "$(web)",
259 | "DeployToSlotFlag": "false",
260 | "ResourceGroupName": "",
261 | "SlotName": "production",
262 | "ImageSource": "Registry",
263 | "AzureContainerRegistry": "",
264 | "AzureContainerRegistryLoginServer": "",
265 | "AzureContainerRegistryImage": "",
266 | "AzureContainerRegistryTag": "",
267 | "DockerRepositoryAccess": "public",
268 | "RegistryConnectedServiceName": "",
269 | "PrivateRegistryImage": "",
270 | "PrivateRegistryTag": "",
271 | "DockerNamespace": "",
272 | "DockerRepository": "",
273 | "DockerImageTag": "",
274 | "VirtualApplication": "",
275 | "Package": "$(System.DefaultWorkingDirectory)/SmartHotel Petchecker Web/web/SmartHotel360.Website.zip",
276 | "BuiltinLinuxPackage": "$(System.DefaultWorkingDirectory)/**/*.zip",
277 | "RuntimeStack": "",
278 | "StartupCommand": "",
279 | "WebAppUri": "SmartHotelWebsiteURL",
280 | "ScriptType": "",
281 | "InlineScript": ":: You can provide your deployment commands here. One command per line.",
282 | "ScriptPath": "",
283 | "GenerateWebConfig": "false",
284 | "WebConfigParameters": "",
285 | "AppSettings": "",
286 | "ConfigurationSettings": "",
287 | "TakeAppOfflineFlag": "true",
288 | "UseWebDeploy": "true",
289 | "SetParametersFile": "",
290 | "RemoveAdditionalFilesFlag": "true",
291 | "ExcludeFilesFromAppDataFlag": "false",
292 | "AdditionalArguments": "",
293 | "RenameFilesFlag": "false",
294 | "XmlTransformation": "false",
295 | "XmlVariableSubstitution": "false",
296 | "JSONFiles": ""
297 | }
298 | },
299 | {
300 | "environment": {},
301 | "taskId": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
302 | "version": "2.*",
303 | "name": "Echo Website Name",
304 | "refName": "",
305 | "enabled": true,
306 | "alwaysRun": false,
307 | "continueOnError": false,
308 | "timeoutInMinutes": 0,
309 | "definitionType": "task",
310 | "overrideInputs": {},
311 | "condition": "succeeded()",
312 | "inputs": {
313 | "script": "echo $(SmartHotelWebsiteURL)",
314 | "workingDirectory": "",
315 | "failOnStderr": "false"
316 | }
317 | }
318 | ]
319 | }
320 | ],
321 | "environmentOptions": {
322 | "emailNotificationType": "OnlyOnFailure",
323 | "emailRecipients": "release.environment.owner;release.creator",
324 | "skipArtifactsDownload": false,
325 | "timeoutInMinutes": 0,
326 | "enableAccessToken": false,
327 | "publishDeploymentStatus": true,
328 | "badgeEnabled": false,
329 | "autoLinkWorkItems": false,
330 | "pullRequestDeploymentEnabled": false
331 | },
332 | "demands": [],
333 | "conditions": [
334 | {
335 | "name": "ReleaseStarted",
336 | "conditionType": 1,
337 | "value": ""
338 | }
339 | ],
340 | "executionPolicy": {
341 | "concurrencyCount": 1,
342 | "queueDepthCount": 0
343 | },
344 | "schedules": [],
345 | "currentRelease": {
346 | "id": 0,
347 | "url": "https://vsrm.dev.azure.com/MrRodant/da3b9838-c03c-4c89-9409-06944e75e479/_apis/Release/releases/0",
348 | "_links": {}
349 | },
350 | "retentionPolicy": {
351 | "daysToKeep": 30,
352 | "releasesToKeep": 3,
353 | "retainBuild": true
354 | },
355 | "processParameters": {},
356 | "properties": {},
357 | "preDeploymentGates": {
358 | "id": 0,
359 | "gatesOptions": null,
360 | "gates": []
361 | },
362 | "postDeploymentGates": {
363 | "id": 0,
364 | "gatesOptions": null,
365 | "gates": []
366 | },
367 | "environmentTriggers": [],
368 | "badgeUrl": "https://vsrm.dev.azure.com/MrRodant/_apis/public/Release/badge/da3b9838-c03c-4c89-9409-06944e75e479/1/1"
369 | }
370 | ],
371 | "artifacts": [
372 | {
373 | "sourceId": "da3b9838-c03c-4c89-9409-06944e75e479:9",
374 | "type": "Build",
375 | "alias": "SmartHotel Petchecker Web",
376 | "definitionReference": {
377 | "defaultVersionBranch": {
378 | "id": "",
379 | "name": ""
380 | },
381 | "defaultVersionSpecific": {
382 | "id": "",
383 | "name": ""
384 | },
385 | "defaultVersionTags": {
386 | "id": "",
387 | "name": ""
388 | },
389 | "defaultVersionType": {
390 | "id": "selectDuringReleaseCreationType",
391 | "name": "Specify at the time of release creation"
392 | },
393 | "definition": {
394 | "id": "9",
395 | "name": "SmartHotel_Petchecker-Web"
396 | },
397 | "definitions": {
398 | "id": "",
399 | "name": ""
400 | },
401 | "IsMultiDefinitionType": {
402 | "id": "False",
403 | "name": "False"
404 | },
405 | "project": {
406 | "id": "da3b9838-c03c-4c89-9409-06944e75e479",
407 | "name": "MsReadySmartHotel360"
408 | },
409 | "artifactSourceDefinitionUrl": {
410 | "id": "https://dev.azure.com/MrRodant/_permalink/_build/index?collectionId=4d15b290-cbe9-407c-ac43-feef6517553a&projectId=da3b9838-c03c-4c89-9409-06944e75e479&definitionId=9",
411 | "name": ""
412 | }
413 | },
414 | "isPrimary": true,
415 | "isRetained": false
416 | }
417 | ],
418 | "triggers": [],
419 | "releaseNameFormat": "Release-$(rev:r)",
420 | "tags": [],
421 | "pipelineProcess": {
422 | "type": 1
423 | },
424 | "properties": {
425 | "DefinitionCreationSource": {
426 | "$type": "System.String",
427 | "$value": "Other"
428 | }
429 | },
430 | "id": 1,
431 | "name": "SmartHotel360_Website-Deploy",
432 | "path": "\\",
433 | "projectReference": null,
434 | "url": "https://vsrm.dev.azure.com/MrRodant/da3b9838-c03c-4c89-9409-06944e75e479/_apis/Release/definitions/1",
435 | "_links": {
436 | "self": {
437 | "href": "https://vsrm.dev.azure.com/MrRodant/da3b9838-c03c-4c89-9409-06944e75e479/_apis/Release/definitions/1"
438 | },
439 | "web": {
440 | "href": "https://dev.azure.com/MrRodant/da3b9838-c03c-4c89-9409-06944e75e479/_release?definitionId=1"
441 | }
442 | }
443 | }
444 |
--------------------------------------------------------------------------------
/files/SmartHotel/SmartHotel_Petchecker-Web.json:
--------------------------------------------------------------------------------
1 | {
2 | "options": [
3 | {
4 | "enabled": true,
5 | "definition": {
6 | "id": "5d58cc01-7c75-450c-be18-a388ddb129ec"
7 | },
8 | "inputs": {
9 | "branchFilters": "[\"+refs/heads/*\"]",
10 | "additionalFields": "{}"
11 | }
12 | },
13 | {
14 | "enabled": false,
15 | "definition": {
16 | "id": "a9db38f9-9fdc-478c-b0f9-464221e58316"
17 | },
18 | "inputs": {
19 | "workItemType": "Bug",
20 | "assignToRequestor": "true",
21 | "additionalFields": "{}"
22 | }
23 | }
24 | ],
25 | "variables": {
26 | "BuildConfiguration": {
27 | "value": "Release",
28 | "allowOverride": true
29 | },
30 | "BuildPlatform": {
31 | "value": "any cpu",
32 | "allowOverride": true
33 | },
34 | "system.debug": {
35 | "value": "false",
36 | "allowOverride": true
37 | }
38 | },
39 | "retentionRules": [
40 | {
41 | "branches": [
42 | "+refs/heads/*"
43 | ],
44 | "artifacts": [],
45 | "artifactTypesToDelete": [
46 | "FilePath",
47 | "SymbolStore"
48 | ],
49 | "daysToKeep": 10,
50 | "minimumToKeep": 1,
51 | "deleteBuildRecord": true,
52 | "deleteTestResults": true
53 | }
54 | ],
55 | "properties": {},
56 | "tags": [],
57 | "buildNumberFormat": "$(date:yyyyMMdd)$(rev:.r)",
58 | "jobAuthorizationScope": 1,
59 | "jobTimeoutInMinutes": 60,
60 | "jobCancelTimeoutInMinutes": 5,
61 | "process": {
62 | "phases": [
63 | {
64 | "steps": [
65 | {
66 | "environment": {},
67 | "enabled": true,
68 | "continueOnError": false,
69 | "alwaysRun": false,
70 | "displayName": "Use .NET Core sdk 2.1.403",
71 | "timeoutInMinutes": 0,
72 | "condition": "succeeded()",
73 | "task": {
74 | "id": "b0ce7256-7898-45d3-9cb5-176b752bfea6",
75 | "versionSpec": "0.*",
76 | "definitionType": "task"
77 | },
78 | "inputs": {
79 | "packageType": "sdk",
80 | "version": "2.1.403"
81 | }
82 | },
83 | {
84 | "environment": {},
85 | "enabled": true,
86 | "continueOnError": false,
87 | "alwaysRun": false,
88 | "displayName": "Restore",
89 | "timeoutInMinutes": 0,
90 | "task": {
91 | "id": "5541a522-603c-47ad-91fc-a4b1d163081b",
92 | "versionSpec": "2.*",
93 | "definitionType": "task"
94 | },
95 | "inputs": {
96 | "command": "restore",
97 | "publishWebProjects": "true",
98 | "projects": "$(Parameters.RestoreBuildProjects)",
99 | "custom": "",
100 | "arguments": "",
101 | "publishTestResults": "true",
102 | "zipAfterPublish": "true",
103 | "modifyOutputPath": "true",
104 | "selectOrConfig": "select",
105 | "feedRestore": "",
106 | "includeNuGetOrg": "true",
107 | "nugetConfigPath": "",
108 | "externalEndpoints": "",
109 | "noCache": "false",
110 | "packagesDirectory": "",
111 | "verbosityRestore": "Detailed",
112 | "searchPatternPush": "$(Build.ArtifactStagingDirectory)/*.nupkg",
113 | "nuGetFeedType": "internal",
114 | "feedPublish": "",
115 | "externalEndpoint": "",
116 | "searchPatternPack": "**/*.csproj",
117 | "configurationToPack": "$(BuildConfiguration)",
118 | "outputDir": "$(Build.ArtifactStagingDirectory)",
119 | "nobuild": "false",
120 | "versioningScheme": "off",
121 | "versionEnvVar": "",
122 | "requestedMajorVersion": "1",
123 | "requestedMinorVersion": "0",
124 | "requestedPatchVersion": "0",
125 | "buildProperties": "",
126 | "verbosityPack": "Detailed",
127 | "workingDirectory": ""
128 | }
129 | },
130 | {
131 | "environment": {},
132 | "enabled": true,
133 | "continueOnError": false,
134 | "alwaysRun": false,
135 | "displayName": "Build",
136 | "timeoutInMinutes": 0,
137 | "task": {
138 | "id": "5541a522-603c-47ad-91fc-a4b1d163081b",
139 | "versionSpec": "2.*",
140 | "definitionType": "task"
141 | },
142 | "inputs": {
143 | "command": "build",
144 | "publishWebProjects": "true",
145 | "projects": "$(Parameters.RestoreBuildProjects)",
146 | "custom": "",
147 | "arguments": "--configuration $(BuildConfiguration)",
148 | "publishTestResults": "true",
149 | "zipAfterPublish": "true",
150 | "modifyOutputPath": "true",
151 | "selectOrConfig": "select",
152 | "feedRestore": "",
153 | "includeNuGetOrg": "true",
154 | "nugetConfigPath": "",
155 | "externalEndpoints": "",
156 | "noCache": "false",
157 | "packagesDirectory": "",
158 | "verbosityRestore": "Detailed",
159 | "searchPatternPush": "$(Build.ArtifactStagingDirectory)/*.nupkg",
160 | "nuGetFeedType": "internal",
161 | "feedPublish": "",
162 | "externalEndpoint": "",
163 | "searchPatternPack": "**/*.csproj",
164 | "configurationToPack": "$(BuildConfiguration)",
165 | "outputDir": "$(Build.ArtifactStagingDirectory)",
166 | "nobuild": "false",
167 | "versioningScheme": "off",
168 | "versionEnvVar": "",
169 | "requestedMajorVersion": "1",
170 | "requestedMinorVersion": "0",
171 | "requestedPatchVersion": "0",
172 | "buildProperties": "",
173 | "verbosityPack": "Detailed",
174 | "workingDirectory": ""
175 | }
176 | },
177 | {
178 | "environment": {},
179 | "enabled": true,
180 | "continueOnError": false,
181 | "alwaysRun": false,
182 | "displayName": "WhiteSource Bolt",
183 | "timeoutInMinutes": 0,
184 | "condition": "succeeded()",
185 | "task": {
186 | "id": "521d1e00-f5fb-4b73-a93b-b2fe88a9af91",
187 | "versionSpec": "18.*",
188 | "definitionType": "task"
189 | },
190 | "inputs": {
191 | "cwd": "Source/SmartHotel360.Website",
192 | "advance": "false",
193 | "exclude": "",
194 | "extraFolders": ""
195 | }
196 | },
197 | {
198 | "environment": {},
199 | "enabled": true,
200 | "continueOnError": false,
201 | "alwaysRun": false,
202 | "displayName": "Publish",
203 | "timeoutInMinutes": 0,
204 | "task": {
205 | "id": "5541a522-603c-47ad-91fc-a4b1d163081b",
206 | "versionSpec": "2.*",
207 | "definitionType": "task"
208 | },
209 | "inputs": {
210 | "command": "publish",
211 | "publishWebProjects": "True",
212 | "projects": "$(Parameters.RestoreBuildProjects)",
213 | "custom": "",
214 | "arguments": "--configuration $(BuildConfiguration) --output $(build.artifactstagingdirectory)",
215 | "publishTestResults": "true",
216 | "zipAfterPublish": "True",
217 | "modifyOutputPath": "true",
218 | "selectOrConfig": "select",
219 | "feedRestore": "",
220 | "includeNuGetOrg": "true",
221 | "nugetConfigPath": "",
222 | "externalEndpoints": "",
223 | "noCache": "false",
224 | "packagesDirectory": "",
225 | "verbosityRestore": "Detailed",
226 | "searchPatternPush": "$(Build.ArtifactStagingDirectory)/*.nupkg",
227 | "nuGetFeedType": "internal",
228 | "feedPublish": "",
229 | "externalEndpoint": "",
230 | "searchPatternPack": "**/*.csproj",
231 | "configurationToPack": "$(BuildConfiguration)",
232 | "outputDir": "$(Build.ArtifactStagingDirectory)",
233 | "nobuild": "false",
234 | "versioningScheme": "off",
235 | "versionEnvVar": "",
236 | "requestedMajorVersion": "1",
237 | "requestedMinorVersion": "0",
238 | "requestedPatchVersion": "0",
239 | "buildProperties": "",
240 | "verbosityPack": "Detailed",
241 | "workingDirectory": ""
242 | }
243 | },
244 | {
245 | "environment": {},
246 | "enabled": true,
247 | "continueOnError": false,
248 | "alwaysRun": false,
249 | "displayName": "Publish Artifact",
250 | "timeoutInMinutes": 0,
251 | "task": {
252 | "id": "2ff763a7-ce83-4e1f-bc89-0ae63477cebe",
253 | "versionSpec": "1.*",
254 | "definitionType": "task"
255 | },
256 | "inputs": {
257 | "PathtoPublish": "$(build.artifactstagingdirectory)",
258 | "ArtifactName": "web",
259 | "ArtifactType": "Container",
260 | "TargetPath": "\\\\my\\share\\$(Build.DefinitionName)\\$(Build.BuildNumber)",
261 | "Parallel": "false",
262 | "ParallelCount": "8"
263 | }
264 | },
265 | {
266 | "environment": {},
267 | "enabled": true,
268 | "continueOnError": false,
269 | "alwaysRun": true,
270 | "displayName": "Publish Artifact copy",
271 | "timeoutInMinutes": 0,
272 | "condition": "succeededOrFailed()",
273 | "task": {
274 | "id": "2ff763a7-ce83-4e1f-bc89-0ae63477cebe",
275 | "versionSpec": "1.*",
276 | "definitionType": "task"
277 | },
278 | "inputs": {
279 | "PathtoPublish": "$(Build.SourcesDirectory)/Source/SmartHotel360.WebsiteARM",
280 | "ArtifactName": "arm",
281 | "ArtifactType": "Container",
282 | "TargetPath": "\\\\my\\share\\$(Build.DefinitionName)\\$(Build.BuildNumber)",
283 | "Parallel": "false",
284 | "ParallelCount": "8"
285 | }
286 | }
287 | ],
288 | "name": "Build WebSite",
289 | "refName": "Phase_1",
290 | "condition": "succeeded()",
291 | "target": {
292 | "executionOptions": {
293 | "type": 0
294 | },
295 | "allowScriptsAuthAccessOption": false,
296 | "type": 1
297 | },
298 | "jobAuthorizationScope": 1,
299 | "jobCancelTimeoutInMinutes": 1
300 | },
301 | {
302 | "steps": [
303 | {
304 | "environment": {},
305 | "enabled": true,
306 | "continueOnError": false,
307 | "alwaysRun": false,
308 | "displayName": "Use NuGet 4.4.1",
309 | "timeoutInMinutes": 0,
310 | "condition": "succeeded()",
311 | "task": {
312 | "id": "2c65196a-54fd-4a02-9be8-d9d1837b7c5d",
313 | "versionSpec": "0.*",
314 | "definitionType": "task"
315 | },
316 | "inputs": {
317 | "versionSpec": "4.4.1",
318 | "checkLatest": "false"
319 | }
320 | },
321 | {
322 | "environment": {},
323 | "enabled": true,
324 | "continueOnError": false,
325 | "alwaysRun": false,
326 | "displayName": "NuGet restore",
327 | "timeoutInMinutes": 0,
328 | "condition": "succeeded()",
329 | "task": {
330 | "id": "333b11bd-d341-40d9-afcf-b32d5ce6f23b",
331 | "versionSpec": "2.*",
332 | "definitionType": "task"
333 | },
334 | "inputs": {
335 | "command": "restore",
336 | "solution": "Source/SmartHotel360.WebsiteFunction/SmartHotel360.WebsiteFunction.csproj",
337 | "selectOrConfig": "select",
338 | "feedRestore": "",
339 | "includeNuGetOrg": "true",
340 | "nugetConfigPath": "",
341 | "externalEndpoints": "",
342 | "noCache": "false",
343 | "disableParallelProcessing": "false",
344 | "packagesDirectory": "",
345 | "verbosityRestore": "Detailed",
346 | "searchPatternPush": "$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg",
347 | "nuGetFeedType": "internal",
348 | "feedPublish": "",
349 | "allowPackageConflicts": "false",
350 | "externalEndpoint": "",
351 | "verbosityPush": "Detailed",
352 | "searchPatternPack": "**/*.csproj",
353 | "configurationToPack": "$(BuildConfiguration)",
354 | "outputDir": "$(Build.ArtifactStagingDirectory)",
355 | "versioningScheme": "off",
356 | "includeReferencedProjects": "false",
357 | "versionEnvVar": "",
358 | "requestedMajorVersion": "1",
359 | "requestedMinorVersion": "0",
360 | "requestedPatchVersion": "0",
361 | "packTimezone": "utc",
362 | "includeSymbols": "false",
363 | "toolPackage": "false",
364 | "buildProperties": "",
365 | "basePath": "",
366 | "verbosityPack": "Detailed",
367 | "arguments": ""
368 | }
369 | },
370 | {
371 | "environment": {},
372 | "enabled": true,
373 | "continueOnError": false,
374 | "alwaysRun": false,
375 | "displayName": "Build solution Source/SmartHotel360.WebsiteFunction/SmartHotel360.WebsiteFunction.csproj",
376 | "timeoutInMinutes": 0,
377 | "condition": "succeeded()",
378 | "task": {
379 | "id": "71a9a2d3-a98a-4caa-96ab-affca411ecda",
380 | "versionSpec": "1.*",
381 | "definitionType": "task"
382 | },
383 | "inputs": {
384 | "solution": "Source/SmartHotel360.WebsiteFunction/SmartHotel360.WebsiteFunction.csproj",
385 | "vsVersion": "latest",
386 | "msbuildArgs": "/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation=\"$(build.artifactstagingdirectory)\\\\\"",
387 | "platform": "$(BuildPlatform)",
388 | "configuration": "$(BuildConfiguration)",
389 | "clean": "false",
390 | "maximumCpuCount": "false",
391 | "restoreNugetPackages": "false",
392 | "msbuildArchitecture": "x86",
393 | "logProjectEvents": "true",
394 | "createLogFile": "false"
395 | }
396 | },
397 | {
398 | "environment": {},
399 | "enabled": true,
400 | "continueOnError": false,
401 | "alwaysRun": false,
402 | "displayName": "WhiteSource Bolt",
403 | "timeoutInMinutes": 0,
404 | "condition": "succeeded()",
405 | "task": {
406 | "id": "521d1e00-f5fb-4b73-a93b-b2fe88a9af91",
407 | "versionSpec": "18.*",
408 | "definitionType": "task"
409 | },
410 | "inputs": {
411 | "cwd": "Source/SmartHotel360.WebsiteFunction",
412 | "advance": "false",
413 | "exclude": "",
414 | "extraFolders": ""
415 | }
416 | },
417 | {
418 | "environment": {},
419 | "enabled": true,
420 | "continueOnError": false,
421 | "alwaysRun": false,
422 | "displayName": "Publish Artifact: Function-app",
423 | "timeoutInMinutes": 0,
424 | "condition": "succeeded()",
425 | "task": {
426 | "id": "2ff763a7-ce83-4e1f-bc89-0ae63477cebe",
427 | "versionSpec": "1.*",
428 | "definitionType": "task"
429 | },
430 | "inputs": {
431 | "PathtoPublish": "$(Build.ArtifactStagingDirectory)",
432 | "ArtifactName": "Function-app",
433 | "ArtifactType": "Container",
434 | "TargetPath": "",
435 | "Parallel": "false",
436 | "ParallelCount": "8"
437 | }
438 | }
439 | ],
440 | "name": "Build Pet Checker Functions App",
441 | "refName": "Phase_2",
442 | "condition": "succeeded()",
443 | "target": {
444 | "executionOptions": {
445 | "type": 0
446 | },
447 | "allowScriptsAuthAccessOption": false,
448 | "type": 1
449 | },
450 | "jobAuthorizationScope": 1,
451 | "jobCancelTimeoutInMinutes": 1
452 | }
453 | ],
454 | "type": 1
455 | },
456 | "repository": {
457 | "properties": {
458 | "fullName": "repository",
459 | "cloneUrl": "https://github.com/Microsoft/SmartHotel360-Website.git",
460 | "isPrivate": "False",
461 | "checkoutNestedSubmodules": "false",
462 | "cleanOptions": "0",
463 | "fetchDepth": "0",
464 | "gitLfsSupport": "false",
465 | "reportBuildStatus": "true",
466 | "connectedServiceId": "4540e03f-4645-4a51-9d1b-c96556c068ee",
467 | "skipSyncSource": "false",
468 | "labelSourcesFormat": "$(build.buildNumber)",
469 | "labelSources": "0"
470 | },
471 | "id": "https://github.com/Microsoft/SmartHotel360-Website.git",
472 | "type": "Git",
473 | "name": "repository",
474 | "url": "https://github.com/Microsoft/SmartHotel360-Website.git",
475 | "defaultBranch": "master",
476 | "clean": "false",
477 | "checkoutSubmodules": false
478 | },
479 | "processParameters": {
480 | "inputs": [
481 | {
482 | "aliases": [],
483 | "options": {},
484 | "properties": {},
485 | "name": "RestoreBuildProjects",
486 | "label": "Project(s) to restore and build",
487 | "defaultValue": "Source/SmartHotel360.Website/SmartHotel360.Website.csproj ",
488 | "type": "multiline",
489 | "helpMarkDown": "Relative path of the .csproj file(s) from repo root. Wildcards can be used. For example, **/*.csproj for all .csproj files in all the subfolders.",
490 | "visibleRule": "",
491 | "groupName": ""
492 | }
493 | ]
494 | },
495 | "quality": 1,
496 | "authoredBy": {
497 | "displayName": "Rodrigo Antunes",
498 | "url": "https://app.vssps.visualstudio.com/A54ce9761-51bb-4a26-a4f5-1c19a57402b8/_apis/Identities/0dbf009e-02df-4433-97f7-dafbf974ddd1",
499 | "_links": {
500 | "avatar": {
501 | "href": "https://dev.azure.com/MrRodant/_apis/GraphProfile/MemberAvatars/aad.ZTQ0ZmUyMTMtY2I0ZS03ZWY1LWIzNGItZTMxNTJlMGNiYWVm"
502 | }
503 | },
504 | "id": "0dbf009e-02df-4433-97f7-dafbf974ddd1",
505 | "uniqueName": "rodant@microsoft.com",
506 | "imageUrl": "https://dev.azure.com/MrRodant/_api/_common/identityImage?id=0dbf009e-02df-4433-97f7-dafbf974ddd1",
507 | "descriptor": "aad.ZTQ0ZmUyMTMtY2I0ZS03ZWY1LWIzNGItZTMxNTJlMGNiYWVm"
508 | },
509 | "drafts": [],
510 | "queue": {
511 | "_links": {
512 | "self": {
513 | "href": "https://dev.azure.com/MrRodant/_apis/build/Queues/81"
514 | }
515 | },
516 | "id": 81,
517 | "name": "Hosted VS2017",
518 | "url": "https://dev.azure.com/MrRodant/_apis/build/Queues/81",
519 | "pool": {
520 | "id": 4,
521 | "name": "Hosted VS2017",
522 | "isHosted": true
523 | }
524 | },
525 | "id": 9,
526 | "name": "SmartHotel_Petchecker-Web",
527 | "path": "\\",
528 | "type": 2,
529 | "queueStatus": 0,
530 | "revision": 2,
531 | "createdDate": "2019-01-17T18:56:01.653Z"
532 | }
--------------------------------------------------------------------------------
/files/SmartHotel/WhiteSourceBolt.json:
--------------------------------------------------------------------------------
1 | {"options":[{"enabled":false,"definition":{"id":"5d58cc01-7c75-450c-be18-a388ddb129ec"},"inputs":{"branchFilters":"[\"+refs/heads/*\"]","additionalFields":"{}"}},{"enabled":false,"definition":{"id":"a9db38f9-9fdc-478c-b0f9-464221e58316"},"inputs":{"workItemType":"722186","assignToRequestor":"true","additionalFields":"{}"}}],"triggers":[{"branchFilters":["+refs/heads/master"],"pathFilters":[],"batchChanges":false,"maxConcurrentBuildsPerBranch":1,"pollingInterval":0,"triggerType":2}],"variables":{"system.debug":{"value":"false","allowOverride":true}},"retentionRules":[{"branches":["+refs/heads/*"],"artifacts":[],"artifactTypesToDelete":["FilePath","SymbolStore"],"daysToKeep":10,"minimumToKeep":1,"deleteBuildRecord":true,"deleteTestResults":true}],"properties":{},"tags":[],"_links":{"self":{"href":"https://mrrodant.visualstudio.com/e1780778-4290-42af-a5d6-b43a42dc24db/_apis/build/Definitions/7?revision=1"},"web":{"href":"https://mrrodant.visualstudio.com/e1780778-4290-42af-a5d6-b43a42dc24db/_build/definition?definitionId=7"},"editor":{"href":"https://mrrodant.visualstudio.com/e1780778-4290-42af-a5d6-b43a42dc24db/_build/designer?id=7&_a=edit-build-definition"},"badge":{"href":"https://mrrodant.visualstudio.com/e1780778-4290-42af-a5d6-b43a42dc24db/_apis/build/status/7"}},"jobAuthorizationScope":1,"jobTimeoutInMinutes":60,"jobCancelTimeoutInMinutes":5,"process":{"phases":[{"steps":[{"environment":{},"enabled":true,"continueOnError":false,"alwaysRun":false,"displayName":"npm install","timeoutInMinutes":0,"refName":"Npm1","task":{"id":"fe47e961-9fa8-4106-8639-368c022d43ad","versionSpec":"1.*","definitionType":"task"},"inputs":{"command":"install","workingDir":"","verbose":"false","customCommand":"","customRegistry":"useNpmrc","customFeed":"","customEndpoint":"","publishRegistry":"useExternalRegistry","publishFeed":"","publishEndpoint":""}},{"environment":{},"enabled":true,"continueOnError":false,"alwaysRun":false,"displayName":"Maven","timeoutInMinutes":0,"refName":"Maven2","task":{"id":"ac4ee482-65da-4485-a532-7b085873e532","versionSpec":"1.*","definitionType":"task"},"inputs":{"mavenPOMFile":"pom.xml","goals":"package","options":"","publishJUnitResults":"true","testResultsFiles":"**/TEST-*.xml","testRunTitle":"","codeCoverageTool":"None","classFilter":"","classFilesDirectories":"","srcDirectories":"","failIfCoverageEmpty":"false","javaHomeSelection":"JDKVersion","jdkVersion":"default","jdkUserInputPath":"","jdkArchitecture":"x86","mavenVersionSelection":"Default","mavenPath":"","mavenSetM2Home":"false","mavenOpts":"-Xmx1024m","mavenFeedAuthenticate":"true","sqAnalysisEnabled":"false","sqConnectedServiceName":"","sqProjectName":"","sqProjectKey":"","sqProjectVersion":"","sqDbDetailsRequired":"false","sqDbUrl":"","sqDbUsername":"","sqDbPassword":"","sqAnalysisIncludeFullReport":"true","sqAnalysisBreakBuildIfQualityGateFailed":"false","checkstyleAnalysisEnabled":"false","pmdAnalysisEnabled":"false","findbugsAnalysisEnabled":"false"}},{"environment":{},"enabled":true,"continueOnError":false,"alwaysRun":false,"displayName":"WhiteSource Bolt","timeoutInMinutes":0,"refName":"WhiteSourceBolt3","task":{"id":"521d1e00-f5fb-4b73-a93b-b2fe88a9af91","versionSpec":"","definitionType":"task"},"inputs":{"cwd":"WebGoat","advance":"false","exclude":"","extraFolders":""}},{"environment":{},"enabled":true,"continueOnError":false,"alwaysRun":false,"displayName":"Copy Files","timeoutInMinutes":0,"refName":"CopyFiles4","task":{"id":"5bfb729a-a7c8-4a78-a7c3-8d717bb7c13c","versionSpec":"2.*","definitionType":"task"},"inputs":{"SourceFolder":"$(build.sourcesdirectory)","Contents":"**/*.jar","TargetFolder":"$(build.artifactstagingdirectory)","CleanTargetFolder":"false","OverWrite":"false","flattenFolders":"false"}},{"environment":{},"enabled":true,"continueOnError":false,"alwaysRun":false,"displayName":"Publish Artifact","timeoutInMinutes":0,"refName":"PublishBuildArtifacts5","task":{"id":"2ff763a7-ce83-4e1f-bc89-0ae63477cebe","versionSpec":"1.*","definitionType":"task"},"inputs":{"PathtoPublish":"$(build.artifactstagingdirectory)","ArtifactName":"drop","ArtifactType":"Container","TargetPath":"\\\\my\\share\\$(Build.DefinitionName)\\$(Build.BuildNumber)","Parallel":"false","ParallelCount":"8"}}],"name":null,"refName":"Phase_1","target":{"executionOptions":null,"allowScriptsAuthAccessOption":false,"type":1},"jobAuthorizationScope":0}],"type":1},"repository":{"properties":{"cleanOptions":"0","labelSources":"0","labelSourcesFormat":"$(build.buildNumber)","reportBuildStatus":"true","gitLfsSupport":"false","skipSyncSource":"false","checkoutNestedSubmodules":"false","fetchDepth":"0"},"id":"26749a8c-aa55-431a-93e1-e5be81cc4a1a","type":"TfsGit","name":"WebGoat","url":"https://mrrodant.visualstudio.com/MsReadyWhiteSource/_git/WebGoat","defaultBranch":"refs/heads/master","clean":"false","checkoutSubmodules":false},"processParameters":{},"quality":1,"authoredBy":{"displayName":"Rodrigo Antunes","url":"https://app.vssps.visualstudio.com/A54ce9761-51bb-4a26-a4f5-1c19a57402b8/_apis/Identities/0dbf009e-02df-4433-97f7-dafbf974ddd1","_links":{"avatar":{"href":"https://mrrodant.visualstudio.com/_apis/GraphProfile/MemberAvatars/aad.ZTQ0ZmUyMTMtY2I0ZS03ZWY1LWIzNGItZTMxNTJlMGNiYWVm"}},"id":"0dbf009e-02df-4433-97f7-dafbf974ddd1","uniqueName":"rodant@microsoft.com","imageUrl":"https://mrrodant.visualstudio.com/_api/_common/identityImage?id=0dbf009e-02df-4433-97f7-dafbf974ddd1","descriptor":"aad.ZTQ0ZmUyMTMtY2I0ZS03ZWY1LWIzNGItZTMxNTJlMGNiYWVm"},"drafts":[],"queue":{"_links":{"self":{"href":"https://mrrodant.visualstudio.com/_apis/build/Queues/68"}},"id":68,"name":"Hosted","url":"https://mrrodant.visualstudio.com/_apis/build/Queues/68","pool":{"id":2,"name":"Hosted","isHosted":true}},"id":7,"name":"WhiteSourceBolt","url":"https://mrrodant.visualstudio.com/e1780778-4290-42af-a5d6-b43a42dc24db/_apis/build/Definitions/7?revision=1","uri":"vstfs:///Build/Definition/7","path":"\\","type":2,"queueStatus":0,"revision":1,"createdDate":"2019-01-17T17:41:13.377Z","project":{"id":"e1780778-4290-42af-a5d6-b43a42dc24db","name":"MsReadyWhiteSource","description":"Generated by Azure DevOps Demo Generator","url":"https://mrrodant.visualstudio.com/_apis/projects/e1780778-4290-42af-a5d6-b43a42dc24db","state":1,"revision":98,"visibility":0,"lastUpdateTime":"2019-01-17T17:40:57.767Z"}}
--------------------------------------------------------------------------------
/files/SonarQubeContainers.yml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: PersistentVolumeClaim
3 | metadata:
4 | name: sonar-data
5 | spec:
6 | accessModes:
7 | - ReadWriteOnce
8 | storageClassName: default
9 | resources:
10 | requests:
11 | storage: 31Gi
12 |
--------------------------------------------------------------------------------
/img/ARMOutputs-install.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/ARMOutputs-install.png
--------------------------------------------------------------------------------
/img/ARMOutputs-navigate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/ARMOutputs-navigate.png
--------------------------------------------------------------------------------
/img/ARMOutputs-success.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/ARMOutputs-success.png
--------------------------------------------------------------------------------
/img/Add-OWASP-tasks-Report.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/Add-OWASP-tasks-Report.png
--------------------------------------------------------------------------------
/img/Add-OWASP-tasks-navigate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/Add-OWASP-tasks-navigate.png
--------------------------------------------------------------------------------
/img/Add-OWASP-tasks-search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/Add-OWASP-tasks-search.png
--------------------------------------------------------------------------------
/img/Add-OWASP-tasks.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/Add-OWASP-tasks.png
--------------------------------------------------------------------------------
/img/AddArtifact.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AddArtifact.png
--------------------------------------------------------------------------------
/img/AllReposImported.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AllReposImported.png
--------------------------------------------------------------------------------
/img/Artifact-owasp-zap-vsts-extension.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/Artifact-owasp-zap-vsts-extension.png
--------------------------------------------------------------------------------
/img/AzDevOpsAnalyticsViews-ApprovedBugs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzDevOpsAnalyticsViews-ApprovedBugs.png
--------------------------------------------------------------------------------
/img/AzDevOpsAnalyticsViews-addfield.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzDevOpsAnalyticsViews-addfield.png
--------------------------------------------------------------------------------
/img/AzDevOpsAnalyticsViews-history.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzDevOpsAnalyticsViews-history.png
--------------------------------------------------------------------------------
/img/AzDevOpsAnalyticsViews-newview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzDevOpsAnalyticsViews-newview.png
--------------------------------------------------------------------------------
/img/AzDevOpsAnalyticsViews.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzDevOpsAnalyticsViews.png
--------------------------------------------------------------------------------
/img/AzDevOpsBugBash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzDevOpsBugBash.png
--------------------------------------------------------------------------------
/img/AzDevOpsOrgContinue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzDevOpsOrgContinue.png
--------------------------------------------------------------------------------
/img/AzDevOpsOrgSignIn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzDevOpsOrgSignIn.png
--------------------------------------------------------------------------------
/img/AzDevOpsOrgStart.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzDevOpsOrgStart.png
--------------------------------------------------------------------------------
/img/AzDevOpsPreviewFeatures-Activate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzDevOpsPreviewFeatures-Activate.png
--------------------------------------------------------------------------------
/img/AzDevOpsPreviewFeatures.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzDevOpsPreviewFeatures.png
--------------------------------------------------------------------------------
/img/AzureCloudShell-ready.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureCloudShell-ready.png
--------------------------------------------------------------------------------
/img/AzureCloudShell.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureCloudShell.png
--------------------------------------------------------------------------------
/img/AzureCloudShellBash-ready.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureCloudShellBash-ready.png
--------------------------------------------------------------------------------
/img/AzureCostInsightsMarketplace.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureCostInsightsMarketplace.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Builds-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Builds-01.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Builds-02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Builds-02.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Builds-03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Builds-03.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Builds-031.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Builds-031.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Builds-04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Builds-04.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Builds-05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Builds-05.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Builds-Run-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Builds-Run-01.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Builds-Run-end.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Builds-Run-end.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Builds-WhiteSourceBolt-report.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Builds-WhiteSourceBolt-report.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Builds-WhiteSourceBolt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Builds-WhiteSourceBolt.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Builds-trigger.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Builds-trigger.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-CreateProject-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-CreateProject-01.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-CreateProject-02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-CreateProject-02.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-ImportRepo-CloneURL.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-ImportRepo-CloneURL.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-ImportRepo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-ImportRepo.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Releases-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Releases-01.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Releases-02.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Releases-02.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Releases-03.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Releases-03.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Releases-04.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Releases-04.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Releases-05.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Releases-05.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Releases-06.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Releases-06.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Releases-07.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Releases-07.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Releases-08.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Releases-08.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Releases-09.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Releases-09.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Releases-10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Releases-10.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Releases-CheckOutput-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Releases-CheckOutput-1.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Releases-CheckOutput-deploytask.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Releases-CheckOutput-deploytask.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Releases-CheckOutput-logs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Releases-CheckOutput-logs.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Releases-CheckOutput-site.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Releases-CheckOutput-site.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Releases-Edit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Releases-Edit.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Releases-Run-create.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Releases-Run-create.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Releases-Run-executing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Releases-Run-executing.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Releases-Run.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Releases-Run.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Releases-add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Releases-add.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Releases-delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Releases-delete.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Releases-trigger.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Releases-trigger.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Repo-commit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Repo-commit.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-Repo-edit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-Repo-edit.png
--------------------------------------------------------------------------------
/img/AzureDevOpsLab-SignIn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureDevOpsLab-SignIn.png
--------------------------------------------------------------------------------
/img/AzureSubscriptionAvailable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureSubscriptionAvailable.png
--------------------------------------------------------------------------------
/img/AzureSubscriptionSelect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/AzureSubscriptionSelect.png
--------------------------------------------------------------------------------
/img/BuildListAfterImports.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/BuildListAfterImports.png
--------------------------------------------------------------------------------
/img/CloneRepo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/CloneRepo.png
--------------------------------------------------------------------------------
/img/CloudShellStorage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/CloudShellStorage.png
--------------------------------------------------------------------------------
/img/CloudShellStorageAdvanced.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/CloudShellStorageAdvanced.png
--------------------------------------------------------------------------------
/img/CommandLine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/CommandLine.png
--------------------------------------------------------------------------------
/img/CostInsights-Import-Build.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/CostInsights-Import-Build.png
--------------------------------------------------------------------------------
/img/CostInsights-Import-finish.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/CostInsights-Import-finish.png
--------------------------------------------------------------------------------
/img/CostInsights-Import.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/CostInsights-Import.png
--------------------------------------------------------------------------------
/img/CostInsights-configuration.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/CostInsights-configuration.png
--------------------------------------------------------------------------------
/img/CostInsights-resourcetype.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/CostInsights-resourcetype.png
--------------------------------------------------------------------------------
/img/CostInsights-run.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/CostInsights-run.png
--------------------------------------------------------------------------------
/img/CostInsights-subscription.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/CostInsights-subscription.png
--------------------------------------------------------------------------------
/img/Dashboard-AddWidget.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/Dashboard-AddWidget.png
--------------------------------------------------------------------------------
/img/Dashboard-SearchWidget.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/Dashboard-SearchWidget.png
--------------------------------------------------------------------------------
/img/EmptyDevOpsOrg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/EmptyDevOpsOrg.png
--------------------------------------------------------------------------------
/img/Import-OWASP-repo-navigation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/Import-OWASP-repo-navigation.png
--------------------------------------------------------------------------------
/img/Import-OWASP-repo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/Import-OWASP-repo.png
--------------------------------------------------------------------------------
/img/LaunchMicrosoftTeams.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/LaunchMicrosoftTeams.png
--------------------------------------------------------------------------------
/img/NGINX-ZAP-Report.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/NGINX-ZAP-Report.png
--------------------------------------------------------------------------------
/img/OWASP-Attach-Report-Navigate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/OWASP-Attach-Report-Navigate.png
--------------------------------------------------------------------------------
/img/OWASP-Attach-Report.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/OWASP-Attach-Report.png
--------------------------------------------------------------------------------
/img/OWASP-Repo-import.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/OWASP-Repo-import.png
--------------------------------------------------------------------------------
/img/OWASP-build.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/OWASP-build.png
--------------------------------------------------------------------------------
/img/OWASP-docker-pull.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/OWASP-docker-pull.png
--------------------------------------------------------------------------------
/img/OWASP-finish.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/OWASP-finish.png
--------------------------------------------------------------------------------
/img/OWASP-pipeline-dragdrop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/OWASP-pipeline-dragdrop.png
--------------------------------------------------------------------------------
/img/OWASP-pipeline.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/OWASP-pipeline.png
--------------------------------------------------------------------------------
/img/OwaspBuildConfirmCommit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/OwaspBuildConfirmCommit.png
--------------------------------------------------------------------------------
/img/PAT-token-create.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/PAT-token-create.png
--------------------------------------------------------------------------------
/img/PAT-token-navigate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/PAT-token-navigate.png
--------------------------------------------------------------------------------
/img/PAT-token-security.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/PAT-token-security.png
--------------------------------------------------------------------------------
/img/PAT-token-variable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/PAT-token-variable.png
--------------------------------------------------------------------------------
/img/PAT-token.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/PAT-token.png
--------------------------------------------------------------------------------
/img/PBI-Desktop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/PBI-Desktop.png
--------------------------------------------------------------------------------
/img/PowerBI-AzDevOps-ApprovedBugs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/PowerBI-AzDevOps-ApprovedBugs.png
--------------------------------------------------------------------------------
/img/PowerBI-AzDevOps-Login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/PowerBI-AzDevOps-Login.png
--------------------------------------------------------------------------------
/img/PowerBI-AzDevOps-OrgDetails.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/PowerBI-AzDevOps-OrgDetails.png
--------------------------------------------------------------------------------
/img/PowerBI-AzDevOps-SignedIn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/PowerBI-AzDevOps-SignedIn.png
--------------------------------------------------------------------------------
/img/PowerBI-AzDevOps-getData.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/PowerBI-AzDevOps-getData.png
--------------------------------------------------------------------------------
/img/PowerBI-AzDevOps.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/PowerBI-AzDevOps.png
--------------------------------------------------------------------------------
/img/PowerBI-MyWorkspace.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/PowerBI-MyWorkspace.png
--------------------------------------------------------------------------------
/img/PowerBI-fields.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/PowerBI-fields.png
--------------------------------------------------------------------------------
/img/PowerBi-WorkItem-Count.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/PowerBi-WorkItem-Count.png
--------------------------------------------------------------------------------
/img/Powershell-Download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/Powershell-Download.png
--------------------------------------------------------------------------------
/img/PublishPowerBI-Workspace.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/PublishPowerBI-Workspace.png
--------------------------------------------------------------------------------
/img/RGName.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/RGName.png
--------------------------------------------------------------------------------
/img/ReleasePipeline_SetAgentPool.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/ReleasePipeline_SetAgentPool.png
--------------------------------------------------------------------------------
/img/RemoveArtifact.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/RemoveArtifact.png
--------------------------------------------------------------------------------
/img/SPNCreation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/SPNCreation.png
--------------------------------------------------------------------------------
/img/SSH-ZAP-test.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/SSH-ZAP-test.png
--------------------------------------------------------------------------------
/img/SSH-service-connection.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/SSH-service-connection.png
--------------------------------------------------------------------------------
/img/Save.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/Save.png
--------------------------------------------------------------------------------
/img/ServiceConnectionConfig.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/ServiceConnectionConfig.png
--------------------------------------------------------------------------------
/img/ServiceConnectionFinish.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/ServiceConnectionFinish.png
--------------------------------------------------------------------------------
/img/ServiceConnections.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/ServiceConnections.png
--------------------------------------------------------------------------------
/img/SmartHotel-Add-SSH-Task.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/SmartHotel-Add-SSH-Task.png
--------------------------------------------------------------------------------
/img/SmartHotel-Configure-SSH-Task-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/SmartHotel-Configure-SSH-Task-1.png
--------------------------------------------------------------------------------
/img/SmartHotel-DockerHost-AddServiceConnection.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/SmartHotel-DockerHost-AddServiceConnection.png
--------------------------------------------------------------------------------
/img/SmartHotel-DockerHost.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/SmartHotel-DockerHost.png
--------------------------------------------------------------------------------
/img/SmartHotelRepoWaitToFinish.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/SmartHotelRepoWaitToFinish.png
--------------------------------------------------------------------------------
/img/TeamAzDevOpsConfigEventType.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/TeamAzDevOpsConfigEventType.png
--------------------------------------------------------------------------------
/img/TeamAzDevOpsConfigOK.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/TeamAzDevOpsConfigOK.png
--------------------------------------------------------------------------------
/img/TeamAzDevOpsConfigOrg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/TeamAzDevOpsConfigOrg.png
--------------------------------------------------------------------------------
/img/TeamAzDevOpsConnectorInstall.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/TeamAzDevOpsConnectorInstall.png
--------------------------------------------------------------------------------
/img/TeamCreateFromScratch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/TeamCreateFromScratch.png
--------------------------------------------------------------------------------
/img/TeamsAddMembers.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/TeamsAddMembers.png
--------------------------------------------------------------------------------
/img/TeamsAddTab.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/TeamsAddTab.png
--------------------------------------------------------------------------------
/img/TeamsAzDevOpsConfigFinish.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/TeamsAzDevOpsConfigFinish.png
--------------------------------------------------------------------------------
/img/TeamsAzDevOpsConnector.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/TeamsAzDevOpsConnector.png
--------------------------------------------------------------------------------
/img/TeamsConfigure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/TeamsConfigure.png
--------------------------------------------------------------------------------
/img/TeamsConnector.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/TeamsConnector.png
--------------------------------------------------------------------------------
/img/TeamsCreateNewTeam.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/TeamsCreateNewTeam.png
--------------------------------------------------------------------------------
/img/TeamsCreateTeam.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/TeamsCreateTeam.png
--------------------------------------------------------------------------------
/img/TeamsDashboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/TeamsDashboard.png
--------------------------------------------------------------------------------
/img/TeamsFinalconfig.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/TeamsFinalconfig.png
--------------------------------------------------------------------------------
/img/TeamsPrivateTeam.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/TeamsPrivateTeam.png
--------------------------------------------------------------------------------
/img/TestQueueBuilds.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/TestQueueBuilds.png
--------------------------------------------------------------------------------
/img/VariablesUpdate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/VariablesUpdate.png
--------------------------------------------------------------------------------
/img/WhiteSourceBolt-freeaccount.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/WhiteSourceBolt-freeaccount.png
--------------------------------------------------------------------------------
/img/WhiteSourceBolt-success.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/WhiteSourceBolt-success.png
--------------------------------------------------------------------------------
/img/active-bugs-field-criteria.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/active-bugs-field-criteria.png
--------------------------------------------------------------------------------
/img/active-bugs-general.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/active-bugs-general.png
--------------------------------------------------------------------------------
/img/active-bugs-history.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/active-bugs-history.png
--------------------------------------------------------------------------------
/img/active-bugs-team.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/active-bugs-team.png
--------------------------------------------------------------------------------
/img/active-bugs-verify-success.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/active-bugs-verify-success.png
--------------------------------------------------------------------------------
/img/active-bugs-verify.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/active-bugs-verify.png
--------------------------------------------------------------------------------
/img/add_channel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/add_channel.png
--------------------------------------------------------------------------------
/img/add_kanbanboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/add_kanbanboard.png
--------------------------------------------------------------------------------
/img/add_members.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/add_members.png
--------------------------------------------------------------------------------
/img/add_tab.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/add_tab.png
--------------------------------------------------------------------------------
/img/add_website.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/add_website.png
--------------------------------------------------------------------------------
/img/add_website2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/add_website2.png
--------------------------------------------------------------------------------
/img/add_website3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/add_website3.png
--------------------------------------------------------------------------------
/img/addwidget.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/addwidget.gif
--------------------------------------------------------------------------------
/img/azuredevops_activity.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/azuredevops_activity.png
--------------------------------------------------------------------------------
/img/azuredevops_connector.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/azuredevops_connector.png
--------------------------------------------------------------------------------
/img/azuredevops_tab.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/azuredevops_tab.png
--------------------------------------------------------------------------------
/img/buildpipeline.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/buildpipeline.png
--------------------------------------------------------------------------------
/img/card-active-bugs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/card-active-bugs.png
--------------------------------------------------------------------------------
/img/channel_added.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/channel_added.png
--------------------------------------------------------------------------------
/img/check-of-is-current.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/check-of-is-current.png
--------------------------------------------------------------------------------
/img/choose-count-distinct.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/choose-count-distinct.png
--------------------------------------------------------------------------------
/img/choose-view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/choose-view.png
--------------------------------------------------------------------------------
/img/connector_configuration.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/connector_configuration.png
--------------------------------------------------------------------------------
/img/connectors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/connectors.png
--------------------------------------------------------------------------------
/img/conversation_files.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/conversation_files.png
--------------------------------------------------------------------------------
/img/conversations.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/conversations.png
--------------------------------------------------------------------------------
/img/create_channel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/create_channel.png
--------------------------------------------------------------------------------
/img/create_team.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/create_team.png
--------------------------------------------------------------------------------
/img/create_team2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/create_team2.png
--------------------------------------------------------------------------------
/img/create_team3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/create_team3.png
--------------------------------------------------------------------------------
/img/fields-common.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/fields-common.png
--------------------------------------------------------------------------------
/img/filter-priority-1-and-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/filter-priority-1-and-2.png
--------------------------------------------------------------------------------
/img/filter-priority-legend.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/filter-priority-legend.png
--------------------------------------------------------------------------------
/img/flow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/flow.png
--------------------------------------------------------------------------------
/img/get-data-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/get-data-2.png
--------------------------------------------------------------------------------
/img/install_connector.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/install_connector.png
--------------------------------------------------------------------------------
/img/iscurrent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/iscurrent.png
--------------------------------------------------------------------------------
/img/kanban_selectorg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/kanban_selectorg.png
--------------------------------------------------------------------------------
/img/kanban_selectorg2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/kanban_selectorg2.png
--------------------------------------------------------------------------------
/img/kanbanboard_teams.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/kanbanboard_teams.png
--------------------------------------------------------------------------------
/img/launch_teams.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/launch_teams.png
--------------------------------------------------------------------------------
/img/manage_connector.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/manage_connector.png
--------------------------------------------------------------------------------
/img/nginx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/nginx.png
--------------------------------------------------------------------------------
/img/onenote.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/onenote.png
--------------------------------------------------------------------------------
/img/open-analytics-views-vert.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/open-analytics-views-vert.png
--------------------------------------------------------------------------------
/img/powerbi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/powerbi.png
--------------------------------------------------------------------------------
/img/publish-powerbi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/publish-powerbi.png
--------------------------------------------------------------------------------
/img/screen2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/screen2.png
--------------------------------------------------------------------------------
/img/select-date.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/select-date.png
--------------------------------------------------------------------------------
/img/select-line-chart-work-id.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/select-line-chart-work-id.png
--------------------------------------------------------------------------------
/img/select_kanbanboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/select_kanbanboard.png
--------------------------------------------------------------------------------
/img/specify-account.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/specify-account.png
--------------------------------------------------------------------------------
/img/upload_files.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/upload_files.png
--------------------------------------------------------------------------------
/img/wi-type-picker-bugs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/wi-type-picker-bugs.png
--------------------------------------------------------------------------------
/img/wikiasweb.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/wikiasweb.png
--------------------------------------------------------------------------------
/img/wikiasweb2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/wikiasweb2.png
--------------------------------------------------------------------------------
/img/wikipage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/wikipage.png
--------------------------------------------------------------------------------
/img/workitems.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/workitems.png
--------------------------------------------------------------------------------
/img/workitems2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/devsecopsbiz/cookbook/d9c8b980a427a7e55cf0f08f33769f575d786b24/img/workitems2.png
--------------------------------------------------------------------------------
/intro.md:
--------------------------------------------------------------------------------
1 | [](https://dev.azure.com/DevStarOpsSandbox/devsecopsbiz-session/_build/latest?definitionId=14&branchName=master)
2 |
3 | # Microsoft Ready, July 2019
4 | ## R-AIST307-P1: Dev*Ops: Hands on DevSecOps and DevOpsBiz cookbook
5 |
6 | **Welcome to Dev*Ops: Hands on DevSecOps and DevOpsBiz cookbook!**
7 |
8 | DevOps has been propagating throughout the world as the place to be in order to be Agile and successful.
9 | As maturity sets in, new challenges start to come up, namely the security role and the integration with the business teams.
10 | As such, buzz words like _DevSecOps_ and even _DevSecOpsBiz_ are becoming more popular in discussions.
11 |
12 | This lab session builds on top of _R-AIST216 Dev*Ops: Digging into the trends of DevSecOps and DevOpsBiz_, allowing you to experience first hand the construction of a real world scenario.
13 |
14 | ## Lab steps
15 | * Start by [creating an Azure DevOps Project](0.md) for us to work with
16 | * Now let's [setup the build and release for the application](1.md)
17 | * Next, we'll want to [include Security into the pipeline](2.md)
18 | * To wrap up, let's [gather Business information](3.md)
19 | * And share it with a broader team and stakeholders using [Power BI](4.md) and [Microsoft Teams](5.md)
20 |
--------------------------------------------------------------------------------
/whitelist_spellchecker.txt:
--------------------------------------------------------------------------------
1 | CICD
2 | preconfigured
3 | dropdown
4 | freeaccount
5 | repos
6 | Repo
7 | vsts
8 | OWASP
9 | Petchecker
10 | deploytask
11 | appsettings
12 | quickstart
13 | eastus
14 | azurecli
15 | NGINX
16 | fqdns
17 | azureuser
18 | mypublicdns
19 | cloudapp
20 | testreport
21 | attachreport
22 | filepath
23 | addwidget
24 | iscurrent
25 | powerbi
26 | dataset
27 | dragdrop
28 | Kanban
29 | kanbanboard
30 | AIST
31 | addfield
32 | resourcetype
33 | newview
34 | addfield
35 | azuredevops
36 | selectorg
37 | Finalconfig
38 |
--------------------------------------------------------------------------------