├── 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 | [![Deploy to Azure](http://azuredeploy.net/deploybutton.png)](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 | ![Octopus_login](images/OctopusDeploy15_1.png) 40 | 41 | 1. You will see the Octopus deploy web portal. 42 | 43 | ![Octopus Dashboard](images/OctopusDeploy15_2.png) 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 | ![webapp](images/CloudShellMicrosoftAzure.png) 52 | 53 | 1. Select **Bash** or **Powershell** to run the command which will generate the SPN details. 54 | 55 | ![webapp](images/DashboardMicrosoftAzure2.png) 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 | ![webapp](images/DashboardMicrosoftAzure3.png) 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 | ![SPN](images/azureserviceprincipal.png) 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 | [![Deploy to Azure](http://azuredeploy.net/deploybutton.png)](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 | ![User Profile](images/OctopusDeploy15_3.png) 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 | ![Request New API Key](images/APIKey.png) 87 | 88 | 1. Specify a **purpose**, for instance, **Azure DevOps Integration** and click **Generate New**. 89 | 90 | ![Generate New API Key](images/OctopusDeploy7.png) 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 | ![Generated API Key](images/OctopusDeploy8.png) 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 | ![CreateEnvironment](images/CreateEnvironment.png) 111 | 112 | 1. Once inside, click **Add Environment**. 113 | 114 | ![AddEnvironment](images/OctopusDeploy15_4.png) 115 | 116 | 1. Provide the environment name and click **Save**. 117 | 118 | ![DevEnvironment](images/OctopusDeploy15_5.png) 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 | ![Add Account](images/OctopusDeploy15_6.png) 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 | ![Create Account](images/AccountOctopusDeploy.png) 140 | 141 | ![Create Account](images/accountOctopusDeploy2.png) 142 | 143 | 1. Click **SAVE AND TEST** and notice that your account is verified. 144 | 145 | ![Download Certificate](images/accountverifyOctopusDeploy.png) 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 | ![O8](images/AddDeploymentTargetsOctopusDeploy.png) 150 | 151 | ![O8](images/NewDeploymentTarget.png) 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 | ![O9](images/Createdeploymenttarget.png) 156 | 157 | ![O9](images/Createdeploymenttarget2.png) 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 | ![Project](images/Project.png) 166 | 167 | 1. Click on **ADD PROJECT**, provide the project name, description and click on **SAVE**. 168 | 169 | ![AddProject](images/OctopusDeploy15_11.png) 170 | 171 | ![PUProject](images/Projects.png) 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 | ![DefineProcess](images/project2.png) 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 | ![AddStep](images/Project3.png) 180 | 181 | 1. **Search** for **Azure Web App** template and click **Add**. 182 | 183 | ![AddWebAppStep](images/Project4.png) 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 | ![PkgID](images/project5.png) 192 | 193 | ![Azure](images/project6.png) 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 | |![dotnetcore](images/dotnetcore.png) **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 | |![dotnetcore](images/dotnetcore.png) **Build**| We will use dotnet command-line tool to build the project and its dependencies into a set of binaries| 205 | |![dotnetcore](images/dotnetcore.png) **Publish**| We will use this task to create a package with published content for the web deployment| 206 | |![octopuspackage](images/octopuspackage.png) **Package Application** | We will package the ASP.NET Core build output into a zip file with the version number| 207 | |![pushpackage](images/pushpackage.png) **Push packages to Octopus**| The copied package will be pushed to Octopus server from the artifacts directory| 208 | |![createoctopus](images/createoctopus.png) **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 | |![releaseoctopus](images/releaseoctopus.png) **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 | ![BuildDefinition](images/Builds11.png) 214 | 215 | 216 | 1. In **Push Packages to Octopus** task, update **Octopus Deploy Server** field with the created endpoint value. 217 | 218 | 219 | ![QBuild](images/BuildAzureDevOpsServices1.png) 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 | ![Update1](images/BuildAzureDevOpsServices2.png) 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 | ![Update](images/BuildAzureDevOpsServices3.png) 228 | 229 | 1. Navigate back to the **Build** tab see progress of the build. 230 | 231 | ![BuildProgress](images/BuildPipelines.png) 232 | 233 | 1. Once the build completes, go to Octopus portal project dashboard to see the release progress. 234 | 235 | ![CD-Octopus](images/OctopusDeploy24.png) 236 | 237 | 1. Go to the created Azure Web App from your **Azure Portal** and click **Browse**. 238 | 239 | ![Browse](images/MicrosoftAzure24.png) 240 | 241 | 1. You will see the associated ASP.NET Core application up and running. 242 | 243 | ![Changes](images/PartsUnlimited.png) 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 --------------------------------------------------------------------------------