{"id":6103,"date":"2019-07-03T04:17:07","date_gmt":"2019-07-03T04:17:07","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=6103"},"modified":"2021-11-16T11:31:30","modified_gmt":"2021-11-16T11:31:30","slug":"octopus-deploy-package-deployment-feature-ordering","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/octopus-deploy-package-deployment-feature-ordering\/","title":{"rendered":"Octopus deploy Package Deployment Feature Ordering"},"content":{"rendered":"\n<p>When Octopus deploys packages, it runs a series of actions implementing the conventions or features enabled for that step.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"745\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2019\/07\/Octopus-deploy-Package-Deployment-Feature-Ordering-1024x745.png\" alt=\"\" class=\"wp-image-6104\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2019\/07\/Octopus-deploy-Package-Deployment-Feature-Ordering-1024x745.png 1024w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2019\/07\/Octopus-deploy-Package-Deployment-Feature-Ordering-300x218.png 300w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2019\/07\/Octopus-deploy-Package-Deployment-Feature-Ordering-768x559.png 768w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2019\/07\/Octopus-deploy-Package-Deployment-Feature-Ordering-660x480.png 660w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>The order of evaluation once the package is extracted is:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>BeforePreDeploy.* Feature Scripts &#8211; runs matching scripts associated with any enabled features. These bootstrap scripts are created by Octopus and cannot be customized by the user.<\/li><li>PreDeploy.* Scripts &#8211; runs matching scripts included in the package or defined using the Custom PowerShell Scripts feature.<\/li><li>AfterPreDeploy.* Feature Scripts &#8211; runs matching scripts associated with any enabled features. These bootstrap scripts are created by Octopus and cannot be customized by the user.<\/li><li>Delete temporary package files<\/li><li>Substitute Octopus Variables in files- if the variable substitution feature is enabled, perform substitution in listed files.<\/li><li>XML Configuration Transforms- if the feature is enabled, find and apply matching XML transforms.<br> XML Configuration Variables &#8211; if the feature is enabled, find and replace matching appSettings, applicationSettings, and connectionStrings values.<\/li><li>Custom Installation Folder copy- if the custom installation folder feature is enabled, copy files to the folder.<\/li><li>BeforeDeploy.* Feature Scripts- runs matching scripts associated with any enabled features. These bootstrap scripts are created by Octopus and cannot be customized by the user.<\/li><li>Deploy.* Scripts- runs matching scripts included in the package or defined using the Custom PowerShell Scripts feature.<\/li><li>AfterDeploy.* Feature Scripts- runs matching scripts associated with any enabled features. These bootstrap scripts are created by Octopus and cannot be customized by the user.<\/li><li>IIS Home Directory &#8211; sets the IIS web site&#8217;s home directory to the new install location, if that feature is enabled.<\/li><li>BeforePostDeploy.* Feature Scripts- runs matching scripts associated with any enabled features. These bootstrap scripts are created by Octopus and cannot be customized by the user.<\/li><li>PostDeploy.* Scripts- runs matching scripts included in the package or defined using the Custom PowerShell Scripts feature.<\/li><li>AfterPostDeploy.* Feature Scripts- runs matching scripts associated with any enabled features. These bootstrap scripts are created by Octopus and cannot be customized by the user.<\/li><\/ul>\n\n\n\n<p>If an item fails, the remaining items will not be executed, and instead DeployFailed.* Scripts will be found and executed.<\/p>\n\n\n<div class=\"epyt-gallery\" data-currpage=\"1\" id=\"epyt_gallery_98602\"><figure class=\"wp-block-embed wp-block-embed-youtube is-type-video is-provider-youtube epyt-figure\"><div class=\"wp-block-embed__wrapper\"><iframe loading=\"lazy\"  id=\"_ytid_27929\"  width=\"760\" height=\"427\"  data-origwidth=\"760\" data-origheight=\"427\" src=\"https:\/\/www.youtube.com\/embed\/?enablejsapi=1&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;rel=1&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;theme=dark&#038;color=red&#038;controls=1&#038;disablekb=0&#038;\" class=\"__youtube_prefs__  no-lazyload\" title=\"YouTube player\"  data-epytgalleryid=\"epyt_gallery_98602\"  allow=\"fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen data-no-lazy=\"1\" data-skipgform_ajax_framebjll=\"\"><\/iframe><\/div><\/figure><div class=\"epyt-gallery-list\"><div>Sorry, there was a YouTube error.<\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>When Octopus deploys packages, it runs a series of actions implementing the conventions or features enabled for that step. The order of evaluation once the package is extracted is: BeforePreDeploy.* Feature Scripts &#8211; runs matching scripts associated with any enabled features. These bootstrap scripts are created by Octopus and cannot be customized by the user&#8230;.<\/p>\n","protected":false},"author":1,"featured_media":8014,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","_joinchat":[],"footnotes":""},"categories":[5208],"tags":[3357,3706,5592,247,213,5045],"class_list":["post-6103","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-octopus-deploy","tag-deploy","tag-feature","tag-octopus","tag-package","tag-tutorial","tag-variable"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/6103","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=6103"}],"version-history":[{"count":2,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/6103\/revisions"}],"predecessor-version":[{"id":25509,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/6103\/revisions\/25509"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media\/8014"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=6103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=6103"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=6103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}