├── LICENSE
├── README.md
├── arm template
├── Install-OctopusDeploy.ps1
├── azuredeploy.json
└── azuredeploy.parameters.json
└── images
├── 1.png
├── A3.png
├── APIKey.png
├── AccountOctopusDeploy.png
├── AddAccount.png
├── AddDeploymentTargetsOctopusDeploy.png
├── AddEnvironment.png
├── AddProject.png
├── AddStep.png
├── AddWebAppStep.png
├── AddanAccount.png
├── Azure DevOps Services12.png
├── Azure.png
├── AzureDevOpsServices15_18.png
├── AzureDevOpsServices15_19.png
├── AzureDevOpsServices15_20.png
├── Browse.png
├── Build Complete.png
├── BuildAzureDevOpsServices1.png
├── BuildAzureDevOpsServices2.png
├── BuildAzureDevOpsServices3.png
├── BuildDefinition.png
├── BuildPipelines.png
├── BuildProgress.png
├── Builds11.png
├── CD-Create.png
├── CD-Octopus.png
├── Changes.png
├── CloudShellMicrosoftAzure.png
├── Create New Release.png
├── CreateAccount.png
├── CreateEnvironment.png
├── Createdeploymenttarget.png
├── Createdeploymenttarget2.png
├── DashboardMicrosoftAzure2.png
├── DashboardMicrosoftAzure3.png
├── DashboardMicrosoftAzure5.png
├── DashboardMicrosoftAzure6.png
├── Define Process.png
├── DefineProcess.png
├── DemoGen.png
├── DemoGenerator9.png
├── Deploy.png
├── Deploy2Dev.png
├── DeployOctopus.png
├── DeploymentSuccessful.png
├── Dev.png
├── DevEnvironment.png
├── DevOpsDemoGenerator10.png
├── DownloadCertificate.png
├── EditBD.png
├── EditCommit.png
├── EditFile.png
├── Endpoint.png
├── EndpointSuccess.png
├── Generate_new.png
├── IndexcshtmlRepos2.png
├── IndexcshtmlRepos3.png
├── Key.png
├── Microsoft Azure.png
├── MicrosoftAzure.png
├── MicrosoftAzure1.png
├── MicrosoftAzure15_7.png
├── MicrosoftAzure15_8.png
├── MicrosoftAzure15_9.png
├── MicrosoftAzure2.png
├── MicrosoftAzure24.png
├── MicrosoftAzure3.png
├── MicrosoftAzure4.png
├── MicrosoftAzure6.png
├── NewDeploymentTarget.png
├── O10.png
├── O11.png
├── O12.png
├── O8.png
├── O9.png
├── OctopusDeploy15_1.png
├── OctopusDeploy15_10.png
├── OctopusDeploy15_11.png
├── OctopusDeploy15_12.png
├── OctopusDeploy15_13.png
├── OctopusDeploy15_14.png
├── OctopusDeploy15_15.png
├── OctopusDeploy15_16.png
├── OctopusDeploy15_17.png
├── OctopusDeploy15_2.png
├── OctopusDeploy15_3.png
├── OctopusDeploy15_4.png
├── OctopusDeploy15_5.png
├── OctopusDeploy15_6.png
├── OctopusDeploy24.png
├── OctopusDeploy5.png
├── OctopusDeploy7.png
├── OctopusDeploy8.png
├── OctopusRepos1.png
├── PHPApp.png
├── PUProject.png
├── PartsUnlimited.png
├── Pipelines.png
├── Pkg Uploaded.png
├── Pkg.png
├── PkgID.png
├── Project.png
├── Project3.png
├── Project4.png
├── Projects.png
├── QBuild.png
├── Release.png
├── Repos.png
├── Repos2.png
├── Resources.png
├── Save.png
├── SaveRelease.png
├── Update.png
├── Update1.png
├── Verification Failed.png
├── VerificationSuccess.png
├── accountOctopusDeploy2.png
├── accountverifyOctopusDeploy.png
├── azureserviceprincipal.png
├── click_create.png
├── click_create2.png
├── copyfiles.png
├── create_RG.png
├── createoctopus.png
├── demogen_create.png
├── dotnetcore.png
├── endpointName.png
├── gear.png
├── icrosoft Azure.png
├── icrosoftAzure.png
├── octopus_details.png
├── octopus_login.png
├── octopuspackage.png
├── octopusportal.png
├── project2.png
├── project5.png
├── project6.png
├── pushpackage.png
├── releaseoctopus.png
├── server_details.png
├── summary.png
├── userprofile.png
└── webapp.png
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 AZURE PROJECTS
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Automating Deployments from Azure Repos with Octopus Deploy
3 | layout: page
4 | sidebar: vsts2
5 | permalink: /labs/vstsextend/octopus/
6 | folder: /labs/vstsextend/octopus/
7 | ---
8 |
9 | ## Overview
10 |
11 |
12 | [Octopus Deploy](https://Octopus.com) is an automated deployment server that makes it easy to automate deployment of ASP.NET web applications, Java applications, NodeJS application and custom scripts to multiple environments.
13 |
14 |
17 |
18 | Azure DevOps will be handle the build/CI automation part of the process and will work with Octopus Deploy to handle deployment orchestration. The Octopus setup contains a central deployment server, along with “Tentacle” agents that run on any target VMs where deployment will take place.
19 |
20 | Here, we will see how to use Octopus Deploy in conjunction with Azure DevOps to deploy in the cloud in a repeatable and reliable way.
21 |
22 | ## Before you begin
23 |
24 | 1. Refer the [Getting Started](../Setup/) before you begin to follow the below exercises.
25 |
26 | ## Setting up the Environment
27 |
28 | Octopus Deploy has two components:
29 |
30 | * **Octopus Server** - a centralized web front-end that orchestrates deployments , and
31 | * **Tentacle** - agent that needs to be on every target endpoint.
32 |
33 | We will spin up an Octopus server on Azure. Click the **Deploy to Azure** button below to provision an Octopus Server.
34 |
35 | [](https://portal.azure.com/#create/octopus.octopusdeployoctopus-deploy){:target="_blank"}
36 |
37 | 1. It takes approximately 15 minutes for the deployment to complete. Once the deployment is successful, connect to Octopus server using DNS, and login with Octopus Admin username and password.
38 |
39 | 
40 |
41 | 1. You will see the Octopus deploy web portal.
42 |
43 | 
44 |
45 | ## Generating Service Principal Names(SPN) details from Azure
46 |
47 | We need to generate SPN details to get **Tenant ID**, **Application ID** and **Application Password/Key** which will be used in the later part of the lab.
48 |
49 | 1. Login to your Azure account and click on **Cloud Shell**.
50 |
51 | 
52 |
53 | 1. Select **Bash** or **Powershell** to run the command which will generate the SPN details.
54 |
55 | 
56 |
57 | 1. Create Storage account as Azure Cloud Shell requires an Azure file share to persist files, If you already have one select it or create new. Select the subscription and click on **Create storage**.
58 | 
59 |
60 | 1. Once the storage account is provisioned, enter the following command by replacing ServicePrincipalName with your desired value.
61 |
62 | `az ad sp create-for-rbac -n ServicePrincipalName`
63 |
64 | It will give you a JSON output as shown in the image. Copy the output to notepad or text file. You will need them later.
65 |
66 | 
67 |
68 | ## Setting up the Deployment Target
69 |
70 | Since, the deployment target is an Azure WebApp, we need to create one.
71 |
72 | Click the button below to provision an Azure WebApp.
73 |
74 | [](https://portal.azure.com/#create/Microsoft.WebSite){:target="_blank"}
75 |
76 | ## Generate Octopus API Key
77 |
78 | An *API key* is used to authenticate Azure DevOps with Octopus server. Using API key lets you keep your username and password a secret.
79 |
80 | 1. From the Octopus Deploy portal, select **Profile** under *User* menu.
81 |
82 | 
83 |
84 | 1. Select **My API Key** and click **New API Key** to create one. We will use the API Key to connect Octopus Deploy with Azure DevOps
85 |
86 | 
87 |
88 | 1. Specify a **purpose**, for instance, **Azure DevOps Integration** and click **Generate New**.
89 |
90 | 
91 |
92 | 1. Copy the API Key to clipboard and save this to a notepad as you might use it for future requests.
93 |
94 | 
95 |
96 | ## Setting up the Azure DevOps team project
97 |
98 | 1. Use [Azure DevOps Demo Generator](https://azuredevopsdemogenerator.azurewebsites.net/?Name=octopus&TemplateId=77370){:target="_blank"} to provision the project on your Azure DevOps Organization.
99 |
100 | ## Exercise 1: Configure Deployment Target in Octopus Server
101 |
102 | Let us create a deployment environment in Octopus server and link to Azure using Management Certificate. Environments are deployment targets consisting of machines or services used by Octopus Deploy to deploy applications. With Octopus Deploy, we can deploy applications to Windows servers, Linux servers, Microsoft Azure, or even an offline package drop.
103 |
104 | Grouping our deployment targets by environment lets you define your deployment processes and have Octopus deploy the right versions of our software to the right environments at the right time.
105 |
106 | In this lab, we are using **Azure App Service** as the deployment target.
107 |
108 | 1. On the Octopus portal dashboard, select **Create environments** to go into the **Infrastructure** page.
109 |
110 | 
111 |
112 | 1. Once inside, click **Add Environment**.
113 |
114 | 
115 |
116 | 1. Provide the environment name and click **Save**.
117 |
118 | 
119 |
120 | 1. Octopus Deploy provides first-class support for deploying Azure Cloud Services and Azure Web Applications. To deploy software to Azure, we must add our Azure subscription to Octopus Deploy, and then use the built-in step templates to deploy to the cloud. Once the environment is created, click on **Accounts** select **Azure Subscription** from **ADD ACCOUNT** dropdown.
121 |
122 |
123 | 
124 |
125 | 1. Octopus Deploy authenticates with Azure with one of the two methods:
126 |
127 | * To deploy to Azure Resource Manager (ARM), Octopus requires [**Azure Service Principal Account**](https://octopus.com/docs/infrastructure/azure/creating-an-azure-account/creating-an-azure-service-principal-account){:target="_blank"}.
128 |
129 | * To deploy to Cloud Services and Azure Web Apps, Octopus requires [**Azure Management Certificate**](https://octopus.com/docs/infrastructure/azure/creating-an-azure-account/creating-an-azure-management-certificate-account){:target="_blank"}.
130 |
131 | Enter the following details -
132 |
133 | * **Name**: Provide an account name
134 | * **Subscription ID**: Your [Azure Subscription ID](https://blogs.msdn.microsoft.com/mschray/2016/03/18/getting-your-azure-subscription-guid-new-portal/){:target="_blank"}
135 | * **Authentication Method**: Choose **Use a Service Principal**
136 | * **Tenant ID**, **Application ID**, **Application Password/Key**: Created earlier in the lab
137 |
138 |
139 | 
140 |
141 | 
142 |
143 | 1. Click **SAVE AND TEST** and notice that your account is verified.
144 |
145 | 
146 |
147 | 1. To add the deployment target, go to **Deployment Targets**, click on **ADD DEPLOYMENT TARGET**, select **Azure Web App** and click **NEXT**.
148 |
149 | 
150 |
151 | 
152 |
153 | 1. In **Create deployment target** page, provide **Display Name**, choose **Environment** from the dropdown, add **Target Roles**(Tags), select the **Account** which was created earlier and select **Azure Web App** from the dropdown as shown below and click **Save**..
154 |
155 | 
156 |
157 | 
158 |
159 | ## Exercise 2: Create Project in Octopus
160 |
161 | Let us create a Project in Octopus to deploy the package to **Azure App Service**. A [**Project**](https://octopus.com/docs/deployment-process/projects){:target="_blank"} is a collection of deployment steps and configuration variables that define how your software is deployed.
162 |
163 | 1. Go to the Octopus dashboard and click on **Create a project**.
164 |
165 | 
166 |
167 | 1. Click on **ADD PROJECT**, provide the project name, description and click on **SAVE**.
168 |
169 | 
170 |
171 | 
172 |
173 | 1. Once the project is created, click **Define your deployment process**. The [deployment process](https://octopus.com/docs/deploying-applications/deployment-process){:target="_blank"} is like a recipe for deploying your software.
174 |
175 | 
176 |
177 | 1. Click on **ADD STEP** to see a list of built-in step templates, custom step templates, and community contributed step templates.
178 |
179 | 
180 |
181 | 1. **Search** for **Azure Web App** template and click **Add**.
182 |
183 | 
184 |
185 | 1. Populate the step template with required details -
186 |
187 | * **Step Name** : A short, unique name for the template.
188 | * **On Behalf Of** : Choose the target role from the drop down that was created in previous exercise step **8**.
189 | * **Package ID** : Type-in as **Asp.netcore** (if you are providing different package ID, update it in Package Application task of the build definition)
190 |
191 | 
192 |
193 | 
194 |
195 | 1. Click **Save** to complete the project creation and its deployment process.
196 |
197 | ## Exercise 3: Triggering CI-CD
198 |
199 | In this exercise, we will package the ASP.NET Core application and push the package to Octopus Server. We will use build tasks of **Octopus Deploy Integration** extension which was installed during Team Project provisioning.
200 |
201 | | Tasks| Usage|
202 | |-------| ------|
203 | | **Restore**| dotnet command-line tool restores all the package dependencies like **ASP.NET Core Identity, ASP.NET Core session** etc. required to build this project|
204 | | **Build**| We will use dotnet command-line tool to build the project and its dependencies into a set of binaries|
205 | | **Publish**| We will use this task to create a package with published content for the web deployment|
206 | | **Package Application** | We will package the ASP.NET Core build output into a zip file with the version number|
207 | | **Push packages to Octopus**| The copied package will be pushed to Octopus server from the artifacts directory|
208 | | **Create Octopus Release**|Automates the creation of release in Octopus server. A release captures all the project and package details to be deployed over and over in a safe and repeatable way|
209 | | **Deploy Octopus Release**| Automates the deployment of release in Octopus server. A deployment is the execution of the steps to deploy a release to an environment. An individual release can be deployed numerous times to different environments|
210 |
211 | 1. Go to **Builds** under **Pipelines** tab, select **Octopus** build definition and click on **Edit**.
212 |
213 | 
214 |
215 |
216 | 1. In **Push Packages to Octopus** task, update **Octopus Deploy Server** field with the created endpoint value.
217 |
218 |
219 | 
220 |
221 | 1. In **Create Octopus Release** task, update **Octopus Deploy Server** field with the created endpoint value and choose the created **Project** from drop down.
222 |
223 | 
224 |
225 | 1. In **Deploy Octopus Release** task, update **Octopus Deploy Server** field with the created endpoint value, choose the appropriate values from the drop down for fields - **Project** and **Deploy to Environments** and **Save & Queue** the build definition.
226 |
227 | 
228 |
229 | 1. Navigate back to the **Build** tab see progress of the build.
230 |
231 | 
232 |
233 | 1. Once the build completes, go to Octopus portal project dashboard to see the release progress.
234 |
235 | 
236 |
237 | 1. Go to the created Azure Web App from your **Azure Portal** and click **Browse**.
238 |
239 | 
240 |
241 | 1. You will see the associated ASP.NET Core application up and running.
242 |
243 | 
244 |
245 |
246 | ## Summary
247 |
248 | The lab demonstrates how Azure Pipelines pick up a code commit, build the changes and push the deployment to Octopus which deploys to an Azure Web App.
249 |
--------------------------------------------------------------------------------
/arm template/Install-OctopusDeploy.ps1:
--------------------------------------------------------------------------------
1 | param (
2 | [string] $SqlDbConnectionString,
3 | [string] $LicenseFullName,
4 | [string] $LicenseOrganisationName,
5 | [string] $LicenseEmailAddress,
6 | [string] $OctopusAdminUsername,
7 | [string] $OctopusAdminPassword
8 | )
9 |
10 |
11 | $config = @{}
12 | $msiFileName = "Octopus.4.1.5-x64.msi"
13 | $downloadUrl = "https://download.octopusdeploy.com/octopus/Octopus.4.1.5-x64.msi"
14 | $installBasePath = "D:\Install\"
15 | $msiPath = $installBasePath + $msiFileName
16 | $msiLogPath = $installBasePath + $msiFileName + '.log'
17 | $installerLogPath = $installBasePath + 'Install-OctopusDeploy.ps1.log'
18 | $octopusLicenseUrl = "https://octopusdeploy.com/api/licenses/trial"
19 | $OFS = "`r`n"
20 |
21 | function Write-Log
22 | {
23 | param (
24 | [string] $message
25 | )
26 |
27 | $timestamp = ([System.DateTime]::UTCNow).ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss")
28 | Write-Output "[$timestamp] $message"
29 | }
30 |
31 | function Write-CommandOutput
32 | {
33 | param (
34 | [string] $output
35 | )
36 |
37 | if ($output -eq "") { return }
38 |
39 | Write-Output ""
40 | $output.Trim().Split("`n") |% { Write-Output "`t| $($_.Trim())" }
41 | Write-Output ""
42 | }
43 |
44 | function Get-Config
45 | {
46 | Write-Log "======================================"
47 | Write-Log " Get Config"
48 | Write-Log ""
49 | Write-Log "Parsing script parameters ..."
50 |
51 | $config.Add("sqlDbConnectionString", [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($SqlDbConnectionString)))
52 | $config.Add("licenseFullName", [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($LicenseFullName)))
53 | $config.Add("licenseOrganisationName", [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($LicenseOrganisationName)))
54 | $config.Add("licenseEmailAddress", [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($LicenseEmailAddress)))
55 | $config.Add("octopusAdminUsername", [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($OctopusAdminUsername)))
56 | $config.Add("octopusAdminPassword", [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($OctopusAdminPassword)))
57 |
58 | Write-Log "done."
59 | Write-Log ""
60 | }
61 |
62 | function Create-DataDisk
63 | {
64 | Write-Log "======================================"
65 | Write-Log " Create Data Disk"
66 | Write-Log ""
67 |
68 | $driveLetters = @('F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z')
69 | $allocateDriveLetters = (Get-Partition).DriveLetter
70 | $availableDriveLetters = $driveLetters |? {$_ -notin $allocateDriveLetters }
71 | $disk = (Get-Disk |? { $_.PartitionStyle -eq 'RAW' })[0]
72 | Write-Log "Found attached data disk with RAW partition."
73 |
74 | $driveLetter = $availableDriveLetters[0].ToString()
75 | Write-Log "Assigning drive letter $driveLetter."
76 | Write-Log "Formatting ..."
77 | $disk | Initialize-Disk -PartitionStyle MBR -PassThru | New-Partition -UseMaximumSize -DriveLetter $driveLetter | Format-Volume -FileSystem NTFS -NewFileSystemLabel "Octopus-DataDisk" -Confirm:$false -Force | Out-Null
78 | Write-Log "done."
79 |
80 | $path = $driveLetter + ':\Octopus\Artifacts'
81 | Write-Log "Creating '$path' ..."
82 | New-Item -Path $path -ItemType Directory | Out-Null
83 | $config.Add('octopusArtifactsPath', $path)
84 | Write-Log "done."
85 |
86 | $path = $driveLetter + ':\Octopus\TaskLogs'
87 | Write-Log "Creating '$path' ..."
88 | New-Item -Path $path -ItemType Directory | Out-Null
89 | $config.Add('octopusTaskLogsPath', $path)
90 | Write-Log "done."
91 |
92 | $path = $driveLetter + ':\Octopus\Packages'
93 | Write-Log "Creating '$path' ..."
94 | New-Item -Path $path -ItemType Directory | Out-Null
95 | $config.Add('octopusPackagesPath', $path)
96 | Write-Log "done."
97 |
98 | Write-Log "done."
99 | Write-Log ""
100 | }
101 |
102 | function Create-InstallLocation
103 | {
104 | Write-Log "======================================"
105 | Write-Log " Create Install Location"
106 | Write-Log ""
107 |
108 | if (!(Test-Path $installBasePath))
109 | {
110 | Write-Log "Creating installation folder at '$installBasePath' ..."
111 | New-Item -ItemType Directory -Path $installBasePath | Out-Null
112 | Write-Log "done."
113 | }
114 | else
115 | {
116 | Write-Log "Installation folder at '$installBasePath' already exists."
117 | }
118 |
119 | Write-Log ""
120 | }
121 |
122 | function Install-OctopusDeploy
123 | {
124 | Write-Log "======================================"
125 | Write-Log " Install Octopus Deploy"
126 | Write-Log ""
127 |
128 | Write-Log "Downloading Octopus Deploy installer '$downloadUrl' to '$msiPath' ..."
129 | [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12
130 | Invoke-WebRequest -Uri $downloadUrl -Method GET -OutFile $msiPath
131 | Write-Log "done."
132 |
133 | Write-Log "Installing via '$msiPath' ..."
134 | $exe = 'msiexec.exe'
135 | $args = @(
136 | '/qn',
137 | '/i', $msiPath,
138 | '/l*v', $msiLogPath
139 | )
140 | $output = .$exe $args
141 | Write-CommandOutput $output
142 | Write-Log "done."
143 |
144 | Write-Log ""
145 | }
146 |
147 | function Configure-OctopusDeploy
148 | {
149 | Write-Log "======================================"
150 | Write-Log " Configure Octopus Deploy"
151 | Write-Log ""
152 |
153 | $exe = 'C:\Program Files\Octopus Deploy\Octopus\Octopus.Server.exe'
154 |
155 | $count = 0
156 | while(!(Test-Path $exe) -and $count -lt 5)
157 | {
158 | Write-Log "$exe - not available yet ... waiting 10s ..."
159 | Start-Sleep -s 10
160 | $count = $count + 1
161 | }
162 |
163 | Write-Log "Creating Octopus Deploy instance ..."
164 | $args = @(
165 | 'create-instance',
166 | '--console',
167 | '--instance', 'OctopusServer',
168 | '--config', 'C:\Octopus\OctopusServer.config'
169 | )
170 | $output = .$exe $args
171 | Write-CommandOutput $output
172 | Write-Log "done."
173 |
174 | Write-Log "Creating Octopus Deploy database ..."
175 | $args = @(
176 | 'database',
177 | '--console',
178 | '--connectionString', $($config.sqlDbConnectionString),
179 | '--instance', 'OctopusServer',
180 | '--create'
181 | )
182 | $output = .$exe $args
183 | Write-CommandOutput $output
184 | Write-Log "done."
185 |
186 | Write-Log "Configuring Octopus Deploy instance ..."
187 | $args = @(
188 | 'configure',
189 | '--console',
190 | '--instance', 'OctopusServer',
191 | '--home', 'C:\Octopus',
192 | '--upgradeCheck', 'True',
193 | '--upgradeCheckWithStatistics', 'True',
194 | '--usernamePasswordIsEnabled', 'True',
195 | '--webForceSSL', 'False',
196 | '--webListenPrefixes', 'http://localhost:80/',
197 | '--commsListenPort', '10943'
198 | )
199 | $output = .$exe $args
200 | Write-CommandOutput $output
201 | Write-Log "done."
202 |
203 | Write-Log "Stopping Octopus Deploy instance ..."
204 | $args = @(
205 | 'service',
206 | '--console',
207 | '--instance', 'OctopusServer',
208 | '--stop'
209 | )
210 | $output = .$exe $args
211 | Write-CommandOutput $output
212 | Write-Log "done."
213 |
214 | Write-Log "Setting Artifacts path for Octopus Deploy instance ..."
215 | $args = @(
216 | 'path',
217 | '--console',
218 | '--artifacts', $($config.octopusArtifactsPath)
219 | )
220 | $output = .$exe $args
221 | Write-CommandOutput $output
222 | Write-Log "done."
223 |
224 | Write-Log "Setting TaskLogs path for Octopus Deploy instance ..."
225 | $args = @(
226 | 'path',
227 | '--console',
228 | '--taskLogs', $($config.octopusTaskLogsPath)
229 | )
230 | $output = .$exe $args
231 | Write-CommandOutput $output
232 | Write-Log "done."
233 |
234 | Write-Log "Setting NuGetRepository path for Octopus Deploy instance ..."
235 | $args = @(
236 | 'path',
237 | '--console',
238 | '--nugetRepository', $($config.octopusPackagesPath)
239 | )
240 | $output = .$exe $args
241 | Write-CommandOutput $output
242 | Write-Log "done."
243 |
244 | Write-Log "Creating Admin User for Octopus Deploy instance ..."
245 | $args = @(
246 | 'admin',
247 | '--console',
248 | '--instance', 'OctopusServer',
249 | '--username', $($config.octopusAdminUserName),
250 | '--password', $($config.octopusAdminPassword)
251 | )
252 | $output = .$exe $args
253 | Write-CommandOutput $output
254 | Write-Log "done."
255 |
256 | Write-Log "Obtaining a trial license for Full Name: $($config.licenseFullName), Organisation Name: $($config.licenseOrganisationName), Email Address: $($config.licenseEmailAddress) ..."
257 | $postParams = @{
258 | FullName="$($config.licenseFullName)"
259 | Organization="$($config.licenseOrganisationName)"
260 | EmailAddress="$($config.licenseEmailAddress)"
261 | Source="azure"
262 | }
263 | $response = Invoke-WebRequest -UseBasicParsing -Uri "$octopusLicenseUrl" -Method POST -Body $postParams
264 | $utf8NoBOM = New-Object System.Text.UTF8Encoding($false)
265 | $bytes = $utf8NoBOM.GetBytes($response.Content)
266 | $licenseBase64 = [System.Convert]::ToBase64String($bytes)
267 | Write-Log "done."
268 |
269 | Write-Log "Installing license for Octopus Deploy instance ..."
270 | $args = @(
271 | 'license',
272 | '--console',
273 | '--instance', 'OctopusServer',
274 | '--licenseBase64', $licenseBase64
275 | )
276 | $output = .$exe $args
277 | Write-CommandOutput $output
278 | Write-Log "done."
279 |
280 | Write-Log "Reconfigure and start Octopus Deploy instance ..."
281 | $args = @(
282 | 'service',
283 | '--console',
284 | '--instance', 'OctopusServer',
285 | '--install',
286 | '--reconfigure',
287 | '--start'
288 | )
289 | $output = .$exe $args
290 | Write-CommandOutput $output
291 | Write-Log "done."
292 |
293 | Write-Log ""
294 | }
295 |
296 | function Configure-Firewall
297 | {
298 | Write-Log "======================================"
299 | Write-Log " Configure Firewall"
300 | Write-Log ""
301 |
302 | $firewallRuleName = "Allow_Port80_HTTP"
303 |
304 | if ((Get-NetFirewallRule -Name $firewallRuleName -ErrorAction Ignore) -eq $null)
305 | {
306 | Write-Log "Creating firewall rule to allow port 80 HTTP traffic ..."
307 | $firewallRule = @{
308 | Name=$firewallRuleName
309 | DisplayName ="Allow Port 80 (HTTP)"
310 | Description="Port 80 for HTTP traffic"
311 | Direction='Inbound'
312 | Protocol='TCP'
313 | LocalPort=80
314 | Enabled='True'
315 | Profile='Any'
316 | Action='Allow'
317 | }
318 | $output = (New-NetFirewallRule @firewallRule | Out-String)
319 | Write-CommandOutput $output
320 | Write-Log "done."
321 | }
322 | else
323 | {
324 | Write-Log "Firewall rule to allow port 80 HTTP traffic already exists."
325 | }
326 |
327 | Write-Log ""
328 | }
329 |
330 | try
331 | {
332 | Write-Log "======================================"
333 | Write-Log " Installing Octopus Deploy"
334 | Write-Log "======================================"
335 | Write-Log ""
336 |
337 | Get-Config
338 | Create-DataDisk
339 | Create-InstallLocation
340 | Install-OctopusDeploy
341 | Configure-OctopusDeploy
342 | Configure-Firewall
343 |
344 | Write-Log "Installation successful."
345 | Write-Log ""
346 | }
347 | catch
348 | {
349 | Write-Log $_
350 | }
351 |
--------------------------------------------------------------------------------
/arm template/azuredeploy.json:
--------------------------------------------------------------------------------
1 |
2 | {
3 | "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
4 | "contentVersion": "1.0.0.0",
5 | "parameters": {
6 | "octopusDnsName": {
7 | "type": "string",
8 | "metadata": {
9 | "description": "Unique DNS Name used to address Octopus Deploy."
10 | }
11 | },
12 |
13 | "vmSize": {
14 | "type": "string",
15 | "defaultValue": "Standard_D2_v2",
16 | "metadata": {
17 | "description": "VM Size for Octopus Deploy Virtual Machine."
18 | }
19 | }
20 |
21 | },
22 | "variables": {
23 | "serverFarmName":"[concat('Octopus','-plan-',uniqueString(resourceGroup().id))]",
24 | "namespace": "octopus",
25 | "location": "[resourceGroup().location]",
26 | "tags": {
27 | "vendor": "Octopus Deploy"
28 | },
29 | "diagnosticsPerformanceCounters": "",
30 | "diagnosticsWindowsEventLog": "",
31 | "diagnosticsMetrics": "[concat('')]",
32 | "vm": {
33 | "name": "[concat(variables('namespace'), '-vm')]",
34 | "credentials": {
35 | "admin": {
36 | "username": "vmadmin",
37 | "password": "P2ssw0rd@123"
38 | }
39 | },
40 | "size": "[parameters('vmSize')]",
41 | "image": {
42 | "publisher": "MicrosoftWindowsServer",
43 | "offer": "WindowsServer",
44 | "sku": "2012-R2-Datacenter",
45 | "version": "latest"
46 | },
47 | "osdisk": {
48 | "name": "[concat(variables('namespace'), '-osdisk')]",
49 | "storageAccount": {
50 | "name": "[concat(variables('namespace'), '01', uniqueString(resourceGroup().id))]",
51 | "type": "Standard_LRS"
52 | }
53 | },
54 | "datadisk": {
55 | "name": "[concat(variables('namespace'), '-datadisk')]",
56 | "diskSizeGB": "1023",
57 | "storageAccount": {
58 | "name": "[concat(variables('namespace'), '02', uniqueString(resourceGroup().id))]",
59 | "type": "Standard_GRS"
60 | }
61 | },
62 | "nic": {
63 | "name": "[concat(variables('namespace'), '-nic')]",
64 | "ipConfigName": "[concat(variables('namespace'), '-ipconfig')]"
65 | },
66 | "extensions": {
67 | "installer": {
68 | "name": "[concat(variables('namespace'), '-vm/octopusDeployInstaller')]",
69 | "fileUris": [
70 | "https://raw.githubusercontent.com/Microsoft/VSTS-DevOps-Labs/master/octopus/arm%20template/Install-OctopusDeploy.ps1"
71 | ],
72 | "commandToExecute": "[concat('powershell.exe -File Install-OctopusDeploy.ps1 ', base64(variables('azureSql').database.connectionString), ' ', base64(variables('octopus').license.fullName), ' ', base64(variables('octopus').license.organisationName), ' ', base64(variables('octopus').license.emailAddress), ' ', base64(variables('octopus').credentials.admin.username), ' ', base64(variables('octopus').credentials.admin.password), ' 2>&1 > D:\\Install-OctopusDeploy.ps1.log ')]"
73 | },
74 | "diagnostics": {
75 | "name": "[concat(variables('namespace'), '-vm/Microsoft.Insights.VMDiagnosticsSettings')]",
76 | "wadcfgx": "[concat('', variables('diagnosticsPerformanceCounters'), variables('diagnosticsWindowsEventLog'), variables('diagnosticsMetrics'), '')]"
77 | }
78 | }
79 | },
80 | "network": {
81 | "domainName": "[parameters('octopusDnsName')]",
82 | "publicIP": {
83 | "name": "[concat(variables('namespace'), '-publicip')]",
84 | "type": "Static"
85 | },
86 | "vnet": {
87 | "name": "[concat(variables('namespace'), '-vnet')]",
88 | "addressPrefix": "10.0.0.0/16",
89 | "subnet": {
90 | "name": "[concat(variables('namespace'), '-subnet')]",
91 | "addressPrefix": "10.0.0.0/24"
92 | }
93 | },
94 | "networkSecurityGroup": {
95 | "name": "[concat(variables('namespace'), '-nsg')]"
96 | }
97 | },
98 | "sqlServerName": "[concat(variables('namespace'), uniqueString(resourceGroup().id))]",
99 | "azureSql": {
100 | "server": {
101 | "name": "[variables('sqlServerName')]",
102 | "credentials": {
103 | "admin": {
104 | "username": "sqladmin",
105 | "password": "P2ssw0rd@123"
106 | }
107 | }
108 | },
109 | "database": {
110 | "name": "OctopusDeploy",
111 | "edition": "Standard",
112 | "serviceTier": "S1",
113 | "collation": "SQL_Latin1_General_CP1_CI_AS",
114 | "maxSizeBytes": "268435456000",
115 | "connectionString": "[concat('Server=tcp:', variables('sqlServerName'), '.database.windows.net,1433;Database=OctopusDeploy', ';User Id=', 'sqladmin', '@', variables('sqlServerName'), ';Password=', 'P2ssw0rd@123', ';Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;')]"
116 | }
117 | },
118 | "octopus": {
119 | "credentials": {
120 | "admin": {
121 | "username": "admin",
122 | "password": "P2ssw0rd@123"
123 | }
124 | },
125 | "license": {
126 | "fullName": "VSTS Lab",
127 | "organisationName": "VSTS Lab",
128 | "emailAddress": "lab@123.com"
129 | }
130 | }
131 | },
132 | "resources": [
133 | {
134 | "apiVersion": "2015-06-15",
135 | "type": "Microsoft.Storage/storageAccounts",
136 | "name": "[variables('vm').datadisk.storageAccount.name]",
137 | "location": "[variables('location')]",
138 | "tags": {
139 | "vendor": "[variables('tags').vendor]"
140 | },
141 | "properties": {
142 | "accountType": "[variables('vm').datadisk.storageAccount.type]"
143 | }
144 | },
145 | {
146 | "apiVersion": "2015-06-15",
147 | "type": "Microsoft.Storage/storageAccounts",
148 | "name": "[variables('vm').osdisk.storageAccount.name]",
149 | "location": "[variables('location')]",
150 | "tags": {
151 | "vendor": "[variables('tags').vendor]"
152 | },
153 | "properties": {
154 | "accountType": "[variables('vm').osdisk.storageAccount.type]"
155 | }
156 | },
157 | {
158 | "apiVersion": "2015-06-15",
159 | "type": "Microsoft.Network/publicIPAddresses",
160 | "name": "[variables('network').publicIP.name]",
161 | "location": "[variables('location')]",
162 | "tags": {
163 | "vendor": "[variables('tags').vendor]"
164 | },
165 | "properties": {
166 | "publicIPAllocationMethod": "[variables('network').publicIP.type]",
167 | "dnsSettings": {
168 | "domainNameLabel": "[variables('network').domainName]"
169 | }
170 | }
171 | },
172 | {
173 | "apiVersion": "2015-06-15",
174 | "type": "Microsoft.Network/virtualNetworks",
175 | "name": "[variables('network').vnet.name]",
176 | "location": "[variables('location')]",
177 | "tags": {
178 | "vendor": "[variables('tags').vendor]"
179 | },
180 | "properties": {
181 | "addressSpace": {
182 | "addressPrefixes": [
183 | "[variables('network').vnet.addressPrefix]"
184 | ]
185 | },
186 | "subnets": [
187 | {
188 | "name": "[variables('network').vnet.subnet.name]",
189 | "properties": {
190 | "addressPrefix": "[variables('network').vnet.subnet.addressPrefix]"
191 | }
192 | }
193 | ]
194 | }
195 | },
196 | {
197 | "apiVersion": "2015-06-15",
198 | "type": "Microsoft.Network/networkSecurityGroups",
199 | "name": "[variables('network').networkSecurityGroup.name]",
200 | "location": "[variables('location')]",
201 | "tags": {
202 | "vendor": "[variables('tags').vendor]"
203 | },
204 | "properties": {
205 | "securityRules": [
206 | {
207 | "name": "allow_web",
208 | "properties": {
209 | "description": "Allow web",
210 | "protocol": "Tcp",
211 | "sourcePortRange": "*",
212 | "destinationPortRange": "80",
213 | "sourceAddressPrefix": "Internet",
214 | "destinationAddressPrefix": "*",
215 | "access": "Allow",
216 | "priority": 100,
217 | "direction": "Inbound"
218 | }
219 | },
220 | {
221 | "name": "allow_rdp",
222 | "properties": {
223 | "description": "Allow RDP",
224 | "protocol": "Tcp",
225 | "sourcePortRange": "*",
226 | "destinationPortRange": "3389",
227 | "sourceAddressPrefix": "Internet",
228 | "destinationAddressPrefix": "*",
229 | "access": "Allow",
230 | "priority": 101,
231 | "direction": "Inbound"
232 | }
233 | }
234 | ]
235 | }
236 | },
237 | {
238 | "apiVersion": "2015-06-15",
239 | "type": "Microsoft.Network/networkInterfaces",
240 | "name": "[variables('vm').nic.name]",
241 | "location": "[variables('location')]",
242 | "tags": {
243 | "vendor": "[variables('tags').vendor]"
244 | },
245 | "dependsOn": [
246 | "[concat('Microsoft.Network/networkSecurityGroups/', variables('network').networkSecurityGroup.name)]",
247 | "[concat('Microsoft.Network/publicIPAddresses/', variables('network').publicIP.name)]",
248 | "[concat('Microsoft.Network/virtualNetworks/', variables('network').vnet.name)]"
249 | ],
250 | "properties": {
251 | "ipConfigurations": [
252 | {
253 | "name": "[variables('vm').nic.ipConfigName]",
254 | "properties": {
255 | "privateIPAllocationMethod": "Dynamic",
256 | "publicIPAddress": {
257 | "id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('network').publicIP.name)]"
258 | },
259 | "subnet": {
260 | "id": "[concat(resourceId('Microsoft.Network/virtualNetworks', variables('network').vnet.name), '/subnets/', variables('network').vnet.subnet.name)]"
261 | }
262 | }
263 | }
264 | ],
265 | "networkSecurityGroup": {
266 | "id": "[resourceId('Microsoft.Network/networkSecurityGroups/', variables('network').networkSecurityGroup.name)]"
267 | }
268 | }
269 | },
270 | {
271 | "apiVersion": "2015-06-15",
272 | "type": "Microsoft.Compute/virtualMachines",
273 | "name": "[variables('vm').name]",
274 | "location": "[variables('location')]",
275 | "tags": {
276 | "vendor": "[variables('tags').vendor]"
277 | },
278 | "dependsOn": [
279 | "[concat('Microsoft.Storage/storageAccounts/', variables('vm').osdisk.storageAccount.name)]",
280 | "[concat('Microsoft.Storage/storageAccounts/', variables('vm').datadisk.storageAccount.name)]",
281 | "[concat('Microsoft.Network/networkInterfaces/', variables('vm').nic.name)]"
282 | ],
283 | "properties": {
284 | "hardwareProfile": {
285 | "vmSize": "[variables('vm').size]"
286 | },
287 | "osProfile": {
288 | "computerName": "[variables('vm').name]",
289 | "adminUsername": "[variables('vm').credentials.admin.username]",
290 | "adminPassword": "[variables('vm').credentials.admin.password]"
291 | },
292 | "storageProfile": {
293 | "imageReference": {
294 | "publisher": "[variables('vm').image.publisher]",
295 | "offer": "[variables('vm').image.offer]",
296 | "sku": "[variables('vm').image.sku]",
297 | "version": "[variables('vm').image.version]"
298 | },
299 | "osDisk": {
300 | "name": "osdisk",
301 | "vhd": {
302 | "uri": "[concat('http://', variables('vm').osdisk.storageAccount.name, '.blob.core.windows.net/vhds/', variables('vm').osdisk.name, '.vhd')]"
303 | },
304 | "caching": "ReadWrite",
305 | "createOption": "FromImage"
306 | },
307 | "dataDisks": [
308 | {
309 | "name": "[variables('vm').datadisk.name]",
310 | "diskSizeGB": "[variables('vm').datadisk.diskSizeGB]",
311 | "lun": 0,
312 | "vhd": {
313 | "uri": "[concat('http://', variables('vm').datadisk.storageAccount.name, '.blob.core.windows.net/vhds/', variables('vm').datadisk.name, '.vhd')]"
314 | },
315 | "caching": "None",
316 | "createOption": "Empty"
317 | }
318 | ]
319 | },
320 | "networkProfile": {
321 | "networkInterfaces": [
322 | {
323 | "id": "[resourceId('Microsoft.Network/networkInterfaces', variables('vm').nic.name)]"
324 | }
325 | ]
326 | },
327 | "diagnosticsProfile": {
328 | "bootDiagnostics": {
329 | "enabled": "true",
330 | "storageUri": "[concat('http://', variables('vm').datadisk.storageAccount.name, '.blob.core.windows.net')]"
331 | }
332 | }
333 | }
334 | },
335 | {
336 | "apiVersion": "2015-06-15",
337 | "type": "Microsoft.Compute/virtualMachines/extensions",
338 | "name": "[variables('vm').extensions.installer.name]",
339 | "location": "[variables('location')]",
340 | "tags": {
341 | "vendor": "[variables('tags').vendor]",
342 | "displayName": "Octopus Deploy Installer"
343 | },
344 | "dependsOn": [
345 | "[concat('Microsoft.Compute/virtualMachines/', variables('vm').name)]",
346 | "[concat('Microsoft.Sql/servers/', variables('azureSql').server.name, '/databases/', variables('azureSql').database.name)]"
347 | ],
348 | "properties": {
349 | "publisher": "Microsoft.Compute",
350 | "type": "CustomScriptExtension",
351 | "typeHandlerVersion": "1.7",
352 | "autoUpgradeMinorVersion": true,
353 | "settings": {
354 | "fileUris": "[variables('vm').extensions.installer.fileUris]"
355 | },
356 | "protectedSettings": {
357 | "commandToExecute": "[variables('vm').extensions.installer.commandToExecute]"
358 | }
359 | }
360 | },
361 | {
362 | "apiVersion": "2015-06-15",
363 | "type": "Microsoft.Compute/virtualMachines/extensions",
364 | "name": "[variables('vm').extensions.diagnostics.name]",
365 | "location": "[variables('location')]",
366 | "tags": {
367 | "vendor": "[variables('tags').vendor]",
368 | "displayName": "Azure VM Diagnostics"
369 | },
370 | "dependsOn": [
371 | "[concat('Microsoft.Compute/virtualMachines/', variables('vm').name)]",
372 | "[concat('Microsoft.Storage/storageAccounts/', variables('vm').datadisk.storageAccount.name)]"
373 | ],
374 | "properties": {
375 | "publisher": "Microsoft.Azure.Diagnostics",
376 | "type": "IaaSDiagnostics",
377 | "typeHandlerVersion": "1.5",
378 | "autoUpgradeMinorVersion": true,
379 | "settings": {
380 | "xmlCfg": "[base64(concat(variables('vm').extensions.diagnostics.wadcfgx))]",
381 | "storageAccount": "[variables('vm').datadisk.storageAccount.name]"
382 | },
383 | "protectedSettings": {
384 | "storageAccountName": "[variables('vm').datadisk.storageAccount.name]",
385 | "storageAccountKey": "[listkeys(resourceId('Microsoft.Storage/storageAccounts', variables('vm').datadisk.storageAccount.name), '2015-06-15').key1]",
386 | "storageAccountEndPoint": "https://core.windows.net"
387 | }
388 | }
389 | },
390 | {
391 | "apiVersion": "2014-04-01",
392 | "type": "Microsoft.Sql/servers",
393 | "name": "[variables('azureSql').server.name]",
394 | "location": "[variables('location')]",
395 | "tags": {
396 | "vendor": "[variables('tags').vendor]"
397 | },
398 | "properties": {
399 | "version": "12.0",
400 | "administratorLogin": "[variables('azureSql').server.credentials.admin.username]",
401 | "administratorLoginPassword": "[variables('azureSql').server.credentials.admin.password]"
402 | },
403 | "resources": [
404 | {
405 | "apiVersion": "2014-04-01",
406 | "type": "databases",
407 | "name": "[variables('azureSql').database.name]",
408 | "location": "[variables('location')]",
409 | "tags": {
410 | "vendor": "[variables('tags').vendor]"
411 | },
412 | "dependsOn": [
413 | "[concat('Microsoft.Sql/servers/', variables('azureSql').server.name)]"
414 | ],
415 | "properties": {
416 | "edition": "[variables('azureSql').database.edition]",
417 | "collation": "[variables('azureSql').database.collation]",
418 | "maxSizeBytes": "[variables('azureSql').database.maxSizeBytes]",
419 | "requestedServiceObjectiveName": "[variables('azureSql').database.serviceTier]"
420 | }
421 | },
422 | {
423 | "type": "firewallrules",
424 | "apiVersion": "2014-04-01",
425 | "dependsOn": [
426 | "[concat('Microsoft.Sql/servers/', variables('azureSql').server.name)]",
427 | "[concat('Microsoft.Network/publicIPAddresses/', variables('network').publicIP.name)]"
428 | ],
429 | "location": "[variables('location')]",
430 | "name": "AllowAccessToOctopusServerPublicIP",
431 | "properties": {
432 | "startIpAddress": "[reference(variables('network').publicIP.name).ipAddress]",
433 | "endIpAddress": "[reference(variables('network').publicIP.name).ipAddress]"
434 | }
435 | }
436 | ]
437 | },
438 | {
439 | "type": "Microsoft.Web/serverfarms",
440 | "sku": {
441 | "name": "F1"
442 | },
443 | "name": "[variables('serverFarmName')]",
444 | "apiVersion": "2015-08-01",
445 | "location": "[resourceGroup().location]",
446 | "properties": {
447 | "name": "[variables('serverFarmName')]"
448 | }
449 | },
450 | {
451 | "type": "Microsoft.Web/sites",
452 | "name": "[concat('Octopus','-web-',uniqueString(resourceGroup().id))]",
453 | "apiVersion": "2015-08-01",
454 | "location": "[resourceGroup().location]",
455 | "properties": {
456 | "serverFarmId": "[variables('serverFarmName')]"
457 | },
458 |
459 | "dependsOn": [
460 | "[resourceId('Microsoft.Web/serverfarms', variables('serverFarmName'))]"
461 | ]
462 | }
463 |
464 | ],
465 | "outputs": {
466 | "octopusDomainLabel": {
467 | "type": "string",
468 | "value": "[reference(variables('network').publicIP.name).dnsSettings.fqdn]"
469 | },
470 | "octopusPublicIP": {
471 | "type": "string",
472 | "value": "[reference(variables('network').publicIP.name).ipAddress]"
473 | },
474 | "sqlServerDomainLabel": {
475 | "type": "string",
476 | "value": "[reference(concat('Microsoft.Sql/servers/', variables('azureSql').server.name)).fullyQualifiedDomainName]"
477 | }
478 | }
479 | }
480 |
--------------------------------------------------------------------------------
/arm template/azuredeploy.parameters.json:
--------------------------------------------------------------------------------
1 |
2 | {
3 | "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
4 | "contentVersion": "1.0.0.0",
5 | "parameters": {
6 | "octopusDnsName": {
7 | "value": "domaninini"
8 | },
9 | "vmAdminUsername": {
10 | "value": "octoadmin"
11 | },
12 | "vmAdminPassword": {
13 | "value": null
14 | },
15 | "vmSize": {
16 | "value": "Standard_D2_v2"
17 | },
18 | "sqlAdminUsername": {
19 | "value": "sqladmin"
20 | },
21 | "sqlAdminPassword": {
22 | "value": null
23 | },
24 | "licenseFullName": {
25 | "value": "sa"
26 | },
27 | "licenseOrganisationName": {
28 | "value": "sa"
29 | },
30 | "licenseEmailAddress": {
31 | "value": "sa@ti.com"
32 | },
33 | "octopusAdminUsername": {
34 | "value": "admin"
35 | },
36 | "octopusAdminPassword": {
37 | "value": null
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/images/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/1.png
--------------------------------------------------------------------------------
/images/A3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/A3.png
--------------------------------------------------------------------------------
/images/APIKey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/APIKey.png
--------------------------------------------------------------------------------
/images/AccountOctopusDeploy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/AccountOctopusDeploy.png
--------------------------------------------------------------------------------
/images/AddAccount.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/AddAccount.png
--------------------------------------------------------------------------------
/images/AddDeploymentTargetsOctopusDeploy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/AddDeploymentTargetsOctopusDeploy.png
--------------------------------------------------------------------------------
/images/AddEnvironment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/AddEnvironment.png
--------------------------------------------------------------------------------
/images/AddProject.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/AddProject.png
--------------------------------------------------------------------------------
/images/AddStep.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/AddStep.png
--------------------------------------------------------------------------------
/images/AddWebAppStep.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/AddWebAppStep.png
--------------------------------------------------------------------------------
/images/AddanAccount.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/AddanAccount.png
--------------------------------------------------------------------------------
/images/Azure DevOps Services12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Azure DevOps Services12.png
--------------------------------------------------------------------------------
/images/Azure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Azure.png
--------------------------------------------------------------------------------
/images/AzureDevOpsServices15_18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/AzureDevOpsServices15_18.png
--------------------------------------------------------------------------------
/images/AzureDevOpsServices15_19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/AzureDevOpsServices15_19.png
--------------------------------------------------------------------------------
/images/AzureDevOpsServices15_20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/AzureDevOpsServices15_20.png
--------------------------------------------------------------------------------
/images/Browse.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Browse.png
--------------------------------------------------------------------------------
/images/Build Complete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Build Complete.png
--------------------------------------------------------------------------------
/images/BuildAzureDevOpsServices1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/BuildAzureDevOpsServices1.png
--------------------------------------------------------------------------------
/images/BuildAzureDevOpsServices2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/BuildAzureDevOpsServices2.png
--------------------------------------------------------------------------------
/images/BuildAzureDevOpsServices3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/BuildAzureDevOpsServices3.png
--------------------------------------------------------------------------------
/images/BuildDefinition.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/BuildDefinition.png
--------------------------------------------------------------------------------
/images/BuildPipelines.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/BuildPipelines.png
--------------------------------------------------------------------------------
/images/BuildProgress.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/BuildProgress.png
--------------------------------------------------------------------------------
/images/Builds11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Builds11.png
--------------------------------------------------------------------------------
/images/CD-Create.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/CD-Create.png
--------------------------------------------------------------------------------
/images/CD-Octopus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/CD-Octopus.png
--------------------------------------------------------------------------------
/images/Changes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Changes.png
--------------------------------------------------------------------------------
/images/CloudShellMicrosoftAzure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/CloudShellMicrosoftAzure.png
--------------------------------------------------------------------------------
/images/Create New Release.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Create New Release.png
--------------------------------------------------------------------------------
/images/CreateAccount.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/CreateAccount.png
--------------------------------------------------------------------------------
/images/CreateEnvironment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/CreateEnvironment.png
--------------------------------------------------------------------------------
/images/Createdeploymenttarget.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Createdeploymenttarget.png
--------------------------------------------------------------------------------
/images/Createdeploymenttarget2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Createdeploymenttarget2.png
--------------------------------------------------------------------------------
/images/DashboardMicrosoftAzure2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/DashboardMicrosoftAzure2.png
--------------------------------------------------------------------------------
/images/DashboardMicrosoftAzure3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/DashboardMicrosoftAzure3.png
--------------------------------------------------------------------------------
/images/DashboardMicrosoftAzure5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/DashboardMicrosoftAzure5.png
--------------------------------------------------------------------------------
/images/DashboardMicrosoftAzure6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/DashboardMicrosoftAzure6.png
--------------------------------------------------------------------------------
/images/Define Process.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Define Process.png
--------------------------------------------------------------------------------
/images/DefineProcess.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/DefineProcess.png
--------------------------------------------------------------------------------
/images/DemoGen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/DemoGen.png
--------------------------------------------------------------------------------
/images/DemoGenerator9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/DemoGenerator9.png
--------------------------------------------------------------------------------
/images/Deploy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Deploy.png
--------------------------------------------------------------------------------
/images/Deploy2Dev.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Deploy2Dev.png
--------------------------------------------------------------------------------
/images/DeployOctopus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/DeployOctopus.png
--------------------------------------------------------------------------------
/images/DeploymentSuccessful.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/DeploymentSuccessful.png
--------------------------------------------------------------------------------
/images/Dev.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Dev.png
--------------------------------------------------------------------------------
/images/DevEnvironment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/DevEnvironment.png
--------------------------------------------------------------------------------
/images/DevOpsDemoGenerator10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/DevOpsDemoGenerator10.png
--------------------------------------------------------------------------------
/images/DownloadCertificate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/DownloadCertificate.png
--------------------------------------------------------------------------------
/images/EditBD.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/EditBD.png
--------------------------------------------------------------------------------
/images/EditCommit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/EditCommit.png
--------------------------------------------------------------------------------
/images/EditFile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/EditFile.png
--------------------------------------------------------------------------------
/images/Endpoint.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Endpoint.png
--------------------------------------------------------------------------------
/images/EndpointSuccess.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/EndpointSuccess.png
--------------------------------------------------------------------------------
/images/Generate_new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Generate_new.png
--------------------------------------------------------------------------------
/images/IndexcshtmlRepos2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/IndexcshtmlRepos2.png
--------------------------------------------------------------------------------
/images/IndexcshtmlRepos3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/IndexcshtmlRepos3.png
--------------------------------------------------------------------------------
/images/Key.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Key.png
--------------------------------------------------------------------------------
/images/Microsoft Azure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Microsoft Azure.png
--------------------------------------------------------------------------------
/images/MicrosoftAzure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/MicrosoftAzure.png
--------------------------------------------------------------------------------
/images/MicrosoftAzure1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/MicrosoftAzure1.png
--------------------------------------------------------------------------------
/images/MicrosoftAzure15_7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/MicrosoftAzure15_7.png
--------------------------------------------------------------------------------
/images/MicrosoftAzure15_8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/MicrosoftAzure15_8.png
--------------------------------------------------------------------------------
/images/MicrosoftAzure15_9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/MicrosoftAzure15_9.png
--------------------------------------------------------------------------------
/images/MicrosoftAzure2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/MicrosoftAzure2.png
--------------------------------------------------------------------------------
/images/MicrosoftAzure24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/MicrosoftAzure24.png
--------------------------------------------------------------------------------
/images/MicrosoftAzure3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/MicrosoftAzure3.png
--------------------------------------------------------------------------------
/images/MicrosoftAzure4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/MicrosoftAzure4.png
--------------------------------------------------------------------------------
/images/MicrosoftAzure6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/MicrosoftAzure6.png
--------------------------------------------------------------------------------
/images/NewDeploymentTarget.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/NewDeploymentTarget.png
--------------------------------------------------------------------------------
/images/O10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/O10.png
--------------------------------------------------------------------------------
/images/O11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/O11.png
--------------------------------------------------------------------------------
/images/O12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/O12.png
--------------------------------------------------------------------------------
/images/O8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/O8.png
--------------------------------------------------------------------------------
/images/O9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/O9.png
--------------------------------------------------------------------------------
/images/OctopusDeploy15_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/OctopusDeploy15_1.png
--------------------------------------------------------------------------------
/images/OctopusDeploy15_10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/OctopusDeploy15_10.png
--------------------------------------------------------------------------------
/images/OctopusDeploy15_11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/OctopusDeploy15_11.png
--------------------------------------------------------------------------------
/images/OctopusDeploy15_12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/OctopusDeploy15_12.png
--------------------------------------------------------------------------------
/images/OctopusDeploy15_13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/OctopusDeploy15_13.png
--------------------------------------------------------------------------------
/images/OctopusDeploy15_14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/OctopusDeploy15_14.png
--------------------------------------------------------------------------------
/images/OctopusDeploy15_15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/OctopusDeploy15_15.png
--------------------------------------------------------------------------------
/images/OctopusDeploy15_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/OctopusDeploy15_16.png
--------------------------------------------------------------------------------
/images/OctopusDeploy15_17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/OctopusDeploy15_17.png
--------------------------------------------------------------------------------
/images/OctopusDeploy15_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/OctopusDeploy15_2.png
--------------------------------------------------------------------------------
/images/OctopusDeploy15_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/OctopusDeploy15_3.png
--------------------------------------------------------------------------------
/images/OctopusDeploy15_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/OctopusDeploy15_4.png
--------------------------------------------------------------------------------
/images/OctopusDeploy15_5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/OctopusDeploy15_5.png
--------------------------------------------------------------------------------
/images/OctopusDeploy15_6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/OctopusDeploy15_6.png
--------------------------------------------------------------------------------
/images/OctopusDeploy24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/OctopusDeploy24.png
--------------------------------------------------------------------------------
/images/OctopusDeploy5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/OctopusDeploy5.png
--------------------------------------------------------------------------------
/images/OctopusDeploy7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/OctopusDeploy7.png
--------------------------------------------------------------------------------
/images/OctopusDeploy8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/OctopusDeploy8.png
--------------------------------------------------------------------------------
/images/OctopusRepos1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/OctopusRepos1.png
--------------------------------------------------------------------------------
/images/PHPApp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/PHPApp.png
--------------------------------------------------------------------------------
/images/PUProject.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/PUProject.png
--------------------------------------------------------------------------------
/images/PartsUnlimited.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/PartsUnlimited.png
--------------------------------------------------------------------------------
/images/Pipelines.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Pipelines.png
--------------------------------------------------------------------------------
/images/Pkg Uploaded.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Pkg Uploaded.png
--------------------------------------------------------------------------------
/images/Pkg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Pkg.png
--------------------------------------------------------------------------------
/images/PkgID.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/PkgID.png
--------------------------------------------------------------------------------
/images/Project.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Project.png
--------------------------------------------------------------------------------
/images/Project3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Project3.png
--------------------------------------------------------------------------------
/images/Project4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Project4.png
--------------------------------------------------------------------------------
/images/Projects.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Projects.png
--------------------------------------------------------------------------------
/images/QBuild.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/QBuild.png
--------------------------------------------------------------------------------
/images/Release.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Release.png
--------------------------------------------------------------------------------
/images/Repos.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Repos.png
--------------------------------------------------------------------------------
/images/Repos2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Repos2.png
--------------------------------------------------------------------------------
/images/Resources.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Resources.png
--------------------------------------------------------------------------------
/images/Save.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Save.png
--------------------------------------------------------------------------------
/images/SaveRelease.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/SaveRelease.png
--------------------------------------------------------------------------------
/images/Update.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Update.png
--------------------------------------------------------------------------------
/images/Update1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Update1.png
--------------------------------------------------------------------------------
/images/Verification Failed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/Verification Failed.png
--------------------------------------------------------------------------------
/images/VerificationSuccess.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/VerificationSuccess.png
--------------------------------------------------------------------------------
/images/accountOctopusDeploy2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/accountOctopusDeploy2.png
--------------------------------------------------------------------------------
/images/accountverifyOctopusDeploy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/accountverifyOctopusDeploy.png
--------------------------------------------------------------------------------
/images/azureserviceprincipal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/azureserviceprincipal.png
--------------------------------------------------------------------------------
/images/click_create.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/click_create.png
--------------------------------------------------------------------------------
/images/click_create2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/click_create2.png
--------------------------------------------------------------------------------
/images/copyfiles.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/copyfiles.png
--------------------------------------------------------------------------------
/images/create_RG.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/create_RG.png
--------------------------------------------------------------------------------
/images/createoctopus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/createoctopus.png
--------------------------------------------------------------------------------
/images/demogen_create.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/demogen_create.png
--------------------------------------------------------------------------------
/images/dotnetcore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/dotnetcore.png
--------------------------------------------------------------------------------
/images/endpointName.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/endpointName.png
--------------------------------------------------------------------------------
/images/gear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/gear.png
--------------------------------------------------------------------------------
/images/icrosoft Azure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/icrosoft Azure.png
--------------------------------------------------------------------------------
/images/icrosoftAzure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/icrosoftAzure.png
--------------------------------------------------------------------------------
/images/octopus_details.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/octopus_details.png
--------------------------------------------------------------------------------
/images/octopus_login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/octopus_login.png
--------------------------------------------------------------------------------
/images/octopuspackage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/octopuspackage.png
--------------------------------------------------------------------------------
/images/octopusportal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/octopusportal.png
--------------------------------------------------------------------------------
/images/project2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/project2.png
--------------------------------------------------------------------------------
/images/project5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/project5.png
--------------------------------------------------------------------------------
/images/project6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/project6.png
--------------------------------------------------------------------------------
/images/pushpackage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/pushpackage.png
--------------------------------------------------------------------------------
/images/releaseoctopus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/releaseoctopus.png
--------------------------------------------------------------------------------
/images/server_details.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/server_details.png
--------------------------------------------------------------------------------
/images/summary.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/summary.png
--------------------------------------------------------------------------------
/images/userprofile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/userprofile.png
--------------------------------------------------------------------------------
/images/webapp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/My-Azure-Projects/Automating-Deployment-from-Azure-Repos-with-Octopus-Deploy/3d996d92941d27e22a4ed368ee46aba735ea2fed/images/webapp.png
--------------------------------------------------------------------------------