├── .deployment ├── .editorconfig ├── .eslintignore ├── .eslintrc.yml ├── .gitattributes ├── .github ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE │ └── bug-report.yml ├── pull_request_template.md └── workflows │ └── Hyponome.yml ├── .gitignore ├── .octopus ├── channels.ocl ├── deployment_process.ocl ├── deployment_settings.ocl └── schema_version.ocl ├── .prettierrc ├── .vscode └── settings.json ├── GitVersion.yml ├── IISNode.yml ├── LICENSE.txt ├── README.md ├── app ├── Browser.jsx ├── Routes.jsx ├── actions │ └── LibraryActions.jsx ├── components │ ├── App.jsx │ ├── Footer.jsx │ ├── Header.jsx │ ├── Listing.jsx │ ├── SearchBox.jsx │ ├── TemplateBody.jsx │ ├── TemplateItem.jsx │ ├── TemplateList.jsx │ └── TemplateParameters.jsx ├── content │ ├── images │ │ ├── Octopus-96x96.png │ │ ├── favicon.png │ │ └── octopus-white.png │ └── styles │ │ ├── base │ │ ├── _base.scss │ │ ├── _buttons.scss │ │ └── _util.scss │ │ ├── components │ │ ├── _app.scss │ │ ├── _footer.scss │ │ ├── _header.scss │ │ ├── _searchbox.scss │ │ ├── _socialbuttons.scss │ │ ├── _templateitem.scss │ │ └── _templatelisting.scss │ │ ├── layout │ │ ├── _grid.scss │ │ └── _typography.scss │ │ ├── main.scss │ │ └── variables │ │ └── _variables.scss ├── dispatcher.js ├── services │ ├── Analytics.js │ ├── LibraryDb.js │ └── SlugMaker.js └── stores │ └── LibraryStore.jsx ├── deploy.sh ├── gulpfile.babel.js ├── package-lock.json ├── package.json ├── server ├── server.js └── views │ └── index.pug ├── spec ├── logos-validation-tests.js └── step-template-validation-tests.js ├── step-templates ├── Azure-Backup-TableStorage-to-Blob.json ├── Azure-Container-Copy-to-another-Container.json ├── Azure-CopySelectiveStorageAccountContainersUsingAZCopy.json ├── Azure-Get-Publishing-Credentials.json ├── F5-API-enable-disable-member.json ├── GCP-gcloud-run-deploy.json ├── Jenkins-Queue-Job.json ├── Load-WIF-Issuer-Thumbprints.json ├── Manual-Intervention-User-Restrictions-Enforcement.json ├── Remove-Hosts-File-Entry.json ├── SQL-Query-Octopus-Database-for-Fragmentation.json ├── TeamCity-Pin-Build.json ├── Wait-until-time.json ├── add-server-to-azure-load-balancer.json ├── akamai-content-purge.json ├── akamai-cpcode-fastpurge.json ├── akamai-fast-content-purge.json ├── amazon-chime-post-message.json ├── amazon-s3-upload.json ├── ansible-run-playbook.json ├── ansible-tower-run-template.json ├── apexsql-devops-toolkit-deploy.json ├── apexsql-devops-toolkit-sync-data.json ├── apexsql-devops-toolkit-sync.json ├── apollo-rover-check-subgraph-schema.json ├── apollo-rover-publish-subgraph-schema.json ├── application-insights-annotate-release-with-rbac.json ├── application-insights-annotate-release.json ├── argo-argocd-app-get.json ├── argo-argocd-app-set-with-package.json ├── argo-argocd-app-set.json ├── argo-argocd-app-sync.json ├── argo-argocd-app-wait.json ├── argo-rollouts-get-rollout.json ├── argo-rollouts-pause.json ├── argo-rollouts-promote.json ├── argo-rollouts-set-image.json ├── argo-rollouts-status.json ├── argo-rollouts-undo.json ├── aspnet-state-database.json ├── aspnetcore-set-environment-variable-iis.json ├── aspnetcore-set-environment-variable.json ├── automate-manual-intervention-response.json ├── aws-add-imagetag-to-all-used-ecr-packages.json ├── aws-add-remove-elbv2.json ├── aws-add-tags-to-ec2-instance.json ├── aws-change-ec2-instance-state.json ├── aws-cloudformation-create.json ├── aws-cloudfront-invalidate-cache.json ├── aws-configure-lambda-alias.json ├── aws-configure-lambda-api-gateway-integration.json ├── aws-configure-lambda.json ├── aws-create-a-route-53-resource-record.json ├── aws-create-a-security-group.json ├── aws-deploy-lambda-iam.json ├── aws-deploy-lambda-image.json ├── aws-deploy-lambda.json ├── aws-deregister-elb-instance.json ├── aws-ec2-get-public-hostname.json ├── aws-elastic-beanstalk-dotnet-webapp-deploy.json ├── aws-execute-powershell.json ├── aws-find-blue-green-asg.json ├── aws-find-blue-green-target-group.json ├── aws-initiate-instance-refresh.json ├── aws-lambda-create.json ├── aws-launch-ec2-instance.json ├── aws-linux-install-tentacle.json ├── aws-rds-restore-s3.json ├── aws-rds-sql-backup-s3.json ├── aws-register-elb-instance.json ├── aws-secrets-manager-retrieve-secrets.json ├── aws-set-blue-green-target-group.json ├── aws-update-launch-template-ami.json ├── aws-windows-install-tentacle.json ├── azure-add-or-update-azure-loadbalancer-health-probe.json ├── azure-add-or-update-azure-loadbalancer-rule.json ├── azure-add-service-fabric-cluster-certificate.json ├── azure-administer-webjob.json ├── azure-app-config-kv-retrieve-values.json ├── azure-blob-storage-set-cors.json ├── azure-blob-storage-upload.json ├── azure-capture-virtualmachine-image.json ├── azure-check-vmss-provision-status.json ├── azure-create-containerapp-environment.json ├── azure-create-new-resourcegroup.json ├── azure-create-new-webapp.json ├── azure-create-resource-group-az-module.json ├── azure-create-staging-deployment-slot.json ├── azure-database-execute-sql-cmd.json ├── azure-database-export.json ├── azure-database-import-create-new-DTU.json ├── azure-database-import-create-new-vcpu.json ├── azure-database-import.json ├── azure-delete-from-webapp.json ├── azure-delete-resource-group-az-module.json ├── azure-delete-resource-group.json ├── azure-deploy-containerapp.json ├── azure-devops-build-pipeline.json ├── azure-function-deployment.json ├── azure-function-set-appsettings-from-azconfig.json ├── azure-install-windows-tentacle.json ├── azure-keyvault-retrieve-secrets.json ├── azure-linux-install-octopus-tentacle.json ├── azure-load-appsettings-from-file.json ├── azure-manage-webjob.json ├── azure-powershell-version-update.json ├── azure-remove-resource-group-deployments.json ├── azure-site-extensions-install.json ├── azure-switch-staging-deployment-slot.json ├── azure-sync-instancecount-from-prod-to-staging.json ├── azure-upload-files.json ├── azure-web-app-disable-appoffline.json ├── azure-web-app-enable-appoffline.json ├── azure-web-app-get-deployment-user.json ├── azure-web-app-restart.json ├── azure-web-app-rolling-restart.json ├── azure-web-app-set-app-settings.json ├── azure-web-app-set-traffic.json ├── azure-web-app-slot-swap.json ├── azure-web-app-ssl.json ├── azure-web-app-start.json ├── azure-web-app-stop.json ├── backup-azure-database-to-azure-storage.json ├── bash-check-net-core-framework-version.json ├── bash-http-test-url.json ├── bash-service-check-running.json ├── block-progression.json ├── calculate-deployment-mode.json ├── cassandra-create-keyspace.json ├── chef-run-cookbook.json ├── chocolatey-ensure-installed.json ├── chocolatey-install-package.json ├── chocolatey-manage-config.json ├── chocolatey-manage-features.json ├── chocolatey-manage-sources.json ├── chocolatey-pin-package.json ├── clickonce-from-deployed-package.json ├── clickonce-re-sign.json ├── clickonce-sign-file.json ├── clickonce-update-application-file.json ├── clickonce-update-manifest-file.json ├── clone-tenant.json ├── com-component-register-unregister.json ├── configuration-encrypt-app-config-section.json ├── configuration-encrypt-app-or-web-config-section.json ├── configuration-encrypt-web-config-section.json ├── configure-spm-client.json ├── create-azure-website-staging-slot.json ├── create-tenant.json ├── cyberark-conjur-retrieve-a-secret.json ├── cyberark-conjur-retrieve-secrets.json ├── datadog-create-event.json ├── datadog-schedule-downtime.json ├── datadog-task-log.json ├── deploy-child-project.json ├── determine-rolling-deploy-window-size.json ├── docker-create-and-push-image.json ├── docker-install-linux.json ├── docker-install-windows.json ├── dsc-windows-service.json ├── dyn-create-an-A-record.json ├── edgecast-cdn-purge.json ├── elmahio-notify-deployment.json ├── elmahio-upload-source-map.json ├── epplus-register-dll-gac.json ├── event-tracing-register-manifest.json ├── event-tracing-unregister-manifest.json ├── f5-enable-disable-member.json ├── f5-enable-disable-multiple-pools.json ├── f5-gtm-enable-or-disable.json ├── f5-ltm-rest-enable-disable-member.json ├── file-download.json ├── file-system-add-hosts-entry.json ├── file-system-backup-directory.json ├── file-system-check-disk-space.json ├── file-system-clean-asp-net-temp-files.json ├── file-system-clean-configuration-transforms.json ├── file-system-clean-directory.json ├── file-system-combine-files.json ├── file-system-copy-file.json ├── file-system-create-file.json ├── file-system-create-folder.json ├── file-system-create-folders.json ├── file-system-create-symlink.json ├── file-system-find-and-replace.json ├── file-system-grant-permissions.json ├── file-system-rclone.json ├── file-system-regular-expression-find-and-replace.json ├── file-system-rename-file.json ├── file-system-restore-directory.json ├── file-system-rsync.json ├── file-system-zip-directory-contents.json ├── firebase-deploy.json ├── flyway-database-migrations.json ├── ftp-uploadfiles-package.json ├── ftp-uploadfiles.json ├── gcp-secret-manager-retrieve-secrets.json ├── ghostinspector-runsuite.json ├── git-clone-copy-push-another-repo.json ├── git-clone-copy-push-package.json ├── git-clone-copy-push.json ├── git-create-pull-request.json ├── git-pull-https.json ├── git-push-https.json ├── git-tag-repository.json ├── github-create-repo.json ├── github-create-secret.json ├── github-fork-repo.json ├── github-push-yeoman-to-repo.json ├── github-report-deployment.json ├── github-tag-release.json ├── github-verify-attestation.json ├── gitlab-create-tag.json ├── google-chat-send-message.json ├── grate-database-migration.json ├── hashicorp-vault-approle-get-wrapped-secretid.json ├── hashicorp-vault-approle-login.json ├── hashicorp-vault-approle-unwrap-secretid-login.json ├── hashicorp-vault-approle-unwrap-secretid.json ├── hashicorp-vault-generate-jwt.json ├── hashicorp-vault-jwt-login.json ├── hashicorp-vault-keyvalue-v1-retrieve-secrets.json ├── hashicorp-vault-keyvalue-v2-retrieve-secrets.json ├── hashicorp-vault-ldap-login.json ├── hg-get-changelog.json ├── hipchat-notify-api-v1.json ├── hipchat-notify.json ├── hockeyapp-upload-mobile-app.json ├── http-invoke-url.json ├── http-post-form.json ├── http-test-url.json ├── hydra-update-octopus-tentacle.json ├── iis-add-isapicgirestrictionexception.json ├── iis-app-create.json ├── iis-app-remove.json ├── iis-app-set-connect-as-credential.json ├── iis-app-update-property.json ├── iis-apppool-create.json ├── iis-apppool-delete.json ├── iis-apppool-restart.json ├── iis-apppool-set-managed-pipeline-mode.json ├── iis-apppool-start.json ├── iis-apppool-stop.json ├── iis-apppool-update-property.json ├── iis-apppool-update-recycle-settings.json ├── iis-autostartprovider-add.json ├── iis-backup-iis-configuration.json ├── iis-bind-ssl-certificate-with-sni-enabled.json ├── iis-bindings-backup.json ├── iis-bindings-enable-ssl-ccs.json ├── iis-bindings-restore.json ├── iis-change-app-offline-online.json ├── iis-configure-compression.json ├── iis-list-sites.json ├── iis-redirect-to-https.json ├── iis-reset.json ├── iis-set-authentication.steptemplate.json ├── iis-set-http-redirect.json ├── iis-vdir-create.json ├── iis-website-add-http-s-bindings.json ├── iis-website-add-release-number-to-response-header.json ├── iis-website-add-windows-auth-providers.json ├── iis-website-appfabric-application-start.json ├── iis-website-appfabric-application-stop.json ├── iis-website-create.json ├── iis-website-delete.json ├── iis-website-restart.json ├── iis-website-set-ip-security.json ├── iis-website-set-log-format.json ├── iis-website-start.json ├── iis-website-stop.json ├── iis-website-update-iis-log-path.json ├── iis-website-update-property.json ├── import-cert-from-azure-keyvault.json ├── import-databricks-workbooks.json ├── jasper-clear-cache.json ├── jira-transition-issues.json ├── jira-update-version.json ├── json-merge.json ├── json-validate-format-and-schema.json ├── jwt-generate-json-web-token.json ├── k8s-create-serviceaccount-and-target.json ├── k8s-deploy-kustomize.json ├── k8s-eksctl-create-cluster-bash.json ├── k8s-hpa-external-metrics.json ├── k8s-hpa-object-metrics.json ├── k8s-hpa-pod-metrics.json ├── k8s-hpa-resource-metrics.json ├── k8s-inspect-resource-pwsh.json ├── keeper-secretsmanager-retrieve-secrets.json ├── launchdarkly-toggle-feature-flag.json ├── letsencrypt-azure-dns.json ├── letsencrypt-cloudflare.json ├── letsencrypt-dnsimple.json ├── letsencrypt-google-cloud.json ├── letsencrypt-route-53.json ├── letsencrypt-selfhosted-http.json ├── linux-service-start-stop-restart.json ├── liquibase-apply-changeset.json ├── liquibase-run-command.json ├── logos │ ├── 1password-connect.png │ ├── akamai.png │ ├── amazon-chime.png │ ├── ansible.png │ ├── apexsql.png │ ├── apollo.png │ ├── argo.png │ ├── aspnet.png │ ├── aws.png │ ├── azure-devops.png │ ├── azure-keyvault.png │ ├── azure-site-extensions.png │ ├── azure.png │ ├── azurefunctions.png │ ├── bash.png │ ├── cassandra.png │ ├── chef.png │ ├── chocolatey.png │ ├── clickonce.png │ ├── cyberark.png │ ├── databricks.png │ ├── datadog.png │ ├── dll.png │ ├── dlm.png │ ├── docker.png │ ├── dotnetcore.png │ ├── dyn.png │ ├── edgecast.png │ ├── elmah.png │ ├── email.png │ ├── encrypt.png │ ├── entityframework.png │ ├── event-tracing.png │ ├── exe.png │ ├── f5.png │ ├── filesystem.png │ ├── firebase.png │ ├── flyway.png │ ├── ghostinspector.png │ ├── git.png │ ├── github.png │ ├── gitlab.png │ ├── google-chat.png │ ├── google-cloud.png │ ├── grate.png │ ├── hashicorp-vault.png │ ├── hipchat.png │ ├── hockeyapp.png │ ├── hosts-file.png │ ├── http.png │ ├── iis.png │ ├── jasper.png │ ├── jenkins.png │ ├── jira.png │ ├── json.png │ ├── jwt.png │ ├── k8s.png │ ├── keeper-secretsmanager.png │ ├── launchdarkly.png │ ├── lets-encrypt.png │ ├── linux.png │ ├── liquibase.png │ ├── mabl.png │ ├── mariadb.png │ ├── medianova.png │ ├── mercurial.png │ ├── microsoft-power-automate.png │ ├── microsoft-teams.png │ ├── mongodb.png │ ├── mulesoft.png │ ├── mysql.png │ ├── netscaler.png │ ├── newrelic.png │ ├── nunit.png │ ├── octopus.png │ ├── opslevel.png │ ├── oracle.png │ ├── other.png │ ├── pagerduty.png │ ├── pingdom.png │ ├── postgresql.png │ ├── proxmox.png │ ├── pulumi.png │ ├── pushalot.png │ ├── pushover.png │ ├── rabbitmq.png │ ├── rackspace.png │ ├── ravendb.png │ ├── raygun.png │ ├── readyroll.png │ ├── redgate.png │ ├── redis.png │ ├── rnhub.png │ ├── rollbar.png │ ├── roundhouse.png │ ├── sentry.png │ ├── seq.png │ ├── sharepoint.png │ ├── sitecore.png │ ├── slack.png │ ├── snowflake.png │ ├── solarwinds.png │ ├── spark.png │ ├── splunk.png │ ├── sql.png │ ├── ssl.png │ ├── stackify.png │ ├── statuscake.png │ ├── statuspage.png │ ├── swaggerhub.png │ ├── teamcity.png │ ├── tenants.png │ ├── terraform.png │ ├── testery.png │ ├── tests.png │ ├── tomcat.png │ ├── topshelf.png │ ├── twilio.png │ ├── umbraco.png │ ├── unicorn.png │ ├── unzip.png │ ├── venafi.png │ ├── victorops.png │ ├── wait.png │ ├── webdeploy.png │ ├── windows.png │ ├── winscp.png │ ├── xamarin.png │ ├── xml.png │ ├── xunit.png │ └── zabbix.png ├── mariadb-add-database-user-to-role.json ├── mariadb-create-database.json ├── mariadb-create-user.json ├── medianova-purge.json ├── microsoft-power-automate-post-adaptivecard.json ├── microsoft-teams-post-a-message.json ├── mongodb-add-update-user-roles.json ├── mongodb-atlas-create-snapshot.json ├── mongodb-atlas-pause-resume-cluster.json ├── mongodb-atlas-restore-snapshot.json ├── mongodb-create-database.json ├── mongodb-create-user.json ├── msmq-create-transactional-queue.json ├── mulesoft-cloudhub.json ├── mysql-add-database-user-to-role.json ├── mysql-backup-database.json ├── mysql-create-database.json ├── mysql-create-user.json ├── mysql-execute-command.json ├── netscaler-adc-enable-or-disable-service.json ├── network-add-ssl-certificate-binding.json ├── network-add-url-reservation.json ├── newrelic-complete-deployment.json ├── nssm-windows-service-create.json ├── octopus-add-runbook-to-project-azure.json ├── octopus-add-runbook-to-project.json ├── octopus-ai-prompt.json ├── octopus-apply-octoterra-module-azure.json ├── octopus-apply-octoterra-module-s3.json ├── octopus-artifact-collect.json ├── octopus-certificate-expiry-check.json ├── octopus-chain-deployment.json ├── octopus-consolidate-releasenotes.json ├── octopus-create-octoterra-space-azure.json ├── octopus-create-octoterra-space-s3.json ├── octopus-delete-machine-registration.json ├── octopus-find-cac-updates.json ├── octopus-get-octopus-usage.json ├── octopus-import-certificate.json ├── octopus-lookup-space-id.json ├── octopus-merge-cac-updates.json ├── octopus-octolint-a-space.json ├── octopus-redeploy-previous-release.json ├── octopus-reference-architecture-eks.json ├── octopus-reference-architecture-webapp.json ├── octopus-register-aks-k8s-cluster.json ├── octopus-register-listening-target.json ├── octopus-register-listening-worker.json ├── octopus-serialize-project-to-terraform.json ├── octopus-serialize-runbook-to-terraform.json ├── octopus-serialize-space-to-terraform.json ├── octopus-set-Octopus-releaese-notes-from-TFS-query.json ├── octopus-support-export.json ├── octopus-validate-deploying-user.json ├── octopus-wait-for-deployment-target-registration.json ├── octopus-worker-healthcheck.json ├── onepassword-retrieve-secrets.json ├── opslevel-create-deploy-event-bash.json ├── opslevel-create-deploy-event-ps.json ├── oracle-add-user-to-role.json ├── oracle-create-user-if-not-exists.json ├── oracle-run-script-through-sqlplus.json ├── pagerduty-close-maintenance-window.json ├── pagerduty-create-incident.json ├── pagerduty-open-maintenance-window.json ├── pause-resume-pingdom-check.json ├── pingdom-create-uptime-check.json ├── pingdom-modify-uptime-check.json ├── postgres-add-database-user-to-role.json ├── postgres-create-database.json ├── postgres-create-user.json ├── postgres-execute-sql.json ├── proxmox-deploy-lxc.json ├── proxmox-destroy-lxc.json ├── proxmox-start-lxc.json ├── proxmox-stop-lxc.json ├── pushalot-send-notification.json ├── pushover-send-notification.json ├── rabbitmq-notify-deploy.json ├── rackspace-update-load-balancer.json ├── ravendb-create-database.json ├── ravendb-create-filesystem.json ├── ravendb-delete-database.json ├── ravendb-delete-filesystem.json ├── ravendb-smuggler-move-data-between-database.json ├── ravendb-smuggler-move-data-between-filesystems.json ├── ravendb-update-properties-within-a-document.json ├── raygun-api-register-deployment.json ├── re-prioritize-octopus-deploy-tasks.json ├── readyroll-deploy-database-package.json ├── redgate-create-database-release-worker-friendly.json ├── redgate-create-database-release.json ├── redgate-deploy-database-release-worker-friendly.json ├── redgate-deploy-from-database-release.json ├── redgate-deploy-from-database.json ├── redgate-deploy-from-package-worker-friendly.json ├── redgate-deploy-from-package.json ├── redgate-oracle-create-release.json ├── redgate-sql-clone-create-clone.json ├── redgate-sql-clone-create-image.json ├── redgate-sql-clone-delete-clone.json ├── redgate-sql-clone-delete-image.json ├── redis-install.json ├── redis-uninstall.json ├── register-linux-tentacle.json ├── registry-update-configuration-variables-in-export-file.json ├── releasenoteshub-add-release-association.json ├── releasenoteshub-pull-trigger.json ├── remove-server-from-azure-load-balancer.json ├── retention-policy.json ├── rollbar-notify-deployment.json ├── rotate_azure_load_balancer_pool.json ├── roundhouse-database-migration.json ├── run-entity-framework-migrations.json ├── run-mabl-tests.json ├── run-mstest.json ├── run-octopus-runbook.json ├── run-pulumi-on-linux.json ├── run-pulumi-on-windows.json ├── run-windows-installer.json ├── run-xunit.json ├── save-octopus-output-variable-with-scoping.json ├── save-octopus-output-variable.json ├── scheduled-task-create-from-xml.json ├── send-email-using-mailkit.json ├── send-sms-using-messagebird.json ├── sentry-release-tracking-token-auth.json ├── sentry-release-tracking.json ├── seq-log-deployment.json ├── sharepoint-solution-deployment.json ├── sitecore-deploy-scwdp.json ├── sitecore-settings-variable-replacement.json ├── sitecore-unicorn-sync.json ├── slack-detailed-notification-bash.json ├── slack-detailed-notification.json ├── slack-notify-deployment.json ├── slack-send-notification-using-block-kit.json ├── slack-send-simple-notification-bash.json ├── slack-send-simple-notification.json ├── snowchange-deploy-scripts.json ├── solarwinds-manage.json ├── solarwinds-unmanage.json ├── spark-sendnotification.json ├── splunk-forward-file.json ├── splunk-log-event-collector.json ├── sql-add-database-user-to-role.json ├── sql-backup-database.json ├── sql-create-database-enhanced.json ├── sql-create-database-user.json ├── sql-create-database.json ├── sql-create-job-category.json ├── sql-create-sql-user.json ├── sql-delete-database.json ├── sql-delete-sql-user.json ├── sql-deploy-dacpac-sqlpackage.json ├── sql-deploylog-read.json ├── sql-deploylog-update.json ├── sql-execute-script-file.json ├── sql-execute-script-with-authentication.json ├── sql-execute-script.json ├── sql-execute-scripts-ordered.json ├── sql-execute-sql-agent-job.json ├── sql-execute-sql-files.json ├── sql-fix-orphaned-user.json ├── sql-restore-database.json ├── sql-smo-change-usermode.json ├── sql-smo-create-database.json ├── sql-smo-create-login-and-user.json ├── sql-smo-drop-database.json ├── sql-test-connection-string.json ├── sql-update-job.json ├── sqlazure-restore-database-from-azure-storage.json ├── sqlserver-high-availability-group.json ├── sqlserver-project-deployment-model-ispac-deploy.json ├── ssas-deploy-from-package.json ├── ssis-deploy-ispac-from-package-parameter.json ├── ssis-deploy-ispac-from-package.json ├── ssis-deploy-ispac-from-referenced-package.json ├── ssis-deploy-ispac-with-enviroment.json ├── ssis-deploy-sqlagentjob.json ├── ssl-certificate-install.json ├── ssl-disable-sslv2.json ├── ssl-write-certificate-pem-and-key.json ├── ssrs-deploy-from-package-parameter.json ├── ssrs-deploy-from-package.json ├── ssrs-report-backup.json ├── stackify-api-template.json ├── statuscake-maintenance-window.json ├── statuspageio-create-scheduled-maintenance-incident.json ├── statuspageio-update-scheduled-maintenance-incident.json ├── swaggerhub-post-api.json ├── teamcity-download-artifact.json ├── teamcity-pin-build-and-dependencies.json ├── teamcity-run-build.json ├── teamcity-tag-build.json ├── teamcity-trigger-build.json ├── terraform-custom-script.json ├── test-run-nunit.json ├── testery-create-test-run.json ├── testery-report-deployment.json ├── tests │ ├── Invoke-PesterTests.ps1 │ ├── sql-backup-database.ScriptBody.Tests.ps1 │ └── windows-scheduled-task-create.ScriptBody.Tests.ps1 ├── tomcat-undeploy-application.json ├── topshelf-install.json ├── topshelf-uninstall.json ├── trigger-multitenant-deployment.json ├── twilio-send-sms-powershell.json ├── umbraco-v7-folder-permissions.json ├── unicorn-sync-configuration.json ├── unzip.json ├── update-hosts-file.json ├── upgrade-octopus-server.json ├── upgrade_to_latest_tentacle.json ├── variables-find-unreplaced.json ├── variables-substitute-in-files.json ├── variables-substitute-in-json-file.json ├── venafi-tpp-create-provision-certificate.json ├── venafi-tpp-export-certificate.json ├── venafi-tpp-find-certificate-details.json ├── venafi-tpp-generate-oauth-token.json ├── venafi-tpp-import-certificate-into-octopus.json ├── venafi-tpp-retrieve-certificate-details.json ├── venafi-tpp-revoke-oauth-token.json ├── victorops-create-alert.json ├── wait-for-iis-connections-to-drop-to-zero.json ├── wait.json ├── web-deploy-azure-convention.json ├── web-deploy-publish-website-msdeploy.json ├── windows-add-back-connection-host-name.json ├── windows-add-poll-endpoint-task.json ├── windows-add-users-to-local-groups.json ├── windows-apply-windows-updates.json ├── windows-certificate-grant-read-access.json ├── windows-check-net-core-framework-version.json ├── windows-check-net-framework-version.json ├── windows-create-eventsource.json ├── windows-create-shortcut.json ├── windows-disk-cleanup.json ├── windows-ensure-features-installed.json ├── windows-ensure-hosts-file-entry-exists.json ├── windows-firewall-configure-rule.json ├── windows-get-pending-reboot.json ├── windows-get-processor-load.json ├── windows-get-uptime.json ├── windows-grant-logon-as-service.json ├── windows-local-user.json ├── windows-map-network-drive.json ├── windows-restart-computer.json ├── windows-restart-if-required.json ├── windows-scheduled-task-changepath.json ├── windows-scheduled-task-create.json ├── windows-scheduled-task-disable.json ├── windows-scheduled-task-enable.json ├── windows-service-change-binary-path.json ├── windows-service-check-status.json ├── windows-service-create.json ├── windows-service-remove.json ├── windows-service-restart.json ├── windows-service-set-recovery-on-failure-actions.json ├── windows-service-set-startup-type.json ├── windows-service-start.json ├── windows-service-stop-or-kill.json ├── windows-service-stop.json ├── windows-wait-for-or-force-close-application.json ├── winsw-install.json ├── xamarin-Insights-upload-dysm.json ├── xamarin-testcloud-execute-testrun.json ├── xml-attribute-update.json ├── xml-transform-using-xdt.json ├── yams-upload.json └── zabbix-node-api-maintenance.json ├── tools ├── Converter.ps1 ├── GitVersion │ ├── GitVersion.exe │ ├── GitVersion.pdb │ ├── LibGit2Sharp.dll │ ├── LibGit2Sharp.dll.config │ ├── LibGit2Sharp.pdb │ └── lib │ │ ├── linux │ │ └── x86_64 │ │ │ └── libgit2-381caf5.so │ │ ├── osx │ │ └── libgit2-381caf5.dylib │ │ └── win32 │ │ ├── x64 │ │ ├── git2-381caf5.dll │ │ └── git2-381caf5.pdb │ │ └── x86 │ │ ├── git2-381caf5.dll │ │ └── git2-381caf5.pdb ├── ReleaseNotesGenerator │ ├── Generate_ReleaseNotes.cmd │ ├── ReleaseNotesGenerator.csx │ ├── project.json │ └── scriptcs_nuget.config ├── StepTemplatePacker │ ├── StepTemplatePacker.psd1 │ ├── scripts │ │ ├── ConvertTo-OctopusJson.ps1 │ │ ├── Export-OctopusStepTemplateCustomScript.ps1 │ │ ├── Export-OctopusStepTemplateScriptBody.ps1 │ │ ├── Export-OctopusStepTemplateScripts.ps1 │ │ ├── Get-OctopusStepTemplateFileType.ps1 │ │ ├── Get-OctopusStepTemplateProperty.ps1 │ │ ├── Get-OctopusTextFile.ps1 │ │ ├── Import-OctopusStepTemplateCustomScript.ps1 │ │ ├── Import-OctopusStepTemplateScriptBody.ps1 │ │ ├── Import-OctopusStepTemplateScripts.ps1 │ │ ├── Set-OctopusStepTemplateProperty.ps1 │ │ └── Set-OctopusTextFile.ps1 │ └── tests │ │ ├── ConvertTo-OctopusJson.Tests.ps1 │ │ ├── Get-OctopusStepTemplateProperty.Tests.ps1 │ │ ├── Invoke-PesterTests.ps1 │ │ └── Set-OctopusStepTemplateProperty.Tests.ps1 ├── _pack.ps1 └── _unpack.ps1 └── web.config /.deployment: -------------------------------------------------------------------------------- 1 | [config] 2 | command = bash deploy.sh -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig helps developers define and maintain consistent 2 | # coding styles between different editors and IDEs 3 | # editorconfig.org 4 | 5 | root = true 6 | 7 | 8 | [*] 9 | 10 | # change these settings to your own preference 11 | indent_style = space 12 | indent_size = 2 13 | 14 | # we recommend you to keep these unchanged 15 | end_of_line = lf 16 | charset = utf-8 17 | trim_trailing_whitespace = true 18 | insert_final_newline = true 19 | 20 | [*.md] 21 | trim_trailing_whitespace = false 22 | 23 | [{package,bower}.json] 24 | indent_style = space 25 | indent_size = 2 26 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | build/ 3 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Set the default behavior, in case people don't have core.autocrlf set. 2 | * text=auto 3 | 4 | # Denote all files that are truly binary and should not be modified. 5 | *.png binary 6 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # Lines starting with '#' are comments. 2 | # Each line is a file pattern followed by one or more owners. 3 | 4 | # These owners will be the default owners for everything in the repo. 5 | # 6 | 7 | # Order is important. The last matching pattern has the most precedence. 8 | # So if a pull request only touches javascript files, only these owners 9 | # will be requested to review. 10 | # *.js @octocat @github/js 11 | 12 | # You can also use email addresses if you prefer. 13 | # docs/* docs@example.com 14 | -------------------------------------------------------------------------------- /.github/workflows/Hyponome.yml: -------------------------------------------------------------------------------- 1 | name: Link to hyponome 2 | on: 3 | pull_request_target: 4 | types: [opened] 5 | paths: 6 | - 'step-templates/**' 7 | jobs: 8 | comment: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - uses: actions/github-script@v6 12 | with: 13 | script: | 14 | github.rest.issues.createComment({ 15 | issue_number: context.issue.number, 16 | owner: context.repo.owner, 17 | repo: context.repo.repo, 18 | body: `Start Hyponome locally 19 | 20 | docker pull ghcr.io/hnrkndrssn/hyponome:main 21 | docker run --rm -p 8000:8080 -it ghcr.io/hnrkndrssn/hyponome:main 22 | 23 | [Review in Hyponome](http://localhost:8000/pulls/${context.issue.number})` 24 | }) 25 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | dist/ 3 | build/ 4 | app/services/*.json 5 | integrations/ 6 | .idea/ 7 | 8 | junitresults.xml 9 | scriptcs_packages/ 10 | scriptcs_packages.config 11 | 12 | step-templates/*.ps1 13 | step-templates/*.sh 14 | step-templates/*.py 15 | /.vs 16 | !.vscode 17 | -------------------------------------------------------------------------------- /.octopus/channels.ocl: -------------------------------------------------------------------------------- 1 | channel "2.x" { 2 | description = "The new Octopus Deploy Library site, written in ReactJS" 3 | } 4 | 5 | channel "3.x" { 6 | is_default = true 7 | } -------------------------------------------------------------------------------- /.octopus/deployment_settings.ocl: -------------------------------------------------------------------------------- 1 | connectivity_policy {} 2 | 3 | versioning_strategy { 4 | template = "" 5 | } -------------------------------------------------------------------------------- /.octopus/schema_version.ocl: -------------------------------------------------------------------------------- 1 | version = 7 -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": false, 3 | "printWidth": 250, 4 | "tabWidth": 2, 5 | "trailingComma": "es5", 6 | "endOfLine": "auto" 7 | } 8 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.codeActionsOnSave": { 3 | "source.fixAll.eslint": "explicit" 4 | }, 5 | "files.insertFinalNewline": true, 6 | } 7 | -------------------------------------------------------------------------------- /GitVersion.yml: -------------------------------------------------------------------------------- 1 | mode: Mainline 2 | -------------------------------------------------------------------------------- /IISNode.yml: -------------------------------------------------------------------------------- 1 | loggingEnabled: true 2 | devErrorsEnabled: true 3 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) Octopus Deploy and contributors. All rights reserved. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); you may not use 4 | these files except in compliance with the License. You may obtain a copy of the 5 | License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software distributed 10 | under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 11 | CONDITIONS OF ANY KIND, either express or implied. See the License for the 12 | specific language governing permissions and limitations under the License. 13 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Library 2 | ======= 3 | 4 | A repository of step templates and other community-contributed extensions to Octopus Deploy. The website to download step templates from is [https://library.octopus.com](https://library.octopus.com). 5 | 6 | Organization 7 | ------------ 8 | 9 | * *Step templates* are checked into `/step-templates` as raw JSON exports direct from Octopus Deploy 10 | * The *library website* is largely under `/app`, with build artifacts at the root of the repository 11 | * The `/tools` folder contains utilities to help with editing step templates 12 | 13 | Contributing step templates or to the website 14 | --------------------------------------------- 15 | 16 | Read our [contributing guidelines](https://github.com/OctopusDeploy/Library/blob/master/.github/CONTRIBUTING.md) for information about contributing step templates and to the website. 17 | 18 | Reviewing PRs 19 | ------------- 20 | 21 | When reviewing a PR, keep the following things in mind: 22 | * `Id` should be a **GUID** that is not `00000000-0000-0000-0000-000000000000` 23 | * `Version` should be incremented, otherwise the integration with Octopus won't update the step template correctly 24 | * Parameter names should not start with `$` 25 | * The `DefaultValue`s of `Parameter`s should be either a string or null. 26 | * `LastModifiedBy` field must be present, and (_optionally_) updated with the correct author 27 | * If a new `Category` has been created: 28 | * An image with the name `{categoryname}.png` must be present under the `step-templates/logos` folder 29 | * The `switch` in the `humanize` function in [`gulpfile.babel.js`](https://github.com/OctopusDeploy/Library/blob/master/gulpfile.babel.js#L92) must have a `case` statement corresponding to it 30 | -------------------------------------------------------------------------------- /app/Browser.jsx: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import React from "react"; 4 | import ReactDOM from "react-dom"; 5 | import { match, Router, browserHistory } from "react-router"; 6 | 7 | import Analytics from "./services/Analytics.js"; 8 | 9 | import LibraryActions from "./actions/LibraryActions"; 10 | import routes from "./Routes"; 11 | 12 | function onRouteChange() { 13 | Analytics.sendPageView(); 14 | } 15 | 16 | LibraryActions.sendTemplates(window.stepTemplates, () => { 17 | ReactDOM.render( 18 | 19 | {routes} 20 | , 21 | document.getElementById("reactRoot") 22 | ); 23 | }); 24 | -------------------------------------------------------------------------------- /app/Routes.jsx: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import React from "react"; 4 | import { Router, IndexRedirect, Route } from "react-router/umd/ReactRouter"; 5 | 6 | import App from "./components/App"; 7 | import Listing from "./components/Listing"; 8 | import TemplateItem from "./components/TemplateItem"; 9 | 10 | let routes = ( 11 | 12 | 13 | 14 | 15 | 16 | 17 | ); 18 | 19 | export default routes; 20 | -------------------------------------------------------------------------------- /app/actions/LibraryActions.jsx: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import AppDispatcher from "./../dispatcher.js"; 4 | 5 | const LibraryActions = { 6 | sendTemplates(templates, callback) { 7 | AppDispatcher.dispatch({ 8 | actionType: "READ_SUCCESS", 9 | templates: templates, 10 | }); 11 | callback(); 12 | }, 13 | }; 14 | 15 | export default LibraryActions; 16 | -------------------------------------------------------------------------------- /app/components/App.jsx: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import React from "react"; 4 | import RouteHandler from "react-router"; 5 | import PropTypes from "prop-types"; 6 | 7 | import Header from "./Header"; 8 | import Listing from "./Listing"; 9 | import Footer from "./Footer"; 10 | 11 | const displayName = "octopus-library"; 12 | 13 | export default class App extends React.Component { 14 | constructor(props) { 15 | super(props); 16 | } 17 | 18 | render() { 19 | return ( 20 |
21 |
22 |
23 |
24 |
{this.props.children || }
25 |
26 |
27 |
28 |
29 | ); 30 | } 31 | } 32 | 33 | App.displayName = displayName; 34 | 35 | App.propTypes = { 36 | children: PropTypes.object, 37 | }; 38 | 39 | App.defaultProps = { 40 | children: {}, 41 | }; 42 | -------------------------------------------------------------------------------- /app/components/Footer.jsx: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import React from "react"; 4 | 5 | const displayName = "octopus-library-footer"; 6 | 7 | export default class Footer extends React.Component { 8 | render() { 9 | return ( 10 |
11 |
12 |
13 |

14 | The Octopus Deploy Library is a way for users of Octopus Deploy to share useful code. 15 |

16 |

17 | Need help? Feel free to contact the team via our  18 | 19 | support forum 20 | 21 | . 22 |

23 | 24 | Built with by the
team
25 |
26 | 38 |
39 |
40 |
41 | ); 42 | } 43 | } 44 | 45 | Footer.displayName = displayName; 46 | -------------------------------------------------------------------------------- /app/components/Header.jsx: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import React from "react"; 4 | import { Link } from "react-router"; 5 | 6 | const displayName = "octopus-library-header"; 7 | 8 | export default class Header extends React.Component { 9 | render() { 10 | return ( 11 |
12 |
13 |
14 |
15 | 16 |

Octopus Deploy Library

17 | 18 |
19 |
20 |
21 |
22 | ); 23 | } 24 | } 25 | 26 | Header.displayName = displayName; 27 | -------------------------------------------------------------------------------- /app/components/Listing.jsx: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import React from "react"; 4 | import PropTypes from "prop-types"; 5 | 6 | import SearchBox from "./SearchBox"; 7 | import TemplateList from "./TemplateList"; 8 | import LibraryStore from "./../stores/LibraryStore"; 9 | 10 | const displayName = "octopus-library-listing"; 11 | 12 | export default class Listing extends React.Component { 13 | constructor(props) { 14 | super(props); 15 | this.state = { filterText: this.props.params.searchTerm || "", templates: LibraryStore.getItems() }; 16 | 17 | this._handleUserInput = this._handleUserInput.bind(this); 18 | } 19 | 20 | componentDidMount() { 21 | LibraryStore.addChangeListener(this._onChange); 22 | } 23 | 24 | componentWillDismount() { 25 | LibraryStore.removeChangeListener(this._onChange); 26 | } 27 | 28 | _onChange() { 29 | this.setState({ 30 | templates: LibraryStore.getItems(), 31 | }); 32 | } 33 | 34 | _handleUserInput(filterText) { 35 | this.setState({ 36 | filterText: filterText, 37 | }); 38 | } 39 | 40 | render() { 41 | return ( 42 |
43 | 44 | 45 |
46 | ); 47 | } 48 | } 49 | 50 | Listing.propTypes = { 51 | params: PropTypes.object, 52 | }; 53 | 54 | Listing.defaultProps = { 55 | params: {}, 56 | }; 57 | 58 | Listing.displayName = displayName; 59 | -------------------------------------------------------------------------------- /app/components/SearchBox.jsx: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import React from "react"; 4 | import PropTypes from "prop-types"; 5 | 6 | const displayName = "octopus-library-search-box"; 7 | 8 | export default class SearchBox extends React.Component { 9 | constructor() { 10 | super(); 11 | this.handleSearchFilterChange = this.handleSearchFilterChange.bind(this); 12 | } 13 | 14 | componentDidMount() { 15 | this._searchFilter.focus(); 16 | } 17 | 18 | handleSearchFilterChange() { 19 | this.props.handleUserInput(this._searchFilter.value); 20 | } 21 | 22 | render() { 23 | let placeholder = "Search " + this.props.templateCount + " community contributed templates..."; 24 | return ( 25 |
26 |
27 |
28 |
29 |
30 |
31 | (this._searchFilter = c)} type="text" value={this.props.filterText} /> 32 |
33 |
34 |
35 |
36 |

37 | Be part of it! 38 |
Submit templates, report issues and send patches at the GitHub project site. 39 |

40 |
41 |
42 |
43 |
44 | ); 45 | } 46 | } 47 | 48 | SearchBox.propTypes = { 49 | filterText: PropTypes.string, 50 | handleUserInput: PropTypes.any, 51 | templateCount: PropTypes.number, 52 | }; 53 | 54 | SearchBox.defaultProps = { 55 | filterText: "", 56 | templateCount: 0, 57 | }; 58 | 59 | SearchBox.displayName = displayName; 60 | -------------------------------------------------------------------------------- /app/components/TemplateList.jsx: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import React from "react"; 4 | import moment from "moment"; 5 | import { Link } from "react-router"; 6 | import SlugMaker from "./../services/SlugMaker"; 7 | import PropTypes from "prop-types"; 8 | import { marked } from "marked"; 9 | import DOMPurify from "isomorphic-dompurify"; 10 | 11 | const displayName = "octopus-library-template-list"; 12 | 13 | export default class TemplateList extends React.Component { 14 | markdown(description) { 15 | let firstLine = (description || "").split(/\r?\n|\r|\n/g)[0]; 16 | let purifiedDescription = DOMPurify.sanitize(firstLine); 17 | let markup = marked.parse(purifiedDescription || ""); 18 | return { __html: markup }; 19 | } 20 | 21 | render() { 22 | let templateList = this.props.templateList.map((item, index) => { 23 | let lc = this.props.filterText.toLowerCase(); 24 | if (item.Name.toLowerCase().indexOf(lc) === -1 && (item.Description === null || item.Description.toLowerCase().indexOf(lc) === -1)) { 25 | return; 26 | } 27 | let friendlySlug = SlugMaker.make(item.Name); 28 | return ( 29 |
  • 30 | 31 |

    32 | {item.Name} 33 |

    34 |
    35 |
  • 36 | ); 37 | }); 38 | 39 | return ( 40 |
    41 |
    42 |
    43 |
    44 |
      {templateList}
    45 |
    46 |
    47 |
    48 |
    49 | ); 50 | } 51 | } 52 | 53 | TemplateList.propTypes = { 54 | filterText: PropTypes.string, 55 | templateList: PropTypes.array, 56 | }; 57 | 58 | TemplateList.defaultProps = { 59 | filterText: "", 60 | templateList: [], 61 | }; 62 | 63 | TemplateList.displayName = displayName; 64 | -------------------------------------------------------------------------------- /app/components/TemplateParameters.jsx: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import React from "react"; 4 | import { marked } from "marked"; 5 | import PropTypes from "prop-types"; 6 | import DOMPurify from "isomorphic-dompurify"; 7 | 8 | const displayName = "octopus-library-template-parameters"; 9 | 10 | export default class TemplateParameters extends React.Component { 11 | constructor(props) { 12 | super(props); 13 | this.state = { showParameterList: false }; 14 | } 15 | 16 | rawMarkup(text) { 17 | let purifiedText = DOMPurify.sanitize(text); 18 | let markup = marked.parse(purifiedText || ""); 19 | return { __html: markup }; 20 | } 21 | 22 | toggleParameterList() { 23 | this.setState({ 24 | showParameterList: !this.state.showParameterList, 25 | }); 26 | } 27 | 28 | getParameterListHeight() { 29 | if (this.state.showParameterList) { 30 | return "9000px"; 31 | } else { 32 | return "0px"; 33 | } 34 | } 35 | 36 | render() { 37 | if (this.props.parameters.length === 0) { 38 | return
    ; 39 | } 40 | let parameterList = this.props.parameters.map((item, index) => { 41 | return ( 42 |
    43 |

    {item.Label || item.Name}

    44 |
    45 | 46 | {item.Name} 47 | {item.DefaultValue && item.DefaultValue.length > 0 ? = {item.DefaultValue} : } 48 | 49 |
    50 | 51 |
    52 | ); 53 | }); 54 | var style = { maxHeight: this.getParameterListHeight() }; 55 | return ( 56 |
    57 |

    Parameters

    58 |

    When steps based on the template are included in a project's deployment process, the parameters below can be set.

    59 | {parameterList} 60 |
    61 | ); 62 | } 63 | } 64 | 65 | TemplateParameters.displayName = displayName; 66 | 67 | TemplateParameters.propTypes = { 68 | parameters: PropTypes.array, 69 | }; 70 | 71 | TemplateParameters.defaultProps = { 72 | parameters: [], 73 | }; 74 | -------------------------------------------------------------------------------- /app/content/images/Octopus-96x96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/app/content/images/Octopus-96x96.png -------------------------------------------------------------------------------- /app/content/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/app/content/images/favicon.png -------------------------------------------------------------------------------- /app/content/images/octopus-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/app/content/images/octopus-white.png -------------------------------------------------------------------------------- /app/content/styles/base/_base.scss: -------------------------------------------------------------------------------- 1 | html { 2 | position: relative; 3 | min-height: 100%; 4 | } 5 | body { 6 | background-color: $background-color; 7 | color: $base-color; 8 | font: 12pt $font-stack; 9 | padding: 0; 10 | margin: 0 0 200px; 11 | } 12 | 13 | h1, h2, h3, h4, h5, h6 { 14 | font-weight: normal; 15 | } 16 | 17 | a { 18 | color: #0091ea; 19 | text-decoration: none; 20 | } 21 | 22 | article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { 23 | display: block; 24 | } 25 | 26 | .wrapper { 27 | margin: 0 0 200px; 28 | } 29 | -------------------------------------------------------------------------------- /app/content/styles/base/_buttons.scss: -------------------------------------------------------------------------------- 1 | .button { 2 | border-radius: .25rem; 3 | color: white; 4 | border: 1px solid transparent; 5 | padding: 10px; 6 | cursor: pointer; 7 | } 8 | 9 | .button.success { 10 | background-color: #48b350; 11 | border-color: #48b350; 12 | } 13 | 14 | .button.success:hover, 15 | .button.success.zeroclipboard-is-hover { 16 | background-color: #6cc16b; 17 | border-color: #6cc16b; 18 | } 19 | -------------------------------------------------------------------------------- /app/content/styles/base/_util.scss: -------------------------------------------------------------------------------- 1 | .overflow-ellipsis { 2 | width: 100%; 3 | text-overflow: ellipsis; 4 | overflow: hidden; 5 | } 6 | 7 | .full-width { 8 | width: 100%; 9 | } 10 | 11 | .centered { 12 | text-align: center; 13 | } 14 | 15 | .align-right { 16 | text-align: right; 17 | } 18 | 19 | /* Clearfix by Nicolas Gallagher 20 | ========================================================================== */ 21 | 22 | .clearfix:before, 23 | .clearfix:after { 24 | content: " "; 25 | display: table; 26 | } 27 | 28 | .clearfix:after { clear: both; } 29 | .clearfix { *zoom: 1; } 30 | -------------------------------------------------------------------------------- /app/content/styles/components/_app.scss: -------------------------------------------------------------------------------- 1 | .no-top-margin { 2 | margin-top: 0; 3 | } -------------------------------------------------------------------------------- /app/content/styles/components/_footer.scss: -------------------------------------------------------------------------------- 1 | footer { 2 | background-color: #0f2535; 3 | padding: 1rem 0; 4 | color: #FFF; 5 | position: absolute; 6 | bottom: 0; 7 | left: 0; 8 | width: 100%; 9 | height: 200px; 10 | 11 | .icon-octopus { 12 | background-repeat: no-repeat; 13 | background-position: 0; 14 | background-image: url('/images/Octopus-96x96.png'); 15 | background-size: $octopus-footer-icon; 16 | margin-bottom: -4px; 17 | display: inline-block; 18 | padding-left: 1.4em;; 19 | } 20 | 21 | .dark-red { 22 | color: #800000; 23 | } 24 | 25 | .column { 26 | a { 27 | color: #3bafda; 28 | 29 | &:hover { 30 | color: #4fc1e9; 31 | } 32 | } 33 | 34 | p, ul { 35 | padding: 0; 36 | } 37 | 38 | ul { 39 | list-style: none; 40 | 41 | li { 42 | display: inline; 43 | background-position: center left; 44 | background-repeat: no-repeat; 45 | margin: 0 5px; 46 | 47 | a { 48 | color: #a2a2a2; 49 | 50 | &:hover { 51 | color: #2F93E0; 52 | } 53 | } 54 | } 55 | 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /app/content/styles/components/_header.scss: -------------------------------------------------------------------------------- 1 | 2 | header { 3 | background-color: #152B3D; 4 | padding: 20px; 5 | border-bottom: 1px solid #173b56; 6 | box-shadow: 0px 5px 10px rgba(0, 0, 0, 0.2); 7 | position: relative; 8 | 9 | .site-title { 10 | font-size: 15pt; 11 | background-repeat: no-repeat; 12 | background-position: 0; 13 | background-image: url('/images/octopus-white.png'); 14 | background-size: 2rem; 15 | padding: 5px 0; 16 | padding-left: 40px; 17 | color: #FFFFFF; 18 | margin: 0; 19 | font-weight: 300; 20 | 21 | a { 22 | color: #f2f2f2; 23 | text-decoration: none; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/content/styles/components/_searchbox.scss: -------------------------------------------------------------------------------- 1 | .template-search { 2 | background-color: #f5f7fa; 3 | padding: 1rem 0; 4 | } 5 | 6 | .search-box { 7 | padding: 1rem 0; 8 | 9 | .search-input input { 10 | width: 100%; 11 | font-size: 100%; 12 | padding: 10px 20px; 13 | border: 1px solid #ddd; 14 | @media #{$desktop} { 15 | font-size: 120%; 16 | } 17 | @media #{$medium-desktop} { 18 | font-size: 112%; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/content/styles/components/_socialbuttons.scss: -------------------------------------------------------------------------------- 1 | .social-buttons { 2 | display: flex; 3 | margin-top: 1em; 4 | 5 | .github-button { 6 | display: inline-block; 7 | font-size: small; 8 | border: 1px solid transparent; 9 | border-radius: .25rem; 10 | } 11 | .github-button > a { 12 | color:#000000; 13 | } 14 | .github-button > a:hover { 15 | color:#000000; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/content/styles/components/_templatelisting.scss: -------------------------------------------------------------------------------- 1 | .template-list { 2 | margin: 0.2rem 0; 3 | padding: 1rem 0; 4 | } 5 | 6 | ul.search-results { 7 | list-style: none; 8 | padding: 0; 9 | margin: 0; 10 | } 11 | 12 | .item-summary { 13 | margin-bottom: 3rem; 14 | 15 | img { 16 | width: 55px; 17 | max-height: 55px; 18 | position: absolute; 19 | } 20 | 21 | h4 { 22 | margin: 0 0 4px 75px; 23 | font-size: 15pt; 24 | 25 | a { 26 | color: #333; 27 | 28 | &:hover { 29 | color: #0091ea; 30 | } 31 | } 32 | } 33 | 34 | .faint { 35 | color: #666; 36 | margin: 0 0 0 75px; 37 | 38 | p { 39 | text-overflow: ellipsis; 40 | overflow: hidden; 41 | white-space: nowrap; 42 | } 43 | 44 | strong { 45 | color: #3bafda; 46 | } 47 | } 48 | } 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /app/content/styles/layout/_grid.scss: -------------------------------------------------------------------------------- 1 | /* This file is derived from the grid.css example at http://www.adamkaplan.me/grid/ 2 | Styles in this file implement a mobile-first responsive grid layout. Some basic font 3 | settings are included to set relative sizes; don't add more styling via this sheet. 4 | Each top-level view should contain a
    or similar semantic element, containing 5 | a
    and one or more rows. 6 | */ 7 | *, *:before, *:after { 8 | -moz-box-sizing: border-box; 9 | -webkit-box-sizing: border-box; 10 | box-sizing: border-box; 11 | } 12 | 13 | html { 14 | font-size: 100%; 15 | @media #{$small-desktop} { 16 | font-size: 112%; 17 | } 18 | @media #{$desktop} { 19 | font-size: 120%; 20 | } 21 | } 22 | 23 | .container { 24 | margin: 0 auto; 25 | max-width: 1300px; 26 | width: 95%; 27 | } 28 | 29 | .column { 30 | /*margin-bottom: 1.5rem;*/ 31 | @media #{$small-desktop} { 32 | float: left; 33 | margin: 0; 34 | padding-left: 1rem; 35 | padding-right: 1rem; 36 | 37 | &.full { width: 100%; } 38 | &.two-thirds { width: 66.7%; } 39 | &.half { width: 50%; } 40 | &.third { width: 33.3%; } 41 | &.fourth { width: 25%; } 42 | &.flow-opposite { float: right; } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /app/content/styles/layout/_typography.scss: -------------------------------------------------------------------------------- 1 | html { 2 | font-family: "Roboto", sans-serif; 3 | font-weight: normal; 4 | text-rendering: optimizeLegibility; 5 | -webkit-font-smoothing: antialiased; 6 | font-size: 12pt; 7 | } 8 | 9 | h1, h2, h3, h4, h5 { 10 | color: #50483b; 11 | font-weight: normal; 12 | } 13 | 14 | .code { 15 | background-color: #f5f5f5; 16 | font-family: Menlo,Monaco,Consolas,"Courier New",monospace; 17 | font-size: 0.7rem; 18 | color: #333; 19 | } 20 | 21 | pre.code { 22 | -moz-border-radius: 3px; 23 | -webkit-border-radius: 3px; 24 | border-radius: 3px; 25 | border: 1px solid #ccc; 26 | padding: 0.5rem 1rem 0.5rem 0.5rem; 27 | } 28 | 29 | .tutorial { 30 | margin: 0 0 10px 0; 31 | color: #777; 32 | font-size: pt; 33 | 34 | @media #{$small-desktop} { 35 | margin: 10px 0; 36 | } 37 | } 38 | 39 | .faint { 40 | font-size: 0.8rem; 41 | color: #DDD; 42 | } 43 | 44 | a.faint { 45 | font-weight: bold; 46 | } 47 | 48 | .placeholder { 49 | font-size: 0.8rem; 50 | color: #CCC; 51 | font-style: italic; 52 | } 53 | 54 | a { 55 | text-decoration: none; 56 | color: #0091ea; 57 | } 58 | 59 | a:active, a:hover { 60 | text-decoration: none; 61 | color: #0091ea; 62 | } 63 | -------------------------------------------------------------------------------- /app/content/styles/main.scss: -------------------------------------------------------------------------------- 1 | // Variables 2 | @import 'variables/variables'; 3 | 4 | // Layout 5 | @import 'layout/grid'; 6 | @import 'layout/typography'; 7 | 8 | // Components 9 | @import 'components/app'; 10 | @import 'components/header'; 11 | @import 'components/templatelisting'; 12 | @import 'components/templateitem'; 13 | @import 'components/socialbuttons'; 14 | @import 'components/searchbox'; 15 | @import 'components/footer'; 16 | 17 | // Base 18 | @import 'base/base'; 19 | @import 'base/util'; 20 | @import 'base/buttons'; 21 | -------------------------------------------------------------------------------- /app/content/styles/variables/_variables.scss: -------------------------------------------------------------------------------- 1 | // Fonts 2 | $font-stack: 'Roboto', sans-serif; 3 | 4 | // Icon 5 | $octopus-footer-icon: calc(18em / 14); 6 | 7 | // Colors 8 | $base-color: #222; 9 | $background-color: #FFF; 10 | 11 | // Media queries 12 | $small-desktop: "(min-width: 640px)"; 13 | $medium-desktop: "(min-width: 641px) and (max-width: 767px)"; 14 | $tablet: "(min-width: 768px) and (max-width: 1023px)"; 15 | $desktop: "(min-width: 1024px)"; 16 | -------------------------------------------------------------------------------- /app/dispatcher.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import uuid from "node-uuid"; 4 | 5 | let _callbacks = {}; 6 | 7 | const AppDispatcher = { 8 | register(callback) { 9 | var id = uuid.v4(); 10 | _callbacks[id] = callback; 11 | return id; 12 | }, 13 | 14 | dispatch(payload) { 15 | for (var id in _callbacks) { 16 | var callback = _callbacks[id]; 17 | callback(payload); 18 | } 19 | }, 20 | }; 21 | 22 | export default AppDispatcher; 23 | -------------------------------------------------------------------------------- /app/services/Analytics.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | class Analytics { 4 | sendPageView() { 5 | console.log(`Sending page view of page '${document.location.pathname}'`); 6 | window.ga("send", "pageview", document.location.pathname); 7 | } 8 | 9 | sendEvent(category, name, value) { 10 | console.log(`Sending '${category}' event named '${name}' with value '${value}'`); 11 | window.ga("send", "event", category, name, value); 12 | } 13 | } 14 | 15 | export default new Analytics(); 16 | -------------------------------------------------------------------------------- /app/services/LibraryDb.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import _ from "underscore"; 4 | 5 | import StepTemplates from "./step-templates.json"; 6 | 7 | class LibraryDb { 8 | constructor() { 9 | this._items = _.chain(StepTemplates.items) 10 | .map(function (t) { 11 | if (t.Properties) { 12 | var script = t.Properties["Octopus.Action.Script.ScriptBody"]; 13 | if (script) { 14 | t.Properties["Octopus.Action.Script.ScriptBody"] = script.replace(/(\r\n)/gm, "\n"); 15 | } 16 | } 17 | 18 | return { 19 | Id: t.Id, 20 | Name: t.Name, 21 | Description: t.Description, 22 | Version: t.Version, 23 | ExportedAt: t.$Meta.ExportedAt, 24 | ActionType: t.ActionType, 25 | Author: t.LastModifiedBy, 26 | Packages: t.Packages, 27 | Parameters: t.Parameters, 28 | Properties: t.Properties, 29 | Category: t.Category, 30 | HistoryUrl: t.HistoryUrl, 31 | Website: t.Website, 32 | Logo: t.Logo, 33 | MaximumServerVersion: t.MaximumServerVersion, 34 | MinimumServerVersion: t.MinimumServerVersion, 35 | $Meta: { 36 | Type: "ActionTemplate", 37 | }, 38 | }; 39 | }) 40 | .sortBy(function (t) { 41 | return t.Name.toLowerCase(); 42 | }) 43 | .value(); 44 | 45 | this._all = _.indexBy(this._items, "Id"); 46 | } 47 | 48 | list(cb) { 49 | cb(null, this._items); 50 | } 51 | 52 | get(id, cb) { 53 | var item = this._all[id]; 54 | cb(null, item); 55 | } 56 | } 57 | 58 | export default new LibraryDb(); 59 | -------------------------------------------------------------------------------- /app/services/SlugMaker.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | class SlugMaker { 4 | make(name) { 5 | return "actiontemplate" + "-" + name.replace(/ - /g, "-").replace(/ /g, "-").toLowerCase(); 6 | } 7 | } 8 | 9 | export default new SlugMaker(); 10 | -------------------------------------------------------------------------------- /app/stores/LibraryStore.jsx: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | import { EventEmitter } from "events"; 4 | import _ from "underscore"; 5 | import SlugMaker from "./../services/SlugMaker"; 6 | import AppDispatcher from "./../dispatcher.js"; 7 | 8 | const CHANGE_EVENT = "change"; 9 | 10 | let _templates = []; 11 | let _indexedTemplates = []; 12 | 13 | function receiveTemplates(templates) { 14 | _templates = templates; 15 | _indexedTemplates = _.indexBy(_templates, "Id"); 16 | } 17 | 18 | class LibraryStore extends EventEmitter { 19 | constructor() { 20 | super(); 21 | } 22 | 23 | getItems() { 24 | return _templates; 25 | } 26 | 27 | get(id) { 28 | return _indexedTemplates[id]; 29 | } 30 | 31 | emitChange() { 32 | this.emit(CHANGE_EVENT); 33 | } 34 | 35 | //Required so we can handle old urls without stable ids 36 | getByFriendlySlug(slug) { 37 | return this.getItems().filter((t) => SlugMaker.make(t.Name) === slug)[0]; 38 | } 39 | 40 | addChangeListener(callback) { 41 | this.on(CHANGE_EVENT, callback); 42 | } 43 | 44 | removeChangeListener(callback) { 45 | this.removeListener(CHANGE_EVENT, callback); 46 | } 47 | } 48 | 49 | let storeObj = new LibraryStore(); 50 | 51 | storeObj.dispatchToken = AppDispatcher.register((action) => { 52 | switch (action.actionType) { 53 | case "READ_SUCCESS": 54 | receiveTemplates(action.templates); 55 | storeObj.emitChange(); 56 | break; 57 | default: 58 | } 59 | }); 60 | 61 | export default storeObj; 62 | -------------------------------------------------------------------------------- /server/views/index.pug: -------------------------------------------------------------------------------- 1 | doctype html 2 | html 3 | head 4 | //- 5 | script(type='text/javascript'). 6 | (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 7 | new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 8 | j=d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : '';j.async=true;j.src= 9 | 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 10 | })(window,document,'script','dataLayer','GTM-M6BF84M'); 11 | //- 12 | 13 | meta(charset='UTF-8') 14 | meta(http-equiv='X-UA-Compatible',content='IE=edge') 15 | meta(name='viewport',content='width=device-width, initial-scale=1.0') 16 | meta(name='keywords',content='#{siteKeywords}') 17 | meta(name='description',content='#{siteDescription}') 18 | meta(name='google-site-verification',content='178p1fYjib3ehS8pMbiFWuFj_FWUHIFEjU3t7aLi1cs') 19 | 20 | title Octopus Deploy Library 21 | 22 | link(rel='shortcut icon', href='/images/Octopus-96x96.png', type='image/x-icon') 23 | //- vendor:css 24 | //- endinject 25 | 26 | link(href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800', rel='stylesheet') 27 | 28 | //- inject:css 29 | //- endinject 30 | body 31 | //- 32 | noscript 33 | iframe(src="https://www.googletagmanager.com/ns.html?id=GTM-M6BF84M" height="0" width="0" style="display:none;visibility:hidden") 34 | //- 35 | 36 | script(type='text/javascript'). 37 | window.stepTemplates = !{stepTemplates} 38 | 39 | #reactRoot!= reactOutput 40 | 41 | script(type='text/javascript'). 42 | (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 43 | (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 44 | m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 45 | })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 46 | 47 | ga('create', 'UA-24461753-5', 'octopusdeploy.com'); 48 | 49 | //- inject:js 50 | //- endinject 51 | -------------------------------------------------------------------------------- /spec/logos-validation-tests.js: -------------------------------------------------------------------------------- 1 | var fs = require("fs"); 2 | 3 | describe("logos", function () { 4 | it("logos have valid details", function (done) { 5 | var filenameCounter = 0; 6 | var stepTemplateCount = 0; 7 | var dirname = "./step-templates/logos"; 8 | 9 | fs.readdir(dirname, function (err, filenames) { 10 | if (err) { 11 | console.log("error listing files in dir: " + err); 12 | return; 13 | } 14 | 15 | filenames.forEach(function (filename) { 16 | var extension = filename.substring(filename.length - 4); 17 | expect(extension).toBe(".png"); 18 | }); 19 | 20 | done(); 21 | }); 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /step-templates/Azure-Get-Publishing-Credentials.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "94146c4c-28a7-444d-bd09-abdcc860e3b6", 3 | "Name": "Get Azure Web App Publishing Credentials", 4 | "Description": "Gets the publishing credentials for an Azure Web App. They are exported as variables from this step under the names PublishingUsername and PublishingPassword.", 5 | "ActionType": "Octopus.AzurePowerShell", 6 | "Version": 8, 7 | "CommunityActionTemplateId": null, 8 | "Properties": { 9 | "Octopus.Action.Script.ScriptSource": "Inline", 10 | "Octopus.Action.Script.ScriptBody": "$creds = Invoke-AzureRmResourceAction -ResourceGroupName $ResourceGroup -ResourceType Microsoft.Web/sites/config `\r\n -ResourceName $WebApp/publishingCredentials -Action list -ApiVersion 2015-08-01 -Force\r\n\r\nSet-OctopusVariable -name \"PublishingUsername\" -value $creds.Properties.PublishingUsername\r\nSet-OctopusVariable -name \"PublishingPassword\" -value $creds.Properties.PublishingPassword", 11 | "Octopus.Action.Azure.AccountId": "#{AzureAccount}", 12 | "Octopus.Action.Package.FeedId": null, 13 | "Octopus.Action.Script.ScriptFileName": null, 14 | "Octopus.Action.Package.PackageId": null 15 | }, 16 | "Parameters": [ 17 | { 18 | "Id": "5a1d5a50-a950-42a4-85d6-25c2b9c45e91", 19 | "Name": "azpubcreds_ResourceGroup", 20 | "Label": "Resource group", 21 | "HelpText": "The name of the resource group that contains the web app for which publishing credentials are required.", 22 | "DefaultValue": "", 23 | "DisplaySettings": { 24 | "Octopus.ControlType": "SingleLineText" 25 | }, 26 | "Links": {} 27 | }, 28 | { 29 | "Id": "0f86965c-1f40-4778-8378-197ff4199330", 30 | "Name": "azpubcreds_WebApp", 31 | "Label": "Web app", 32 | "HelpText": "The name of the web app for which publishing credentials are required.", 33 | "DefaultValue": "", 34 | "DisplaySettings": { 35 | "Octopus.ControlType": "SingleLineText" 36 | }, 37 | "Links": {} 38 | }, 39 | { 40 | "Id": "572ee191-a035-47ab-aec3-ef805e690868", 41 | "Name": "azpubcreds_AzureAccount", 42 | "Label": "Azure account", 43 | "HelpText": null, 44 | "DefaultValue": "", 45 | "DisplaySettings": { 46 | "Octopus.ControlType": "SingleLineText" 47 | }, 48 | "Links": {} 49 | } 50 | ], 51 | "LastModifiedBy": "jimmcslim", 52 | "$Meta": { 53 | "ExportedAt": "2017-08-23T06:42:23.412Z", 54 | "OctopusVersion": "3.16.0", 55 | "Type": "ActionTemplate" 56 | }, 57 | "Category": "azure" 58 | } 59 | -------------------------------------------------------------------------------- /step-templates/Remove-Hosts-File-Entry.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "cf18f938-a052-4e0a-9549-85bfa9d95a2a", 3 | "Name": "Windows - Remove Hosts File Entry", 4 | "Description": "Remove given IP/host name entry exists in the hosts file.\n\nThis might be helpful in uninstall process.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 1, 7 | "CommunityActionTemplateId": null, 8 | "Packages": [], 9 | "Properties": { 10 | "Octopus.Action.Script.ScriptBody": "$ip = $OctopusParameters['IP']\n$hostName = $OctopusParameters['HostName']\n\n$hostsPath = \"$env:windir\\System32\\drivers\\etc\\hosts\"\n$hosts = Get-Content $hostsPath\n$match = $hosts -match (\"^\\s*$ip\\s+$hostName\" -replace '\\.', '\\.')\n$hostsEntry = \"$ip`t$hostName\"\n\nIf ($match) {\nwrite-host $hostsPath $hostsEntry \" exist, then it will be removed.\"\n}\nelse\n{\nwrite-host $hostsPath $hostsEntry \"not exist\"\nExit\n}\n\n(Get-Content -Path $hostsPath) |\n ForEach-Object {$_ -Replace \"$hostsEntry\"} |\n Set-Content -Path $hostsPath -Verbose", 11 | "Octopus.Action.Script.Syntax": "PowerShell", 12 | "Octopus.Action.Script.ScriptSource": "Inline" 13 | }, 14 | "Parameters": [ 15 | { 16 | "Id": "d9320ac1-f7cd-4895-9a9b-b2a35bc9bbe3", 17 | "Name": "IP", 18 | "Label": "IP Address", 19 | "HelpText": "The IP address which the host name should resolve to, e.g. 127.0.0.1", 20 | "DefaultValue": "", 21 | "DisplaySettings": { 22 | "Octopus.ControlType": "SingleLineText" 23 | } 24 | }, 25 | { 26 | "Id": "129047cb-3e0c-4d83-a734-7d9bef6b5023", 27 | "Name": "HostName", 28 | "Label": "Host Name", 29 | "HelpText": "The host name which should resolve to the given IP, e.g. www.mydomain.com", 30 | "DefaultValue": "", 31 | "DisplaySettings": { 32 | "Octopus.ControlType": "SingleLineText" 33 | } 34 | } 35 | ], 36 | "$Meta": { 37 | "ExportedAt": "2021-08-04T20:32:55.063Z", 38 | "OctopusVersion": "2020.4.6", 39 | "Type": "ActionTemplate" 40 | }, 41 | "LastModifiedBy": "bilalmajali", 42 | "Category": "other" 43 | } 44 | -------------------------------------------------------------------------------- /step-templates/Wait-until-time.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "c8781255-615a-4092-99f1-82ddefdb6d6b", 3 | "Name": "Wait until time", 4 | "Description": "Pauses the process until a given time", 5 | "ActionType": "Octopus.Script", 6 | "Version": 25, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "if(($DefaultTargetTime -eq $null-or $DefaultTargetTime -eq '') -and ($TargetTime -eq $null -or $TargetTime -eq'') ){\n Write-Output 'Deploy will start immediately because neither TargetTime or DefaultTargetTime is set' \n}else{\n \n if($TargetTime -eq $null){\n $deployTime = get-date($DefaultTargetTime)\n Write-Output 'DeployTime is set to DefaultTargetTime since TargetTime is not configured as a variable for this build scope.'\n }else{\n $deployTime = get-date($TargetTime)\n }\n if((get-date) -ge $deployTime){\n $deployTime = $deployTime.AddDays(1)\n }\n Write-Output ('Deploy will pause until ' + $deployTime)\n\n \n do {\n \tStart-Sleep 1\n }\n until ((get-date) -ge $deployTime)\n}", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "DefaultTargetTime", 15 | "Label": "Time to deploy", 16 | "HelpText": "Will deploy within the next 24 hours if only time is specified or at a specific date if that is specified\nA time set here will be used unless the project has a variable TargetTime.\nExamples:\n\n\t03:00\t\t\t\tWill deploy within 24 hours when the time is 03:00 in the morning\n\t2099-09-14 05:00\tWill deploy at that day and time\n\t2025-10-01\t\t\tWill deploy at 00:00 the first of october 2025\n\nIf the deployment time changes often it is suggested to create a variable named TargetTime and make it promptable. This will force the user to set the deployment time before the build process starts.", 17 | "DefaultValue": "", 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | } 22 | ], 23 | "LastModifiedBy": "PeterOsterdahl", 24 | "$Meta": { 25 | "ExportedAt": "2016-09-15T10:46:20.183+00:00", 26 | "OctopusVersion": "3.2.21", 27 | "Type": "ActionTemplate" 28 | }, 29 | "Category": "wait" 30 | } -------------------------------------------------------------------------------- /step-templates/ansible-run-playbook.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "02d3b753-e0eb-4bda-9bf3-09c77e54fce1", 3 | "Name": "Run Ansible Playbook (bash)", 4 | "Description": "Step template to run an ansible playbook using bash. Requires Ansible and Ansible-Playbook to run successfully.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 1, 7 | "CommunityActionTemplateId": null, 8 | "Packages": [], 9 | "Properties": { 10 | "Octopus.Action.Script.ScriptSource": "Inline", 11 | "Octopus.Action.Script.Syntax": "Bash", 12 | "Octopus.Action.Script.ScriptBody": "ansibleInstalled=$(which -a ansible-playbook >/dev/null; echo $?)\n\nif [ $ansibleInstalled -ne 0 ];then\n\techo \"Ansible Not Installed\"\n exit 1;\nfi\n\n\nansible-playbook $(get_octopusvariable \"RunAnsible.Playbook.Path\")\nplaybookRC=$?\n\nif [ $playbookRC -ne 0 ]; then\n exit $playbookRC;\nfi" 13 | }, 14 | "Parameters": [ 15 | { 16 | "Id": "c9c94c61-07a7-4e7e-a52c-fec79ecd50d6", 17 | "Name": "RunAnsible.Playbook.Path", 18 | "Label": "Ansible Playbook Path", 19 | "HelpText": "Enter the full path where the Ansible Playbook yaml is located.", 20 | "DefaultValue": "", 21 | "DisplaySettings": { 22 | "Octopus.ControlType": "SingleLineText" 23 | } 24 | } 25 | ], 26 | "StepPackageId": "Octopus.Script", 27 | "$Meta": { 28 | "ExportedAt": "2023-02-16T11:39:51.509Z", 29 | "OctopusVersion": "2022.4.8394", 30 | "Type": "ActionTemplate" 31 | }, 32 | "LastModifiedBy": "domrichardson", 33 | "Category": "ansible" 34 | } 35 | -------------------------------------------------------------------------------- /step-templates/aws-ec2-get-public-hostname.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "42d2f9b7-12cc-4844-a767-5f4a29c68dab", 3 | "Name": "AWS - EC2 - Get Public Hostname", 4 | "Description": "Gets the public hostname from `http://instance-data/latest/meta-data/public-hostname` on the EC2 instance and stores it in the `Hostname` variable.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 1, 7 | "CommunityActionTemplateId": null, 8 | "Properties": { 9 | "Octopus.Action.Script.Syntax": "PowerShell", 10 | "Octopus.Action.Script.ScriptSource": "Inline", 11 | "Octopus.Action.RunOnServer": "false", 12 | "Octopus.Action.Script.ScriptBody": "$downloader = new-object System.Net.WebClient\r\n$hostname = $downloader.DownloadString(\"http://instance-data/latest/meta-data/public-hostname\")\r\nSet-OctopusVariable -name \"Hostname\" -value $hostname\r\n", 13 | "Octopus.Action.Script.ScriptFileName": null, 14 | "Octopus.Action.Package.FeedId": null, 15 | "Octopus.Action.Package.PackageId": null 16 | }, 17 | "Parameters": [], 18 | "LastModifiedOn": "2017-02-23T19:37:06.120+00:00", 19 | "LastModifiedBy": "natelowry", 20 | "$Meta": { 21 | "ExportedAt": "2017-02-23T19:32:18.146Z", 22 | "OctopusVersion": "3.8.2", 23 | "Type": "ActionTemplate" 24 | }, 25 | "Category": "aws" 26 | } 27 | -------------------------------------------------------------------------------- /step-templates/azure-powershell-version-update.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "fdb57a35-9061-48e2-a650-2e6231200456", 3 | "Name": "Update Azure PowerShell Module", 4 | "Description": "This Step Template will help you to update the Azure PowerShell Module version on any targeted tentacle. [Note: Windows PowerShell 5.0 installed as pre-requisites for this step template to work]", 5 | "ActionType": "Octopus.Script", 6 | "Version": 7, 7 | "Properties": { 8 | "Octopus.Action.Script.Syntax": "PowerShell", 9 | "Octopus.Action.Script.ScriptSource": "Inline", 10 | "Octopus.Action.RunOnServer": "false", 11 | "Octopus.Action.Script.ScriptBody": "Get-ChildItem -Path \"C:\\Program Files\\WindowsPowerShell\\Modules\\\" -Filter Azure* -Recurse -Force | Remove-Item -Force -Recurse -Verbose\n\nInstall-Module -Name $ModuleName -RequiredVersion $AzurePSModuleVersion -Force -Verbose", 12 | "Octopus.Action.Script.ScriptFileName": null, 13 | "Octopus.Action.Package.FeedId": null, 14 | "Octopus.Action.Package.PackageId": null 15 | }, 16 | "Parameters": [ 17 | { 18 | "Id": "ac77d527-18e1-4c47-904b-1e1ad9d7b32c", 19 | "Name": "AzurePSModuleVersion", 20 | "Label": "Azure PowerShell Version", 21 | "HelpText": "example : 2.2.0\nRefer to find the version number : https://www.powershellgallery.com/packages/Azure", 22 | "DefaultValue": null, 23 | "DisplaySettings": { 24 | "Octopus.ControlType": "SingleLineText" 25 | } 26 | }, 27 | { 28 | "Id": "3ea5675f-ceb9-43e2-b31a-fa0c2da7bc39", 29 | "Name": "ModuleName", 30 | "Label": "PowerShell Module Name", 31 | "HelpText": "AzureRM\nRefer for Module Name : https://www.powershellgallery.com/packages/AzureRM", 32 | "DefaultValue": "AzureRM", 33 | "DisplaySettings": { 34 | "Octopus.ControlType": "SingleLineText" 35 | } 36 | } 37 | ], 38 | "LastModifiedOn": "2016-10-20T04:20:39.295+00:00", 39 | "LastModifiedBy": "mani0070", 40 | "$Meta": { 41 | "ExportedAt": "2016-10-20T04:20:39.295+00:00", 42 | "OctopusVersion": "3.4.12", 43 | "Type": "ActionTemplate" 44 | }, 45 | "Category": "azure" 46 | } 47 | -------------------------------------------------------------------------------- /step-templates/azure-sync-instancecount-from-prod-to-staging.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "8a0a75da-4960-40ca-b641-5ed2305fa655", 3 | "Name": "Azure - Sync Instance Count", 4 | "Description": "This step template is useful when you want to have the instance count matched just before the VIP swap. It takes the source slot (usually Production slot) and match with the current deployment slot (normally Staging). Note: This will be helpful in scenario when 15 instances in Production and 4 instance in staging. This step template should only be used when a production slot already exists.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 7, 7 | "Properties": { 8 | "Octopus.Action.Script.Syntax": "PowerShell", 9 | "Octopus.Action.Script.ScriptBody": "# Current Cloud Service name \r\n$ServiceName =$octopusparameters[\"Octopus.Action.Azure.CloudServiceName\"]\r\n\r\n$deployment = Get-AzureDeployment -slot $sourceslot -serviceName $serviceName\r\n# Obtain the instance count and role name.\r\n$SourceInstanceCount =$deployment.RolesConfiguration.values.InstanceCount\r\n$rolenameService = $deployment.RolesConfiguration.values.Name\r\n#Set the Current deployment slot instance count to match production count\r\nSet-AzureRole -ServiceName $serviceName -Slot $octopusparameters[\"Octopus.Action.Azure.Slot\"] -RoleName $rolenameService -Count $SourceInstanceCount " 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "sourceslot", 15 | "Label": "Specify the Slot to Get Instance Count", 16 | "HelpText": "This is usually Production Slot to obtain the Count and match to staging before swap.", 17 | "DefaultValue": "Production", 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | } 22 | ], 23 | "LastModifiedOn": "2015-06-18T13:44:19.041+00:00", 24 | "LastModifiedBy": "mani0070", 25 | "$Meta": { 26 | "ExportedAt": "2015-06-18T13:48:39.548+00:00", 27 | "OctopusVersion": "3.0.0.1614", 28 | "Type": "ActionTemplate" 29 | }, 30 | "Category": "azure" 31 | } -------------------------------------------------------------------------------- /step-templates/azure-web-app-start.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "96ce9c63-91b5-4773-9511-830a2e106083", 3 | "Name": "Azure Web App - Start", 4 | "Description": "Starts an azure web app.\n
    \n\n*

    Note This template is designed to run against an azure web app octopus target

    *\n*

    Depends on Azure CLI and powershell to be installed on the running machine

    *", 5 | "ActionType": "Octopus.AzurePowerShell", 6 | "Version": 1, 7 | "CommunityActionTemplateId": null, 8 | "Packages": [], 9 | "Properties": { 10 | "Octopus.Action.Script.ScriptSource": "Inline", 11 | "Octopus.Action.Script.Syntax": "PowerShell", 12 | "OctopusUseBundledTooling": "False", 13 | "Octopus.Action.Azure.AccountId": "#{azWebApp.AzureAcct}", 14 | "Octopus.Action.Script.ScriptBody": "try\n{\n\taz --version\n}\n\ncatch\n{\n\tthrow \"az cli not installed\"\n}\n\n$webApp = $OctopusParameters[\"Octopus.Action.Azure.WebAppName\"]\n$resourceGroup = $OctopusParameters[\"Octopus.Action.Azure.ResourceGroupName\"]\n\n$appState = az webapp list --resource-group $resourceGroup --query \"[?name=='$webApp'].{state: state, hostName: defaultHostName}\" | ConvertFrom-Json\n\nif($appState.state -eq 'running')\n{\n\tWrite-Host \"Web App $webApp already running\"\n return \n}\n\nWrite-Host \"Starting web app $webApp in resource group $resourceGroup\"\naz webapp start --name $webApp --resource-group $resourceGroup\n\nStart-Sleep -s 5\n\n$appState = az webapp list --resource-group $resourceGroup --query \"[?name=='$webApp'].{state: state, hostName: defaultHostName}\" | ConvertFrom-Json\n\nif($appState.state -ne \"running\")\n{\n\tThrow \"Webapp failed to start. Check the app's activity/error log\"\n}\n" 15 | }, 16 | "Parameters": [ 17 | { 18 | "Id": "bcb5fe61-4f02-44af-85b9-8c9197567d50", 19 | "Name": "azWebApp.AzureAcct", 20 | "Label": "Azure Account", 21 | "HelpText": "The azure account that has access to the web app", 22 | "DefaultValue": "", 23 | "DisplaySettings": { 24 | "Octopus.ControlType": "AzureAccount" 25 | } 26 | } 27 | ], 28 | "$Meta": { 29 | "ExportedAt": "2020-06-08T18:36:48.569Z", 30 | "OctopusVersion": "2020.2.10", 31 | "Type": "ActionTemplate" 32 | }, 33 | "LastModifiedBy": "xtreampb", 34 | "Category": "azure" 35 | } -------------------------------------------------------------------------------- /step-templates/azure-web-app-stop.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "5178ba6d-e0b9-4176-8487-148060ed3a70", 3 | "Name": "Azure Web App - Stop", 4 | "Description": "Stops an azure web app.\n
    \n\n*

    Note This template is designed to run against an azure web app octopus target

    *\n*

    Depends on Azure CLI and powershell to be installed on the running machine

    *", 5 | "ActionType": "Octopus.AzurePowerShell", 6 | "Version": 1, 7 | "CommunityActionTemplateId": null, 8 | "Packages": [], 9 | "Properties": { 10 | "Octopus.Action.Script.ScriptSource": "Inline", 11 | "Octopus.Action.Script.Syntax": "PowerShell", 12 | "OctopusUseBundledTooling": "False", 13 | "Octopus.Action.Azure.AccountId": "#{azWebApp.AzureAcct}", 14 | "Octopus.Action.Script.ScriptBody": "try\n{\n\taz --version\n}\n\ncatch\n{\n\tthrow \"az cli not installed\"\n}\n\n$webApp = $OctopusParameters[\"Octopus.Action.Azure.WebAppName\"]\n$resourceGroup = $OctopusParameters[\"Octopus.Action.Azure.ResourceGroupName\"]\n\n$appState = az webapp list --resource-group $resourceGroup --query \"[?name=='$webApp'].{state: state, hostName: defaultHostName}\" | ConvertFrom-Json\n\nif($appState.state -eq 'stopped')\n{\n\tWrite-Host \"Web App $webApp already stopped\"\n return\n}\n\nWrite-Host \"Stopping webapp $webApp in group $resourceGroup\"\naz webapp stop --name $webApp --resource-group $resourceGroup\n" 15 | }, 16 | "Parameters": [ 17 | { 18 | "Id": "bcb5fe61-4f02-44af-85b9-8c9197567d50", 19 | "Name": "azWebApp.AzureAcct", 20 | "Label": "Azure Account", 21 | "HelpText": "The azure account that has access to the web app", 22 | "DefaultValue": "", 23 | "DisplaySettings": { 24 | "Octopus.ControlType": "AzureAccount" 25 | } 26 | } 27 | ], 28 | "$Meta": { 29 | "ExportedAt": "2020-06-08T18:36:07.610Z", 30 | "OctopusVersion": "2020.2.10", 31 | "Type": "ActionTemplate" 32 | }, 33 | "LastModifiedBy": "xtreampb", 34 | "Category": "azure" 35 | } -------------------------------------------------------------------------------- /step-templates/bash-service-check-running.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "2617b82a-c5f8-4a66-a9eb-e99b37e127d8", 3 | "Name": "Service - Check Running (Bash)", 4 | "Description": "Check if any given service or list of services is/are running (uses `ps` command)", 5 | "ActionType": "Octopus.Script", 6 | "Version": 1, 7 | "CommunityActionTemplateId": null, 8 | "Properties": { 9 | "Octopus.Action.Script.Syntax": "Bash", 10 | "Octopus.Action.Script.ScriptSource": "Inline", 11 | "Octopus.Action.RunOnServer": "false", 12 | "Octopus.Action.Script.ScriptBody": "services=$(get_octopusvariable \"services\")\r\nfailed=false\r\n\r\n# required arguments checking\r\nif [[ $services == \"Unrecognized variable\"* ]]\r\nthen\r\n echo \"[ERROR]: Missing required argument. Exit!\"\r\n exit 1;\r\nfi\r\n\r\nfor service in ${services//,/ }\r\ndo\r\n if (( $(ps -ef | grep -v grep | grep $service | wc -l) > 0 ))\r\n then\r\n echo \"$service is running!!!\"\r\n else\r\n echo \"$service is not running!!!\"\r\n failed=true\r\n fi\r\ndone\r\n\r\nif $failed; then\r\n echo \"At least one service is not running!!!\"\r\n exit 1\r\nfi\r\n", 13 | "Octopus.Action.Script.ScriptFileName": null, 14 | "Octopus.Action.Package.FeedId": null, 15 | "Octopus.Action.Package.PackageId": null 16 | }, 17 | "Parameters": [ 18 | { 19 | "Id": "3e260398-4df1-4a59-a325-752029c52b46", 20 | "Name": "services", 21 | "Label": "Service names", 22 | "HelpText": "The set of service names as should be listed by `ps` command. This can be either a single service or a comma separated list of services to check.\n- Example 1: httpd\n- Example 2: httpd, sshd, memcached", 23 | "DefaultValue": null, 24 | "DisplaySettings": { 25 | "Octopus.ControlType": "MultiLineText" 26 | }, 27 | "Links": {} 28 | } 29 | ], 30 | "LastModifiedBy": "cjuroz", 31 | "$Meta": { 32 | "ExportedAt": "2017-02-17T05:50:08.653Z", 33 | "OctopusVersion": "3.8.4", 34 | "Type": "ActionTemplate" 35 | }, 36 | "Category": "bash" 37 | } -------------------------------------------------------------------------------- /step-templates/chocolatey-ensure-installed.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "c364b0a5-a0b7-48f8-a1a4-35e9f54a82d3", 3 | "Name": "Chocolatey - Ensure Installed", 4 | "Description": "Ensures that the Chocolatey package manager is installed on the system. The installer is downloaded from https://chocolatey.org if required.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 7, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12\nWrite-Output \"Ensuring the Chocolatey package manager is installed...\"\n\n$chocolateyBin = [Environment]::GetEnvironmentVariable(\"ChocolateyInstall\", \"Machine\") + \"\\bin\"\n$chocInstalled = Test-Path \"$chocolateyBin\\choco.exe\"\n\nif (-not $chocInstalled) {\n Write-Output \"Chocolatey not found, installing...\"\n \n $installPs1 = ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))\n Invoke-Expression $installPs1\n \n Write-Output \"Chocolatey installation complete.\"\n} else {\n Write-Output \"Chocolatey was found at $chocolateyBin and won't be reinstalled.\"\n}\n", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [], 13 | "LastModifiedOn": "2020-07-28T13:42:22.284+00:00", 14 | "LastModifiedBy": "pauby", 15 | "$Meta": { 16 | "ExportedAt": "2020-07-28T13:42:22.284+00:00", 17 | "OctopusVersion": "2.4.7.85", 18 | "Type": "ActionTemplate" 19 | }, 20 | "Category": "chocolatey" 21 | } 22 | -------------------------------------------------------------------------------- /step-templates/clickonce-update-application-file.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "0185c15c-3bde-446b-a5cf-10f475dc0008", 3 | "Name": "ClickOnce - Update .application file", 4 | "Description": "Update .application file after updating the manifest file.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 3, 7 | "Properties": { 8 | "Octopus.Action.Script.Syntax": "PowerShell", 9 | "Octopus.Action.Script.ScriptSource": "Inline", 10 | "Octopus.Action.Script.ScriptBody": "$xml = [xml](Get-Content \"$PackagePath\\$AppName.application\")\n$manifestpath = $xml.assembly.dependency.dependentAssembly.codebase\n\n$splittedParams = $AdvencedMageParameters.Split(\" \")\ncd \"$PackagePath\"\n& \"$MagePath\\mage.exe\" -Update \".\\$AppName.application\" -AppManifest \".\\$manifestpath\" $splittedParams\n\n" 11 | }, 12 | "SensitiveProperties": {}, 13 | "Parameters": [ 14 | { 15 | "Name": "PackagePath", 16 | "Label": "Path to the root directory of ClickOnce package", 17 | "HelpText": "Path to the root drectory of ClickOnce package. This is where you can find the setup.exe, and *.application files and the \"Application Files\" folder", 18 | "DefaultValue": null, 19 | "DisplaySettings": { 20 | "Octopus.ControlType": "SingleLineText" 21 | } 22 | }, 23 | { 24 | "Name": "AppName", 25 | "Label": "Name of the ClickOnce application", 26 | "HelpText": null, 27 | "DefaultValue": null, 28 | "DisplaySettings": { 29 | "Octopus.ControlType": "SingleLineText" 30 | } 31 | }, 32 | { 33 | "Name": "AdvencedMageParameters", 34 | "Label": "Addition parameters for mage.exe", 35 | "HelpText": null, 36 | "DefaultValue": null, 37 | "DisplaySettings": { 38 | "Octopus.ControlType": "SingleLineText" 39 | } 40 | }, 41 | { 42 | "Name": "MagePath", 43 | "Label": "Path to mage.exe", 44 | "HelpText": "Path to mage.exe which is used to update manifest and .application files and sign them.", 45 | "DefaultValue": "c:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v10.0A\\bin\\NETFX 4.6.1 Tools\\", 46 | "DisplaySettings": { 47 | "Octopus.ControlType": "SingleLineText" 48 | } 49 | } 50 | ], 51 | "LastModifiedBy": "Kemyke", 52 | "$Meta": { 53 | "ExportedAt": "2016-04-05T14:43:35.076+00:00", 54 | "OctopusVersion": "3.3.0-beta0001", 55 | "Type": "ActionTemplate" 56 | }, 57 | "Category": "clickOnce" 58 | } -------------------------------------------------------------------------------- /step-templates/clickonce-update-manifest-file.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "f52ace18-b8ee-4235-9c6f-231f2ec477a6", 3 | "Name": "ClickOnce - Update manifest file", 4 | "Description": "Update manifest file after changing the configuration files of the ClickOnce application.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 3, 7 | "Properties": { 8 | "Octopus.Action.Script.Syntax": "PowerShell", 9 | "Octopus.Action.Script.ScriptSource": "Inline", 10 | "Octopus.Action.Script.ScriptBody": "$xml = [xml](Get-Content \"$PackagePath\\$AppName.application\")\n$manifestpath = $xml.assembly.dependency.dependentAssembly.codebase\n$ApplicationWithVersion = $manifestpath.Split('\\\\')[1]\n\n$splittedParams = $AdvencedMageParameters.Split(\" \")\n& \"$MagePath\\mage.exe\" -Update \"$PackagePath\\$manifestpath\" -FromDirectory \"$PackagePath\\Application Files\\$ApplicationWithVersion\" $splittedParams" 11 | }, 12 | "SensitiveProperties": {}, 13 | "Parameters": [ 14 | { 15 | "Name": "PackagePath", 16 | "Label": "Path to the root directory of ClickOnce package", 17 | "HelpText": "Path to the root drectory of ClickOnce package. This is where you can find the setup.exe, and *.application files and the \"Application Files\" folder", 18 | "DefaultValue": null, 19 | "DisplaySettings": { 20 | "Octopus.ControlType": "SingleLineText" 21 | } 22 | }, 23 | { 24 | "Name": "AppName", 25 | "Label": "Name of the ClickOnce application", 26 | "HelpText": null, 27 | "DefaultValue": null, 28 | "DisplaySettings": { 29 | "Octopus.ControlType": "SingleLineText" 30 | } 31 | }, 32 | { 33 | "Name": "AdvencedMageParameters", 34 | "Label": "Addition parameters for mage.exe", 35 | "HelpText": null, 36 | "DefaultValue": null, 37 | "DisplaySettings": { 38 | "Octopus.ControlType": "SingleLineText" 39 | } 40 | }, 41 | { 42 | "Name": "MagePath", 43 | "Label": "Path to mage.exe", 44 | "HelpText": "Path to mage.exe which is used to update manifest and .application files and sign them.", 45 | "DefaultValue": "c:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v10.0A\\bin\\NETFX 4.6.1 Tools\\", 46 | "DisplaySettings": { 47 | "Octopus.ControlType": "SingleLineText" 48 | } 49 | } 50 | ], 51 | "LastModifiedBy": "Kemyke", 52 | "$Meta": { 53 | "ExportedAt": "2016-04-05T14:46:10.321+00:00", 54 | "OctopusVersion": "3.3.0-beta0001", 55 | "Type": "ActionTemplate" 56 | }, 57 | "Category": "clickOnce" 58 | } -------------------------------------------------------------------------------- /step-templates/create-azure-website-staging-slot.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "2f763d9e-81e1-4ce2-a897-3fe2c72ab9f0", 3 | "Name": "Create Azure Website Staging Slot. Requires Azure PowerShell to be installed on Tentacle machine", 4 | "Description": "Creates a staging slot for Azure Website. \n\nProvides Azure publish url as variable:\n\n #{Octopus.Action[Create Staging Slot Step Name].Output.AzurePublishUrl}\n\nAnd Username/Password for publishing:\n\n #{Octopus.Action[Create Staging Slot Step Name].Output.AzureUsername}\n #{Octopus.Action[Create Staging Slot Step Name].Output.AzurePassword}", 5 | "ActionType": "Octopus.Script", 6 | "Version": 5, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "# Check if Windows Azure Powershell is avaiable \r\ntry{ \r\n Import-Module Azure -ErrorAction Stop\r\n}catch{\r\n throw \"Windows Azure Powershell not found! Please make sure to install them from http://www.windowsazure.com/en-us/downloads/#cmd-line-tools\" \r\n}\r\n\r\n\r\n$stagingWebsite = Get-AzureWebsite -Name $AzureWebSite -Slot staging -ErrorAction SilentlyContinue\r\n\r\n\r\nif($stagingWebsite -eq $null)\r\n{\r\n Write-Host \"Creating staging slot\"\r\n $stagingWebsite = New-AzureWebsite -Name $AzureWebSite -Slot staging -Location $Location\r\n}\r\n\r\n\r\nSet-OctopusVariable -name \"AzurePassword\" -value $stagingWebsite.PublishingPassword\r\nSet-OctopusVariable -name \"AzureUsername\" -value $stagingWebsite.PublishingUsername\r\n\r\n$urlString = ($stagingWebsite.SiteProperties.Properties | ?{ $_.Name -eq \"RepositoryURI\" }).Value.ToString()\r\n$url = [System.Uri]$urlString\r\n\r\n\r\nSet-OctopusVariable -Name \"AzurePublishUrl\" -value $url.Host", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "AzureWebSite", 15 | "Label": "Azure Web Site Name", 16 | "HelpText": "Name of the web-site in Azure", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | } 22 | ], 23 | "LastModifiedOn": "2015-03-25T08:42:32.838+00:00", 24 | "LastModifiedBy": "trailmax", 25 | "$Meta": { 26 | "ExportedAt": "2015-03-25T08:51:15.660+00:00", 27 | "OctopusVersion": "2.6.3.886", 28 | "Type": "ActionTemplate" 29 | }, 30 | "Category": "azure" 31 | } -------------------------------------------------------------------------------- /step-templates/docker-install-linux.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "79496e52-6170-43e7-94bb-9e1dde6790fb", 3 | "Name": "Install Docker on Linux", 4 | "Description": "Installs the latest Docker Engine - Community from the stable channel, as per https://docs.docker.com/engine/install/ubuntu/#install-using-the-convenience-script\n\nNote: Docker will start automatically on `DEB`-based distributions. On `RPM`-based distributions, you need to start it manually using the appropriate `systemctl` or `service` command. Non-root users can’t run Docker commands by default.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 1, 7 | "CommunityActionTemplateId": null, 8 | "Packages": [], 9 | "Properties": { 10 | "Octopus.Action.Script.ScriptSource": "Inline", 11 | "Octopus.Action.Script.Syntax": "Bash", 12 | "Octopus.Action.Script.ScriptBody": "echo 'Downloading install script from https://get.docker.com'\ncurl -fsSL https://get.docker.com -o get-docker.sh\n\necho 'Running get-docker.sh'\nsudo sh get-docker.sh" 13 | }, 14 | "Parameters": [], 15 | "$Meta": { 16 | "ExportedAt": "2020-05-19T07:17:52.446Z", 17 | "OctopusVersion": "2020.2.4", 18 | "Type": "ActionTemplate" 19 | }, 20 | "LastModifiedBy": "MJRichardson", 21 | "Category": "docker" 22 | } -------------------------------------------------------------------------------- /step-templates/docker-install-windows.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "3f78a32f-d074-43cc-a009-793f72b204f3", 3 | "Name": "Install Docker on Windows Server", 4 | "Description": "Automates the steps from [here](https://docs.microsoft.com/en-us/virtualization/windowscontainers/quick-start/set-up-environment?tabs=Windows-Server#install-docker).\n\nThis step reboots the machine.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 1, 7 | "CommunityActionTemplateId": null, 8 | "Packages": [], 9 | "Properties": { 10 | "Octopus.Action.Script.ScriptSource": "Inline", 11 | "Octopus.Action.Script.Syntax": "PowerShell", 12 | "Octopus.Action.Script.ScriptBody": "Find-PackageProvider -Name 'Nuget' -ForceBootstrap -IncludeDependencies\n\n$DockerModule = Get-Module -ListAvailable -Name DockerMsftProvider \nif (-Not $DockerModule) {\n Write-Host \"Installing DockerMsftProvider module\"\n Install-Module -Name DockerMsftProvider -Repository PSGallery -Force\n} else {\n Write-Host \"DockerMsftProvider module already installed\"\n}\n\ntry {\n\t$DockerPackage = Get-Package -Name docker\n} catch [Exception] {}\n\nif (-Not $DockerPackage) {\n Write-Host \"Installing docker package\"\n Install-Package -Name docker -ProviderName DockerMsftProvider -Force\n\n Write-Host \"Restarting machine...\"\n Restart-Computer -Force\n} else {\n Write-Host \"docker package already installed\"\n}" 13 | }, 14 | "Parameters": [], 15 | "$Meta": { 16 | "ExportedAt": "2020-05-19T03:10:21.233Z", 17 | "OctopusVersion": "2020.2.4", 18 | "Type": "ActionTemplate" 19 | }, 20 | "LastModifiedBy": "MJRichardson", 21 | "Category": "docker" 22 | } -------------------------------------------------------------------------------- /step-templates/event-tracing-register-manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "2b7e3987-0da0-4a5d-bb60-c190b433d888", 3 | "Name": "Event Tracing - Register an ETW manifest", 4 | "Description": "Registers an ETW manifest", 5 | "ActionType": "Octopus.Script", 6 | "Version": 1, 7 | "Properties": { 8 | "Octopus.Action.Script.Syntax": "PowerShell", 9 | "Octopus.Action.Script.ScriptBody": "if(-not (Test-Path $env:SystemRoot\\System32\\wevtutil.exe))\n{\n throw \"wevtutil.exe could not be found\"\n}\n\nif(-not (Test-Path $ManifestFile))\n{\n throw \"Manifest $manifest could not be found\"\n}\n\nif(-not (Test-Path $ResourceFile))\n{\n throw \"Resource file $ResourceFile could not be found\"\n}\n\nif(-not (Test-Path $MessageFile))\n{\n throw \"Message file $MessageFile could not be found\"\n}\n\n& \"$env:SystemRoot\\System32\\wevtutil.exe\" im $ManifestFile /rf:$ResourceFile /mf:$MessageFile" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "ManifestFile", 15 | "Label": "Manifest file", 16 | "HelpText": "Full path to the manifest file that must be registered.", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | }, 22 | { 23 | "Name": "ResourceFile", 24 | "Label": "Resource file", 25 | "HelpText": "The full path to the assembly that must be used as resource file.", 26 | "DefaultValue": null, 27 | "DisplaySettings": { 28 | "Octopus.ControlType": "SingleLineText" 29 | } 30 | }, 31 | { 32 | "Name": "MessageFile", 33 | "Label": "Message file", 34 | "HelpText": "The full path to the assembly that must be used as message file.", 35 | "DefaultValue": null, 36 | "DisplaySettings": { 37 | "Octopus.ControlType": "SingleLineText" 38 | } 39 | } 40 | ], 41 | "LastModifiedBy": "HumanPrinter", 42 | "$Meta": { 43 | "ExportedAt": "2017-03-16T13:02:50.0927973Z", 44 | "OctopusVersion": "3.11.6", 45 | "Type": "ActionTemplate" 46 | }, 47 | "Category": "event-tracing" 48 | } -------------------------------------------------------------------------------- /step-templates/event-tracing-unregister-manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "59be43c9-e5eb-499f-9237-f388bcd7940d", 3 | "Name": "Event Tracing - Unregister an ETW manifest", 4 | "Description": "Unregisters an ETW manifest", 5 | "ActionType": "Octopus.Script", 6 | "Version": 1, 7 | "Properties": { 8 | "Octopus.Action.Script.Syntax": "PowerShell", 9 | "Octopus.Action.Script.ScriptBody": "if(-not (Test-Path $env:SystemRoot\\System32\\wevtutil.exe))\n{\n throw \"wevtutil.exe could not be found\"\n}\n\nif(-not (Test-Path $ManifestFile))\n{\n Write-Host \"Skipping manifest $ManifestFile because it does not exist\" \n Exit 0\n}\n\n& \"$env:SystemRoot\\System32\\wevtutil.exe\" um $ManifestFile" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "ManifestFile", 15 | "Label": "Manifest file", 16 | "HelpText": "Full path to the manifest file that must be unregistered.", 17 | "DefaultValue": "", 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | } 22 | ], 23 | "LastModifiedBy": "HumanPrinter", 24 | "$Meta": { 25 | "ExportedAt": "2017-03-16T11:12:52.2250765Z", 26 | "OctopusVersion": "3.11.6", 27 | "Type": "ActionTemplate" 28 | }, 29 | "Category": "event-tracing" 30 | } -------------------------------------------------------------------------------- /step-templates/file-download.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "f444ca63-a73c-4878-955e-96b508f9e883", 3 | "Name": "Download file", 4 | "Description": "Downloads a file from the internet to the local machine.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 3, 7 | "CommunityActionTemplateId": null, 8 | "Properties": { 9 | "Octopus.Action.Script.Syntax": "PowerShell", 10 | "Octopus.Action.Script.ScriptSource": "Inline", 11 | "Octopus.Action.RunOnServer": "false", 12 | "Octopus.Action.Script.ScriptBody": "Write-Verbose \"Downloading file $FileUrl, to the destination $FilePath\" -Verbose\r\n$client = new-object System.Net.WebClient\r\n$client.DownloadFile($FileUrl, $FilePath)\r\nWrite-Verbose \"File downloadded\" -Verbose\r\n", 13 | "Octopus.Action.Script.ScriptFileName": null, 14 | "Octopus.Action.Package.FeedId": null, 15 | "Octopus.Action.Package.PackageId": null 16 | }, 17 | "Parameters": [ 18 | { 19 | "Id": "3e6a8f44-5791-4571-8e90-025f6776c6d0", 20 | "Name": "FileUrl", 21 | "Type": "String", 22 | "Label": "File Url", 23 | "HelpText": "Url of the file you want to download", 24 | "DefaultValue": "", 25 | "DisplaySettings": { 26 | "Octopus.ControlType": "SingleLineText" 27 | }, 28 | "Links": {} 29 | }, 30 | { 31 | "Id": "1b67fd5f-f626-40f4-80bb-f10fe681abf3", 32 | "Name": "FilePath", 33 | "Type": "String", 34 | "Label": "File Destination Path", 35 | "HelpText": "Destination path of the file on disk", 36 | "DefaultValue": "", 37 | "DisplaySettings": { 38 | "Octopus.ControlType": "SingleLineText" 39 | }, 40 | "Links": {} 41 | } 42 | ], 43 | "LastModifiedBy": "ahmedig", 44 | "$Meta": { 45 | "ExportedAt": "2017-03-07T05:12:43.174Z", 46 | "OctopusVersion": "3.11.2", 47 | "Type": "ActionTemplate" 48 | }, 49 | "Category": "http" 50 | } -------------------------------------------------------------------------------- /step-templates/file-system-create-file.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "175a91a9-562e-49b9-bfa6-609a4e16bc56", 3 | "Name": "File System - Create File", 4 | "Description": "Creates a file, using the full path that is provided.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 2, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "$filePath = $OctopusParameters['FilePath']\n$fileContent = $OctopusParameters['FileContent']\n$encoding = $OctopusParameters['Encoding']\n\nNew-Item -ItemType file -Path $filePath -Value '' -force\n\nif(![string]::IsNullOrEmpty($fileContent))\n{\n Set-Content -path $filePath -value $fileContent -encoding $encoding\n}", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "FilePath", 15 | "Label": "The full path where the file will be created.", 16 | "HelpText": "Provide the entire physical path to which the physical file will be created. For example, 'C:\\Temp\\MyFile.txt' will create am empty text file named 'MyFile.txt' in the 'Temp' folder on the C: drive.", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | }, 22 | { 23 | "Name": "FileContent", 24 | "Label": "File Content", 25 | "HelpText": "The text you would like inside the file, if nothing then will create an empty file.", 26 | "DefaultValue": null, 27 | "DisplaySettings": { 28 | "Octopus.ControlType": "MultiLineText" 29 | } 30 | }, 31 | { 32 | "Id": "43aff0e0-e7ad-40cb-ae54-a49ca03adfc5", 33 | "Name": "Encoding", 34 | "Type": "String", 35 | "Label": "", 36 | "HelpText": null, 37 | "DefaultValue": "UTF8", 38 | "DisplaySettings": { 39 | "Octopus.ControlType": "Select", 40 | "Octopus.SelectOptions": "UTF8|UTF-8\nASCII|ASCII (7-bit)\nBigEndianUnicode|UTF-16 (big-endian)\nByte|Encodes as byte sequence\nUnicode|UTF-16 (little-endian)\nUTF7|UTF-7\nUnknown|Binary" 41 | }, 42 | "Links": {} 43 | } 44 | ], 45 | "LastModifiedOn": "2017-04-28T10:48:34.361Z", 46 | "LastModifiedBy": "carlpett", 47 | "$Meta": { 48 | "ExportedAt": "2017-04-28T10:48:34.361Z", 49 | "OctopusVersion": "3.11.15", 50 | "Type": "ActionTemplate" 51 | }, 52 | "Category": "filesystem" 53 | } 54 | -------------------------------------------------------------------------------- /step-templates/file-system-restore-directory.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "04a74a00-967d-496a-a966-1acd17fededf", 3 | "Name": "File System - Restore Directory", 4 | "Description": "Restores a folder and it's contents (files and sub-folders).", 5 | "ActionType": "Octopus.Script", 6 | "Version": 2, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "$source = $OctopusParameters['Source']\r\n$destination = $OctopusParameters['Destination']\r\n\r\nif(Test-Path $destination)\r\n{\r\n ## Clean the destination folder\r\n Write-Host \"Cleaning $destination\"\r\n Remove-Item $destination -Recurse\r\n}\r\n\r\n## Copy recursively\r\nWrite-Host \"Copying from $source to $destination\"\r\nCopy-Item $source $destination -Recurse", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "Source", 15 | "Label": "Source", 16 | "HelpText": "The source directory where files and folders will be copied from", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | }, 22 | { 23 | "Name": "Destination", 24 | "Label": "Destination folder", 25 | "HelpText": "The Destination where the files will be copied to.", 26 | "DefaultValue": null, 27 | "DisplaySettings": { 28 | "Octopus.ControlType": "SingleLineText" 29 | } 30 | } 31 | ], 32 | "LastModifiedOn": "2021-07-26T16:50:00.000+00:00", 33 | "LastModifiedBy": "bobjwalker", 34 | "$Meta": { 35 | "ExportedAt": "2015-12-06T00:00:00.000+00:00", 36 | "Type": "ActionTemplate" 37 | }, 38 | "Category": "filesystem" 39 | } -------------------------------------------------------------------------------- /step-templates/http-invoke-url.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "bb2a8fef-1407-405b-9251-a259c1868bad", 3 | "Name": "HTTP - Invoke URL", 4 | "Description": "Invoke HTTP Get request using provided url. Doesn't throw exception when request fails.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 2, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "# Running outside octopus\r\nparam(\r\n [string]$url,\r\n [switch]$whatIf\r\n) \r\n\r\n$ErrorActionPreference = \"Stop\" \r\n\r\nfunction Get-Param($Name, [switch]$Required, $Default) {\r\n $result = $null\r\n\r\n if ($OctopusParameters -ne $null) {\r\n $result = $OctopusParameters[$Name]\r\n }\r\n\r\n if ($result -eq $null) {\r\n $variable = Get-Variable $Name -EA SilentlyContinue \r\n if ($variable -ne $null) {\r\n $result = $variable.Value\r\n }\r\n }\r\n\r\n if ($result -eq $null -or $result -eq \"\") {\r\n if ($Required) {\r\n throw \"Missing parameter value $Name\"\r\n } else {\r\n $result = $Default\r\n }\r\n }\r\n\r\n return $result\r\n}\r\n\r\n& {\r\n param(\r\n [string]$url\r\n ) \r\n\r\n Write-Host \"Invoke Url: $url\"\r\n\r\n try {\r\n \r\n Invoke-WebRequest -Uri $url -Method Get -UseBasicParsing\r\n\r\n } catch {\r\n Write-Host \"There was a problem invoking Url\" \r\n }\r\n\r\n } `\r\n (Get-Param 'url' -Required)", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "url", 15 | "Label": "Url", 16 | "HelpText": "Web request Url", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | } 22 | ], 23 | "LastModifiedOn": "2015-08-31T12:06:43.681+00:00", 24 | "LastModifiedBy": "jmalczak", 25 | "$Meta": { 26 | "ExportedAt": "2015-08-31T12:25:19.923+00:00", 27 | "OctopusVersion": "2.6.5.1010", 28 | "Type": "ActionTemplate" 29 | }, 30 | "Category": "http" 31 | } -------------------------------------------------------------------------------- /step-templates/hydra-update-octopus-tentacle.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "d4fb1945-f0a8-4de4-9045-8441e14057fa", 3 | "Name": "Hydra - Update Octopus Tentacle", 4 | "Description": "Performs an automatic update for a 2.6 Tentacle to a 3.0 Tentacle.", 5 | "ActionType": "Octopus.TentaclePackage", 6 | "Version": 8, 7 | "Properties": { 8 | "Octopus.Action.Package.NuGetFeedId": "feeds-builtin", 9 | "Octopus.Action.EnabledFeatures": "Octopus.Features.CustomScripts", 10 | "Octopus.Action.Package.AutomaticallyRunConfigurationTransformationFiles": "False", 11 | "Octopus.Action.Package.AutomaticallyUpdateAppSettingsAndConnectionStrings": "False", 12 | "Octopus.Action.Package.DownloadOnTentacle": "False", 13 | "Octopus.Action.Package.NuGetPackageId": "OctopusDeploy.Hydra", 14 | "Octopus.Action.CustomScripts.PostDeploy.ps1": "if ([System.String]::IsNullOrEmpty($ServerMapping)) {\n & .\\Hydra.exe --defer\n} else {\n $cleanServerMapping = $ServerMapping.Replace(\" \",\"\")\n & .\\Hydra.exe --defer --servers=$cleanServerMapping\n}\n" 15 | }, 16 | "SensitiveProperties": {}, 17 | "Parameters": [ 18 | { 19 | "Name": "ServerMapping", 20 | "Label": "Server Mapping", 21 | "HelpText": "Optional mapping to new Octopus server location required for polling Tentacles.\nEither a single IP address or DNS name with a port (e.g. `http://new.server:10943`)\nOr a mapping in the form `https://old.server:10943/=>https://new.server:10943/`, with multiple mappings separated by a comma (`,`) or semicolon (`;`)\n\n_Note: If using the mapping format, the final `/` is required._", 22 | "DefaultValue": null, 23 | "DisplaySettings": { 24 | "Octopus.ControlType": "SingleLineText" 25 | } 26 | } 27 | ], 28 | "LastModifiedOn": "2015-07-01T05:56:48.370+00:00", 29 | "LastModifiedBy": "Damovisa", 30 | "$Meta": { 31 | "ExportedAt": "2015-07-01T05:57:02.674+00:00", 32 | "OctopusVersion": "2.6.5.1581", 33 | "Type": "ActionTemplate" 34 | }, 35 | "Category": "octopus", 36 | "MaximumServerVersion": "3.0.0" 37 | } 38 | -------------------------------------------------------------------------------- /step-templates/iis-apppool-restart.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "de4a85ca-38cc-4a30-8244-64612e3a7921", 3 | "Name": "IIS AppPool - Restart", 4 | "Description": "Starts or Restarts an IIS Application Pool", 5 | "ActionType": "Octopus.Script", 6 | "Version": 9, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "# Load IIS module:\nImport-Module WebAdministration\n\n# Get AppPool Name\n$appPoolName = $OctopusParameters['appPoolName']\n\n# Check if exists\nif (Test-Path IIS:\\AppPools\\$appPoolName){\n # Start App Pool if stopped else restart\nif ((Get-WebAppPoolState($appPoolName)).Value -eq \"Stopped\"){\n Write-Output \"Starting IIS app pool $appPoolName\"\n Start-WebAppPool $appPoolName\n}\nelse {\n Write-Output \"Restarting IIS app pool $appPoolName\"\n Restart-WebAppPool $appPoolName\n}\n}\n", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "AppPoolName", 15 | "Label": "Application pool name", 16 | "HelpText": "The name of the application pool in IIS.", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | } 22 | ], 23 | "LastModifiedOn": "2021-07-26T16:50:00.000+00:00", 24 | "LastModifiedBy": "bobjwalker", 25 | "$Meta": { 26 | "ExportedAt": "2014-05-16T06:09:22.242+00:00", 27 | "OctopusVersion": "2.4.5.46", 28 | "Type": "ActionTemplate" 29 | }, 30 | "Category": "iis" 31 | } -------------------------------------------------------------------------------- /step-templates/iis-apppool-set-managed-pipeline-mode.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "e87b057b-bbe0-49a4-bbed-5cfe0413667a", 3 | "Name": "IIS AppPool - Set Managed Pipeline Mode", 4 | "Description": "Sets an IIS Application Pool's Managed Pipeline Mode.\nI.E. Classic or Integrated", 5 | "ActionType": "Octopus.Script", 6 | "Version": 4, 7 | "Properties": { 8 | "Octopus.Action.Script.Syntax": "PowerShell", 9 | "Octopus.Action.Script.ScriptSource": "Inline", 10 | "Octopus.Action.RunOnServer": "false", 11 | "Octopus.Action.Script.ScriptBody": "$AppPoolName = $OctopusParameters[\"AppPoolName\"]\r\n$Mode = $OctopusParameters[\"PiplelineMode\"]\r\n\r\nImport-Module WebAdministration\r\n\r\nGet-ChildItem IIS:\\AppPools | ?{$_.Name -eq $AppPoolName} | Select-Object -ExpandProperty PSPath | %{ Set-ItemProperty $_ managedPipelineMode $Mode -Verbose}", 12 | "Octopus.Action.Script.ScriptFileName": null, 13 | "Octopus.Action.Package.FeedId": null, 14 | "Octopus.Action.Package.PackageId": null 15 | }, 16 | "Parameters": [ 17 | { 18 | "Id": "b850425c-dba9-45f9-9c00-78298cbd8e82", 19 | "Name": "AppPoolName", 20 | "Label": "Application Pool Name", 21 | "HelpText": "The Application Pool Name to update.", 22 | "DefaultValue": null, 23 | "DisplaySettings": { 24 | "Octopus.ControlType": "SingleLineText" 25 | }, 26 | "Links": {} 27 | }, 28 | { 29 | "Id": "f6ad588b-a41c-4e14-bd15-bb4d8830acc2", 30 | "Name": "PiplelineMode", 31 | "Label": "Managed Pipeline Mode", 32 | "HelpText": "The Managed Pipleline mode to be set to", 33 | "DefaultValue": "Classic", 34 | "DisplaySettings": { 35 | "Octopus.ControlType": "Select", 36 | "Octopus.SelectOptions": "Classic|Classic\nIntegrated|Integrated" 37 | }, 38 | "Links": {} 39 | } 40 | ], 41 | "LastModifiedOn": "2017-02-14T00:00:00.386+00:00", 42 | "LastModifiedBy": "drobison", 43 | "$Meta": { 44 | "ExportedAt": "2017-02-14T21:55:44.314Z", 45 | "OctopusVersion": "3.5.1", 46 | "Type": "ActionTemplate" 47 | }, 48 | "Category": "iis" 49 | } 50 | -------------------------------------------------------------------------------- /step-templates/iis-apppool-start.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "9db77671-0fe3-4aef-a014-551bf1e5e7ab", 3 | "Name": "IIS AppPool - Start", 4 | "Description": "Starts an IIS Application Pool", 5 | "ActionType": "Octopus.Script", 6 | "Version": 4, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "# Load IIS module:\nImport-Module WebAdministration\n\n# Get AppPool Name\n$appPoolName = $OctopusParameters['appPoolName']\n\nWrite-Output \"Starting IIS app pool $appPoolName\"\nStart-WebAppPool $appPoolName\n\n\n", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "AppPoolName", 15 | "Label": "Application pool name", 16 | "HelpText": "The name of the application pool in IIS.", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | } 22 | ], 23 | "LastModifiedOn": "2021-07-26T16:50:00.000+00:00", 24 | "LastModifiedBy": "bobjwalker", 25 | "$Meta": { 26 | "ExportedAt": "2014-05-16T06:09:53.938+00:00", 27 | "OctopusVersion": "2.4.5.46", 28 | "Type": "ActionTemplate" 29 | }, 30 | "Category": "iis" 31 | } -------------------------------------------------------------------------------- /step-templates/iis-backup-iis-configuration.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "e1006e45-bbde-42e3-b6b9-16d804772684", 3 | "Name": "IIS - Backup IIS Configuration", 4 | "Description": "This backs up the entire IIS configuration for the server (does not include website files). Note that all prior configurations on that IIS server will be cleared out.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 1, 7 | "Properties": { 8 | "Octopus.Action.Script.Syntax": "PowerShell", 9 | "Octopus.Action.Script.ScriptSource": "Inline", 10 | "Octopus.Action.RunOnServer": "false", 11 | "Octopus.Action.Script.ScriptBody": "<#\r\nThis script will take the existing configuration (does not include website files) and back it up on the IIS Server, which can then be later restored if needed.\r\n\r\nTo view existing backups for restore operation, find the latest backup here:\r\n $env:Windir\\System32\\inetsrv\\backup\r\n\r\nTo restore, use the following commands:\r\n Restore-WebConfiguration -Name \"IISConfigBackup\"\r\n iisreset\r\n\r\nReference Articles:\r\nhttps://technet.microsoft.com/en-us/library/hh867851(v=wps.630).aspx\r\nhttps://technet.microsoft.com/en-us/library/hh867862(v=wps.630).aspx\r\n#>\r\n\r\n# clear all backed up configurations first\r\nRemove-WebConfigurationBackup\r\n\r\n# perform backup\r\nBackup-WebConfiguration -Name \"IISConfigBackup\"\r\n", 12 | "Octopus.Action.Script.ScriptFileName": null, 13 | "Octopus.Action.Package.FeedId": null, 14 | "Octopus.Action.Package.PackageId": null 15 | }, 16 | "Parameters": [], 17 | "LastModifiedBy": "jjaffery", 18 | "$Meta": { 19 | "ExportedAt": "2016-11-23T21:07:51.416Z", 20 | "OctopusVersion": "3.4.15", 21 | "Type": "ActionTemplate" 22 | }, 23 | "Category": "iis" 24 | } 25 | -------------------------------------------------------------------------------- /step-templates/iis-bind-ssl-certificate-with-sni-enabled.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "4827a205-ff46-4109-a0aa-7c59a8688f7e", 3 | "Name": "IIS - Bind SSL Certificate with SNI Enabled", 4 | "Description": "Applies a https binding, with SNI enabled.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 10, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "$WebsiteName = $OctopusParameters['WebsiteName']\r\n$SSLBindingHost = $OctopusParameters['SSLBindingHost']\r\n$CertificateThumbPrint = $OctopusParameters['CertificateThumbPrint']\r\n\r\nnew-webbinding -Name $WebsiteName -Protocol \"https\" -Port 443 -HostHeader $SSLBindingHost -SslFlags 1\r\nnetsh http add sslcert hostnameport=$($SSLBindingHost):443 certhash=$CertificateThumbPrint appid='{58ee6009-4e61-400b-80cf-dedc242faf63}' certstorename=MY\r\n", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "WebsiteName", 15 | "Label": "Website Name", 16 | "HelpText": "Name of the web site in IIS", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | }, 22 | { 23 | "Name": "SSLBindingHost", 24 | "Label": "SSL Binding Host", 25 | "HelpText": "The host name to bind (www.pancreaticcancer.org.uk)", 26 | "DefaultValue": null, 27 | "DisplaySettings": { 28 | "Octopus.ControlType": "SingleLineText" 29 | } 30 | }, 31 | { 32 | "Name": "CertificateThumbPrint", 33 | "Label": "Certificate Thumbprint", 34 | "HelpText": "The SSL Thumbprint for the certificate. Do not include spaces", 35 | "DefaultValue": null, 36 | "DisplaySettings": { 37 | "Octopus.ControlType": "SingleLineText" 38 | } 39 | } 40 | ], 41 | "LastModifiedOn": "2021-07-26T16:50:00.000+00:00", 42 | "LastModifiedBy": "bobjwalker", 43 | "$Meta": { 44 | "ExportedAt": "2014-10-23T14:40:38.823+00:00", 45 | "OctopusVersion": "2.4.5.46", 46 | "Type": "ActionTemplate" 47 | }, 48 | "Category": "iis" 49 | } -------------------------------------------------------------------------------- /step-templates/iis-list-sites.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "05e87da8-a9df-449f-bdbb-98fa44740b46", 3 | "Name": "IIS - List Sites", 4 | "Description": "List sites on the server.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 1, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "try {\r\n\t$iisFeature = Get-WindowsFeature Web-WebServer -ErrorAction Stop\r\n\tif ($iisFeature -eq $null -or $iisFeature.Installed -eq $false) {\r\n\t\tWrite-Error \"It looks like IIS is not installed on this server and the deployment is likely to fail.\"\r\n\t\tWrite-Error \"Tip: You can use PowerShell to ensure IIS is installed: 'Install-WindowsFeature Web-WebServer'\"\r\n\t\tWrite-Error \" You are likely to want more IIS features than just the web server. Run 'Get-WindowsFeature *web*' to see all of the features you can install.\"\r\n\t\texit 1\r\n\t}\r\n} catch {\r\n\tWrite-Verbose \"Call to `Get-WindowsFeature Web-WebServer` failed.\"\r\n\tWrite-Verbose \"Unable to determine if IIS is installed on this server but will optimistically continue.\"\r\n}\r\n\r\ntry {\r\n\tAdd-PSSnapin WebAdministration -ErrorAction Stop\r\n} catch {\r\n try {\r\n\t\t Import-Module WebAdministration -ErrorAction Stop\r\n\t\t} catch {\r\n\t\t\tWrite-Warning \"We failed to load the WebAdministration module. This usually resolved by doing one of the following:\"\r\n\t\t\tWrite-Warning \"1. Install .NET Framework 3.5.1\"\r\n\t\t\tWrite-Warning \"2. Upgrade to PowerShell 3.0 (or greater)\"\r\n\t\t\tWrite-Warning \"3. On Windows 2008 you might need to install PowerShell SnapIn for IIS from http://www.iis.net/downloads/microsoft/powershell#additionalDownloads\"\r\n\t\t\tthrow ($error | Select-Object -First 1)\r\n }\r\n}\r\n\r\nGet-WebSite", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [], 13 | "LastModifiedOn": "2016-12-19T23:20:00.000+00:00", 14 | "LastModifiedBy": "BrettJaner", 15 | "$Meta": { 16 | "ExportedAt": "2016-12-19T23:20:00.000+00:00", 17 | "OctopusVersion": "2.4.7.85", 18 | "Type": "ActionTemplate" 19 | }, 20 | "Category": "iis" 21 | } -------------------------------------------------------------------------------- /step-templates/iis-website-appfabric-application-start.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "3f80830a-8920-44d9-bf2f-af6b84262631", 3 | "Name": "IIS Website AppFabric Application - Start", 4 | "Description": "Starts an AppFabric application in IIS.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 11, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "Import-Module WebAdministration\n\n$webSiteName = $OctopusParameters['WebSiteName']\n$applicationName = $OctopusParameters['ApplicationName']\n\nif (!$webSiteName)\n{\n Write-Error \"No Website name was specified. Please specify the name of the Website that contains the AppFabric application.\"\n exit -2\n}\n\nif (!$applicationName)\n{\n Write-Error \"No Application name was specified. Please specify the name of the AppFabric Application contained in the Website.\"\n exit -2\n}\n\nWrite-Output \"Starting IIS AppFabric application $applicationName in website $webSiteName\"\nStart-AsApplication $webSiteName $applicationName\n", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "WebsiteName", 15 | "Label": "Website name", 16 | "HelpText": "The name of the site in IIS", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | }, 22 | { 23 | "Name": "ApplicationName", 24 | "Label": "Application Name", 25 | "HelpText": "The name of the AppFabric application inside the Website in IIS", 26 | "DefaultValue": null, 27 | "DisplaySettings": { 28 | "Octopus.ControlType": "SingleLineText" 29 | } 30 | } 31 | ], 32 | "LastModifiedOn": "2014-09-20T21:03:29.922+00:00", 33 | "LastModifiedBy": "caioproiete", 34 | "$Meta": { 35 | "ExportedAt": "2014-09-20T21:16:03.171+00:00", 36 | "OctopusVersion": "2.5.8.447", 37 | "Type": "ActionTemplate" 38 | }, 39 | "Category": "iis" 40 | } -------------------------------------------------------------------------------- /step-templates/iis-website-appfabric-application-stop.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "bf1f9d1d-3200-4ae6-bab1-12e42aa829e6", 3 | "Name": "IIS Website AppFabric Application - Stop", 4 | "Description": "Stops an AppFabric application in IIS.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 6, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "Import-Module WebAdministration\n\n$webSiteName = $OctopusParameters['WebSiteName']\n$applicationName = $OctopusParameters['ApplicationName']\n\nif (!$webSiteName)\n{\n Write-Error \"No Website name was specified. Please specify the name of the Website that contains the AppFabric application.\"\n exit -2\n}\n\nif (!$applicationName)\n{\n Write-Error \"No Application name was specified. Please specify the name of the AppFabric Application contained in the Website.\"\n exit -2\n}\n\nWrite-Output \"Stopping IIS AppFabric application $applicationName in website $webSiteName\"\nStop-AsApplication $webSiteName $applicationName\n", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "WebsiteName", 15 | "Label": "Website name", 16 | "HelpText": "The name of the site in IIS", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | }, 22 | { 23 | "Name": "ApplicationName", 24 | "Label": "Application Name", 25 | "HelpText": "The name of the AppFabric application inside the Website in IIS", 26 | "DefaultValue": null, 27 | "DisplaySettings": { 28 | "Octopus.ControlType": "SingleLineText" 29 | } 30 | } 31 | ], 32 | "LastModifiedOn": "2014-09-20T21:03:33.663+00:00", 33 | "LastModifiedBy": "caioproiete", 34 | "$Meta": { 35 | "ExportedAt": "2014-09-20T21:19:58.914+00:00", 36 | "OctopusVersion": "2.5.8.447", 37 | "Type": "ActionTemplate" 38 | }, 39 | "Category": "iis" 40 | } -------------------------------------------------------------------------------- /step-templates/iis-website-restart.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "6a17bd83-ef96-4c22-b212-91a89ca92fe6", 3 | "Name": "IIS Website - Restart", 4 | "Description": "Restarts a website in IIS.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 12, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "# Load IIS module:\nImport-Module WebAdministration\n\n# Set a name of the site we want to restart\n$webSiteName = $OctopusParameters['webSiteName']\n\n# Get web site object\n$webSite = Get-Item \"IIS:\\Sites\\$webSiteName\"\n\nWrite-Output \"Stopping IIS web site $webSiteName\"\n$webSite.Stop()\nWrite-Output \"Starting IIS web site $webSiteName\"\n$webSite.Start()\n", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "WebsiteName", 15 | "Label": "Website name", 16 | "HelpText": "The name of the site in IIS", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | } 22 | ], 23 | "LastModifiedOn": "2021-07-26T16:50:00.000+00:00", 24 | "LastModifiedBy": "bobjwalker", 25 | "$Meta": { 26 | "ExportedAt": "2014-05-16T06:21:11.211+00:00", 27 | "OctopusVersion": "2.4.5.46", 28 | "Type": "ActionTemplate" 29 | }, 30 | "Category": "iis" 31 | } -------------------------------------------------------------------------------- /step-templates/iis-website-start.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "2b2cf57e-24fa-4094-9513-89647fe5f807", 3 | "Name": "IIS Website - Start", 4 | "Description": "Starts a website in IIS.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 8, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "# Load IIS module:\nImport-Module WebAdministration\n\n# Set a name of the site we want to start\n$webSiteName = $OctopusParameters['webSiteName']\n\n# Get web site object\ntry {\n$webSite = Get-Item \"IIS:\\Sites\\$webSiteName\"\n}\nCatch [System.IO.FileNotFoundException]{\n\t# Some OS bug out if Default Web Site is deleted.\n# So we need to call this 2 times.\n$webSite = Get-Item \"IIS:\\Sites\\$webSiteName\"\n}\n\nWrite-Output \"Starting IIS web site $webSiteName\"\n$webSite.Start()\n", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "WebsiteName", 15 | "Label": "Website name", 16 | "HelpText": "The name of the site in IIS", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | } 22 | ], 23 | "LastModifiedOn": "2021-07-26T16:50:00.000+00:00", 24 | "LastModifiedBy": "bobjwalker", 25 | "$Meta": { 26 | "ExportedAt": "2020-11-10T07:29:37.424Z", 27 | "OctopusVersion": "2019.13.7", 28 | "Type": "ActionTemplate" 29 | }, 30 | "Category": "iis" 31 | } 32 | -------------------------------------------------------------------------------- /step-templates/iis-website-update-iis-log-path.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "c9c5d076-6936-4781-be3b-3a41912f7b67", 3 | "Name": "IIS Website - Update IIS Log Path", 4 | "Description": "Updates the IIS Log Path if needed.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 5, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "write-host \"#Updating IIS Log path\"\n\nImport-Module \"WebAdministration\" -ErrorAction Stop\n\n$logPath = $OctopusParameters['LogPath']\n$IISsitename = $OctopusParameters['webSiteName']\n\nif (!(Test-Path \"IIS:\\Sites\\$($IISsitename)\")) {\n write-host \"$IISsitename does not exist in IIS\"\n} else {\n $currentLogPath = (Get-ItemProperty IIS:\\Sites\\$($IISsitename)).logFile.directory\n write-host \"IIS LogPath currently set to $currentLogPath\"\n if ([string]::Compare($currentLogPath, $logPath, $True) -ne 0) {\n Set-ItemProperty IIS:\\Sites\\$($IISsitename) -name logFile.directory -value $logPath\n write-host \"IIS LogPath updated to $logPath\"\n }\n}", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "LogPath", 15 | "Label": "Log path", 16 | "HelpText": "The path where you want to store your logs", 17 | "DefaultValue": "", 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | }, 22 | { 23 | "Name": "WebsiteName", 24 | "Label": "Website name", 25 | "HelpText": "The name of the site in IIS", 26 | "DefaultValue": null, 27 | "DisplaySettings": { 28 | "Octopus.ControlType": "SingleLineText" 29 | } 30 | } 31 | ], 32 | "LastModifiedOn": "2021-07-26T16:50:00.000+00:00", 33 | "LastModifiedBy": "bobjwalker", 34 | "$Meta": { 35 | "ExportedAt": "2015-05-05T09:23:23.465+00:00", 36 | "OctopusVersion": "2.6.5.1010", 37 | "Type": "ActionTemplate" 38 | }, 39 | "Category": "iis" 40 | } -------------------------------------------------------------------------------- /step-templates/logos/1password-connect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/1password-connect.png -------------------------------------------------------------------------------- /step-templates/logos/akamai.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/akamai.png -------------------------------------------------------------------------------- /step-templates/logos/amazon-chime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/amazon-chime.png -------------------------------------------------------------------------------- /step-templates/logos/ansible.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/ansible.png -------------------------------------------------------------------------------- /step-templates/logos/apexsql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/apexsql.png -------------------------------------------------------------------------------- /step-templates/logos/apollo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/apollo.png -------------------------------------------------------------------------------- /step-templates/logos/argo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/argo.png -------------------------------------------------------------------------------- /step-templates/logos/aspnet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/aspnet.png -------------------------------------------------------------------------------- /step-templates/logos/aws.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/aws.png -------------------------------------------------------------------------------- /step-templates/logos/azure-devops.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/azure-devops.png -------------------------------------------------------------------------------- /step-templates/logos/azure-keyvault.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/azure-keyvault.png -------------------------------------------------------------------------------- /step-templates/logos/azure-site-extensions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/azure-site-extensions.png -------------------------------------------------------------------------------- /step-templates/logos/azure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/azure.png -------------------------------------------------------------------------------- /step-templates/logos/azurefunctions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/azurefunctions.png -------------------------------------------------------------------------------- /step-templates/logos/bash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/bash.png -------------------------------------------------------------------------------- /step-templates/logos/cassandra.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/cassandra.png -------------------------------------------------------------------------------- /step-templates/logos/chef.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/chef.png -------------------------------------------------------------------------------- /step-templates/logos/chocolatey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/chocolatey.png -------------------------------------------------------------------------------- /step-templates/logos/clickonce.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/clickonce.png -------------------------------------------------------------------------------- /step-templates/logos/cyberark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/cyberark.png -------------------------------------------------------------------------------- /step-templates/logos/databricks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/databricks.png -------------------------------------------------------------------------------- /step-templates/logos/datadog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/datadog.png -------------------------------------------------------------------------------- /step-templates/logos/dll.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/dll.png -------------------------------------------------------------------------------- /step-templates/logos/dlm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/dlm.png -------------------------------------------------------------------------------- /step-templates/logos/docker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/docker.png -------------------------------------------------------------------------------- /step-templates/logos/dotnetcore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/dotnetcore.png -------------------------------------------------------------------------------- /step-templates/logos/dyn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/dyn.png -------------------------------------------------------------------------------- /step-templates/logos/edgecast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/edgecast.png -------------------------------------------------------------------------------- /step-templates/logos/elmah.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/elmah.png -------------------------------------------------------------------------------- /step-templates/logos/email.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/email.png -------------------------------------------------------------------------------- /step-templates/logos/encrypt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/encrypt.png -------------------------------------------------------------------------------- /step-templates/logos/entityframework.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/entityframework.png -------------------------------------------------------------------------------- /step-templates/logos/event-tracing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/event-tracing.png -------------------------------------------------------------------------------- /step-templates/logos/exe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/exe.png -------------------------------------------------------------------------------- /step-templates/logos/f5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/f5.png -------------------------------------------------------------------------------- /step-templates/logos/filesystem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/filesystem.png -------------------------------------------------------------------------------- /step-templates/logos/firebase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/firebase.png -------------------------------------------------------------------------------- /step-templates/logos/flyway.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/flyway.png -------------------------------------------------------------------------------- /step-templates/logos/ghostinspector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/ghostinspector.png -------------------------------------------------------------------------------- /step-templates/logos/git.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/git.png -------------------------------------------------------------------------------- /step-templates/logos/github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/github.png -------------------------------------------------------------------------------- /step-templates/logos/gitlab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/gitlab.png -------------------------------------------------------------------------------- /step-templates/logos/google-chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/google-chat.png -------------------------------------------------------------------------------- /step-templates/logos/google-cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/google-cloud.png -------------------------------------------------------------------------------- /step-templates/logos/grate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/grate.png -------------------------------------------------------------------------------- /step-templates/logos/hashicorp-vault.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/hashicorp-vault.png -------------------------------------------------------------------------------- /step-templates/logos/hipchat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/hipchat.png -------------------------------------------------------------------------------- /step-templates/logos/hockeyapp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/hockeyapp.png -------------------------------------------------------------------------------- /step-templates/logos/hosts-file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/hosts-file.png -------------------------------------------------------------------------------- /step-templates/logos/http.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/http.png -------------------------------------------------------------------------------- /step-templates/logos/iis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/iis.png -------------------------------------------------------------------------------- /step-templates/logos/jasper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/jasper.png -------------------------------------------------------------------------------- /step-templates/logos/jenkins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/jenkins.png -------------------------------------------------------------------------------- /step-templates/logos/jira.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/jira.png -------------------------------------------------------------------------------- /step-templates/logos/json.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/json.png -------------------------------------------------------------------------------- /step-templates/logos/jwt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/jwt.png -------------------------------------------------------------------------------- /step-templates/logos/k8s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/k8s.png -------------------------------------------------------------------------------- /step-templates/logos/keeper-secretsmanager.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/keeper-secretsmanager.png -------------------------------------------------------------------------------- /step-templates/logos/launchdarkly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/launchdarkly.png -------------------------------------------------------------------------------- /step-templates/logos/lets-encrypt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/lets-encrypt.png -------------------------------------------------------------------------------- /step-templates/logos/linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/linux.png -------------------------------------------------------------------------------- /step-templates/logos/liquibase.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/liquibase.png -------------------------------------------------------------------------------- /step-templates/logos/mabl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/mabl.png -------------------------------------------------------------------------------- /step-templates/logos/mariadb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/mariadb.png -------------------------------------------------------------------------------- /step-templates/logos/medianova.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/medianova.png -------------------------------------------------------------------------------- /step-templates/logos/mercurial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/mercurial.png -------------------------------------------------------------------------------- /step-templates/logos/microsoft-power-automate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/microsoft-power-automate.png -------------------------------------------------------------------------------- /step-templates/logos/microsoft-teams.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/microsoft-teams.png -------------------------------------------------------------------------------- /step-templates/logos/mongodb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/mongodb.png -------------------------------------------------------------------------------- /step-templates/logos/mulesoft.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/mulesoft.png -------------------------------------------------------------------------------- /step-templates/logos/mysql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/mysql.png -------------------------------------------------------------------------------- /step-templates/logos/netscaler.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/netscaler.png -------------------------------------------------------------------------------- /step-templates/logos/newrelic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/newrelic.png -------------------------------------------------------------------------------- /step-templates/logos/nunit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/nunit.png -------------------------------------------------------------------------------- /step-templates/logos/octopus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/octopus.png -------------------------------------------------------------------------------- /step-templates/logos/opslevel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/opslevel.png -------------------------------------------------------------------------------- /step-templates/logos/oracle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/oracle.png -------------------------------------------------------------------------------- /step-templates/logos/other.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/other.png -------------------------------------------------------------------------------- /step-templates/logos/pagerduty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/pagerduty.png -------------------------------------------------------------------------------- /step-templates/logos/pingdom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/pingdom.png -------------------------------------------------------------------------------- /step-templates/logos/postgresql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/postgresql.png -------------------------------------------------------------------------------- /step-templates/logos/proxmox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/proxmox.png -------------------------------------------------------------------------------- /step-templates/logos/pulumi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/pulumi.png -------------------------------------------------------------------------------- /step-templates/logos/pushalot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/pushalot.png -------------------------------------------------------------------------------- /step-templates/logos/pushover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/pushover.png -------------------------------------------------------------------------------- /step-templates/logos/rabbitmq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/rabbitmq.png -------------------------------------------------------------------------------- /step-templates/logos/rackspace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/rackspace.png -------------------------------------------------------------------------------- /step-templates/logos/ravendb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/ravendb.png -------------------------------------------------------------------------------- /step-templates/logos/raygun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/raygun.png -------------------------------------------------------------------------------- /step-templates/logos/readyroll.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/readyroll.png -------------------------------------------------------------------------------- /step-templates/logos/redgate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/redgate.png -------------------------------------------------------------------------------- /step-templates/logos/redis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/redis.png -------------------------------------------------------------------------------- /step-templates/logos/rnhub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/rnhub.png -------------------------------------------------------------------------------- /step-templates/logos/rollbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/rollbar.png -------------------------------------------------------------------------------- /step-templates/logos/roundhouse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/roundhouse.png -------------------------------------------------------------------------------- /step-templates/logos/sentry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/sentry.png -------------------------------------------------------------------------------- /step-templates/logos/seq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/seq.png -------------------------------------------------------------------------------- /step-templates/logos/sharepoint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/sharepoint.png -------------------------------------------------------------------------------- /step-templates/logos/sitecore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/sitecore.png -------------------------------------------------------------------------------- /step-templates/logos/slack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/slack.png -------------------------------------------------------------------------------- /step-templates/logos/snowflake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/snowflake.png -------------------------------------------------------------------------------- /step-templates/logos/solarwinds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/solarwinds.png -------------------------------------------------------------------------------- /step-templates/logos/spark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/spark.png -------------------------------------------------------------------------------- /step-templates/logos/splunk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/splunk.png -------------------------------------------------------------------------------- /step-templates/logos/sql.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/sql.png -------------------------------------------------------------------------------- /step-templates/logos/ssl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/ssl.png -------------------------------------------------------------------------------- /step-templates/logos/stackify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/stackify.png -------------------------------------------------------------------------------- /step-templates/logos/statuscake.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/statuscake.png -------------------------------------------------------------------------------- /step-templates/logos/statuspage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/statuspage.png -------------------------------------------------------------------------------- /step-templates/logos/swaggerhub.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/swaggerhub.png -------------------------------------------------------------------------------- /step-templates/logos/teamcity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/teamcity.png -------------------------------------------------------------------------------- /step-templates/logos/tenants.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/tenants.png -------------------------------------------------------------------------------- /step-templates/logos/terraform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/terraform.png -------------------------------------------------------------------------------- /step-templates/logos/testery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/testery.png -------------------------------------------------------------------------------- /step-templates/logos/tests.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/tests.png -------------------------------------------------------------------------------- /step-templates/logos/tomcat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/tomcat.png -------------------------------------------------------------------------------- /step-templates/logos/topshelf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/topshelf.png -------------------------------------------------------------------------------- /step-templates/logos/twilio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/twilio.png -------------------------------------------------------------------------------- /step-templates/logos/umbraco.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/umbraco.png -------------------------------------------------------------------------------- /step-templates/logos/unicorn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/unicorn.png -------------------------------------------------------------------------------- /step-templates/logos/unzip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/unzip.png -------------------------------------------------------------------------------- /step-templates/logos/venafi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/venafi.png -------------------------------------------------------------------------------- /step-templates/logos/victorops.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/victorops.png -------------------------------------------------------------------------------- /step-templates/logos/wait.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/wait.png -------------------------------------------------------------------------------- /step-templates/logos/webdeploy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/webdeploy.png -------------------------------------------------------------------------------- /step-templates/logos/windows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/windows.png -------------------------------------------------------------------------------- /step-templates/logos/winscp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/winscp.png -------------------------------------------------------------------------------- /step-templates/logos/xamarin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/xamarin.png -------------------------------------------------------------------------------- /step-templates/logos/xml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/xml.png -------------------------------------------------------------------------------- /step-templates/logos/xunit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/xunit.png -------------------------------------------------------------------------------- /step-templates/logos/zabbix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/step-templates/logos/zabbix.png -------------------------------------------------------------------------------- /step-templates/network-add-url-reservation.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "45eea99e-061c-45d2-bcc0-9320269a4ee4", 3 | "Name": "Network - Add URL Reservation", 4 | "Description": "Creates an HTTP URL reservation (ACL) using NETSH.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 11, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "$url = $OctopusParameters['Url']\n$user = $OctopusParameters['User']\n$delegate = if ('True' -eq $OctopusParameters['Delegate']) { 'yes' } else { 'no'}\n\n$delacl = \"http delete urlacl url=$url\"\n$addacl = \"http add urlacl url=$url user=\"\"$user\"\" delegate=$delegate\"\n\nwrite-host \"Removing ACL: $delacl\"\n$delacl | netsh | out-host\n\nwrite-host \"Creating ACL: $addacl\"\n$addacl | netsh | out-host\n", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "Url", 15 | "Label": "URL", 16 | "HelpText": "The URL to reserve. Example: _http://+:8080_", 17 | "DefaultValue": "", 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | }, 22 | { 23 | "Name": "Delegate", 24 | "Label": "Allow delegation", 25 | "HelpText": "Indicates whether or not the user can delegate URLs. Example: _True_ or _False_", 26 | "DefaultValue": "False", 27 | "DisplaySettings": { 28 | "Octopus.ControlType": "SingleLineText" 29 | } 30 | }, 31 | { 32 | "Name": "User", 33 | "Label": "User", 34 | "HelpText": "Specifies the user or group name. Example: _DOMAIN\\user_", 35 | "DefaultValue": "", 36 | "DisplaySettings": { 37 | "Octopus.ControlType": "SingleLineText" 38 | } 39 | } 40 | ], 41 | "LastModifiedOn": "2021-07-26T16:50:00.000+00:00", 42 | "LastModifiedBy": "bobjwalker", 43 | "$Meta": { 44 | "ExportedAt": "2014-05-27T18:53:32.929+00:00", 45 | "OctopusVersion": "2.4.5.46", 46 | "Type": "ActionTemplate" 47 | }, 48 | "Category": "http" 49 | } -------------------------------------------------------------------------------- /step-templates/pause-resume-pingdom-check.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "a2d3b49a-84aa-4dc4-8da1-fbb3d8ff205b", 3 | "Name": "Pause or Resume Pingdom check", 4 | "Description": null, 5 | "ActionType": "Octopus.Script", 6 | "Version": 1, 7 | "Properties": { 8 | "Octopus.Action.Script.Syntax": "PowerShell", 9 | "Octopus.Action.Script.ScriptBody": "$webclient = New-Object System.Net.WebClient\n$webclient.Credentials = New-Object System.Net.NetworkCredential($UserName, $Password)\n$webClient.Headers.add('App-Key',$AppKey)\n$url = \"https://api.pingdom.com/api/2.0/checks/$CheckId\"\n$actionBody = \"paused=\" + ($Action -eq \"Pause\").tostring().tolower()\n\n$checkResult = $webclient.DownloadString($url) | ConvertFrom-Json\nWrite-Host \"Attempting to\" $Action.tolower() \"check\" $CheckId \"-\" $checkResult.check.name\n\n$result = $webclient.UploadString($url, \"PUT\", $actionBody) | ConvertFrom-Json\n\nWrite-Host $result.message" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "UserName", 15 | "Label": "User Name", 16 | "HelpText": "", 17 | "DisplaySettings": { 18 | "Octopus.ControlType": "SingleLineText" 19 | } 20 | }, 21 | { 22 | "Name": "Password", 23 | "Label": "Pingdom Password", 24 | "HelpText": null, 25 | "DisplaySettings": { 26 | "Octopus.ControlType": "Sensitive" 27 | } 28 | }, 29 | { 30 | "Name": "AppKey", 31 | "Label": "Application Key", 32 | "HelpText": "You generate your application key inside the Pingdom control panel.", 33 | "DisplaySettings": { 34 | "Octopus.ControlType": "Sensitive" 35 | } 36 | }, 37 | { 38 | "Name": "CheckId", 39 | "Label": "Check Id", 40 | "HelpText": "Check Id to be paused or resumed", 41 | "DefaultValue": null, 42 | "DisplaySettings": { 43 | "Octopus.ControlType": "SingleLineText" 44 | } 45 | }, 46 | { 47 | "Name": "Action", 48 | "Label": null, 49 | "HelpText": null, 50 | "DefaultValue": null, 51 | "DisplaySettings": { 52 | "Octopus.ControlType": "Select", 53 | "Octopus.SelectOptions": "Pause\nResume" 54 | } 55 | } 56 | ], 57 | "LastModifiedOn": "2015-07-31T12:23:52.329+00:00", 58 | "LastModifiedBy": "timorzadir", 59 | "$Meta": { 60 | "ExportedAt": "2015-07-31T12:23:52.329+00:00", 61 | "OctopusVersion": "3.0.7.2204", 62 | "Type": "ActionTemplate" 63 | }, 64 | "Category": "pingdom" 65 | } -------------------------------------------------------------------------------- /step-templates/redis-uninstall.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "959fbb4a-8e2e-4e21-bc55-863837b3cbed", 3 | "Name": "Redis - Uninstall service", 4 | "Description": "This step can be used before unpacking a package with Redis service to stop and remove the previous installation, if there is one.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 1, 7 | "CommunityActionTemplateId": null, 8 | "Properties": { 9 | "Octopus.Action.Script.Syntax": "PowerShell", 10 | "Octopus.Action.Script.ScriptSource": "Inline", 11 | "Octopus.Action.RunOnServer": "false", 12 | "Octopus.Action.Script.ScriptBody": "$name = $OctopusParameters['rus_ServiceName']\r\n\r\n$service = Get-Service -Name $name -ErrorAction SilentlyContinue\r\n\r\nif (-not $service) {\r\n Write-Host \">>> $name service not found. Skipping this time.\"\r\n return\r\n}\r\n\r\nWrite-Host \">>> Uninstalling with: sc.exe\"\r\nif ($service.Status -eq 'Running') {\r\n &\"sc.exe\" stop $name | Write-Host\r\n}\r\n&\"sc.exe\" delete $name | Write-Host\r\n\r\n$limit = 15\r\nwhile (Get-Service -Name $name -ErrorAction SilentlyContinue) {\r\n Start-Sleep -s 1\r\n \r\n $limit = $limit - 1\r\n if ($limit -eq 0) {\r\n Throw \"Unable to stop Redis service within 15s\"\r\n }\r\n}", 13 | "Octopus.Action.Script.ScriptFileName": null, 14 | "Octopus.Action.Package.FeedId": null, 15 | "Octopus.Action.Package.PackageId": null 16 | }, 17 | "Parameters": [ 18 | { 19 | "Id": "12713171-c487-4118-8a4c-7bd8c2e5e269", 20 | "Name": "rus_ServiceName", 21 | "Label": "Service name", 22 | "HelpText": null, 23 | "DefaultValue": "Redis", 24 | "DisplaySettings": { 25 | "Octopus.ControlType": "SingleLineText" 26 | }, 27 | "Links": {} 28 | } 29 | ], 30 | "LastModifiedBy": "J-Sek", 31 | "$Meta": { 32 | "ExportedAt": "2017-08-31T23:11:05.000Z", 33 | "OctopusVersion": "3.16.6", 34 | "Type": "ActionTemplate" 35 | }, 36 | "Category": "redis" 37 | } -------------------------------------------------------------------------------- /step-templates/run-mstest.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "75746f93-6c2b-4a52-b3b6-97e8dee09a81", 3 | "Name": "Run MSTests", 4 | "Description": "This Step template should be used for running MSTests by passing list of assemblies.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 14, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "Write-Output \"Running MsTests tests...\"\r\n\r\n$exePath = '\"' + $MsTestExePath + '\"'\r\nif (-not $exePath) {\r\n $exePath = \"mstest.exe\"\r\n}\r\n\r\n$runMsTest = \"& $exePath \"\r\n\r\n$MsTestAssemblies.Split(\";\") | ForEach {\r\n $asm = \" /testcontainer:\"+$_.Trim()\r\n Write-Output \"Including test container assembly $asm\"\r\n $runMsTest += \"$asm\"\r\n}\r\nWrite-Host $runMsTest\r\ncd $MsTestWorkingDirectoryPath\r\nWrite-Host $MsTestWorkingDirectoryPath \r\n\r\niex $runMsTest\r\n$mstestExit = $lastExitCode\r\n\r\n\r\nexit $mstestExit", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "MsTestExePath", 15 | "Label": "Ms Test Path", 16 | "HelpText": null, 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | }, 22 | { 23 | "Name": "MsTestWorkingDirectoryPath", 24 | "Label": "Working directory", 25 | "HelpText": "The folder that contains the test assemblies. Generally this will be bound to an output variable from a previous step. Example: _#{Octopus.Action[Deploy integration tests].Output.Package.InstallationDirectoryPath}_", 26 | "DefaultValue": null, 27 | "DisplaySettings": { 28 | "Octopus.ControlType": "SingleLineText" 29 | } 30 | }, 31 | { 32 | "Name": "MsTestAssemblies", 33 | "Label": "Test assemblies", 34 | "HelpText": "A semicolon-separated list of assembly names containing tests. Example: _MyCompany.IntegrationTests.dll; MyCompany.SmokeTests.dll_", 35 | "DefaultValue": null, 36 | "DisplaySettings": { 37 | "Octopus.ControlType": "SingleLineText" 38 | } 39 | } 40 | ], 41 | "LastModifiedOn": "2021-07-26T16:50:00.000+00:00", 42 | "LastModifiedBy": "bobjwalker", 43 | "$Meta": { 44 | "ExportedAt": "2015-04-30T12:44:24.644+00:00", 45 | "OctopusVersion": "2.6.4.951", 46 | "Type": "ActionTemplate" 47 | }, 48 | "Category": "tests" 49 | } -------------------------------------------------------------------------------- /step-templates/send-sms-using-messagebird.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "d5dba42f-ab60-4342-bdaf-b8ecd2f763c3", 3 | "Name": "MessageBird Send SMS", 4 | "Description": "Send an SMS using MessageBird API.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 2, 7 | "CommunityActionTemplateId": null, 8 | "Packages": [], 9 | "Properties": { 10 | "Octopus.Action.Script.ScriptSource": "Inline", 11 | "Octopus.Action.Script.Syntax": "PowerShell", 12 | "Octopus.Action.Script.ScriptBody": "#-----------------------------\n#Latest Update 2021-01-21\n#Bilal Aljbour - FRISS\n#-----------------------------\n$url = \"https://rest.messagebird.com/messages?access_key=$MessageBird_Key\"\n$params = @{\nhref = 'https://rest.messagebird.com/messages'\nrecipients = \"$MessageBird_Recipients\"\noriginator = \"$MessageBird_originator\"\nbody = \"$MessageBird_body\"\n}\nInvoke-WebRequest $url -Method Post -Body $params -UseBasicParsing | Out-Null\nWrite-Host 'Message has been sent!'" 13 | }, 14 | "Parameters": [{ 15 | "Id": "8fcbce8e-5d10-442c-a50d-470b2458a481", 16 | "Name": "MessageBird_Key", 17 | "Label": "MessageBird Key", 18 | "HelpText": "API keys give you access to all our REST API methods.\nThis can be created/copied [here](https://dashboard.messagebird.com/en/developers/access)", 19 | "DefaultValue": "", 20 | "DisplaySettings": { 21 | "Octopus.ControlType": "SingleLineText" 22 | } 23 | }, 24 | { 25 | "Id": "7c06f0e6-84e8-4ed0-b804-aed47d580667", 26 | "Name": "MessageBird_originator", 27 | "Label": "From", 28 | "HelpText": "The sender of the message. This can be a telephone number (including country code) or an alphanumeric string. In case of an alphanumeric string, the maximum length is 11 characters. ", 29 | "DefaultValue": "", 30 | "DisplaySettings": { 31 | "Octopus.ControlType": "SingleLineText" 32 | } 33 | }, 34 | { 35 | "Id": "e4b45a2d-f7ca-4329-88fc-d6f23b1249c4", 36 | "Name": "MessageBird_Recipients", 37 | "Label": "To", 38 | "HelpText": "The number to send the message to.", 39 | "DefaultValue": "", 40 | "DisplaySettings": { 41 | "Octopus.ControlType": "SingleLineText" 42 | } 43 | }, 44 | { 45 | "Id": "e882db5e-d780-4183-956e-e51806163b60", 46 | "Name": "MessageBird_body", 47 | "Label": "Message", 48 | "HelpText": "The content of the SMS message.\n", 49 | "DefaultValue": "", 50 | "DisplaySettings": { 51 | "Octopus.ControlType": "MultiLineText" 52 | } 53 | } 54 | ], 55 | "$Meta": { 56 | "ExportedAt": "2021-01-21T13:54:53.610Z", 57 | "OctopusVersion": "2020.4.6", 58 | "Type": "ActionTemplate" 59 | }, 60 | "LastModifiedBy": "bilalmajali", 61 | "Category": "other" 62 | } 63 | -------------------------------------------------------------------------------- /step-templates/sql-create-job-category.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "7a619d03-0cbc-4b43-9540-90a89bab2ed8", 3 | "Name": "SQL - Create Job Category", 4 | "Description": "Creates a SQL Server Job Category", 5 | "ActionType": "Octopus.Script", 6 | "Version": 2, 7 | "CommunityActionTemplateId": null, 8 | "Properties": { 9 | "Octopus.Action.Script.Syntax": "PowerShell", 10 | "Octopus.Action.Script.ScriptSource": "Inline", 11 | "Octopus.Action.RunOnServer": "false", 12 | "Octopus.Action.Script.ScriptBody": "Write-Host \"Running command against database server: $DbServer\"\nWrite-Host \"Creating Job category: $JobCatName\"\nInvoke-Sqlcmd -ServerInstance \"$DbServer\" -Verbose -Query \"EXEC dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'$JobCatName';\" -Database \"msdb\"\nWrite-Host \"Job category created\"", 13 | "Octopus.Action.Script.ScriptFileName": null, 14 | "Octopus.Action.Package.FeedId": null, 15 | "Octopus.Action.Package.PackageId": null 16 | }, 17 | "Parameters": [ 18 | { 19 | "Id": "77ef2c98-a8bb-489b-b8bf-397978780d4a", 20 | "Name": "DbServer", 21 | "Type": "String", 22 | "Label": "Database Server", 23 | "HelpText": "Database server instance name", 24 | "DefaultValue": ".", 25 | "DisplaySettings": { 26 | "Octopus.ControlType": "SingleLineText" 27 | }, 28 | "Links": {} 29 | }, 30 | { 31 | "Id": "a6030731-96e3-4fbb-9078-1e307aa9c380", 32 | "Name": "JobCatName", 33 | "Type": "String", 34 | "Label": "Job Category Name", 35 | "HelpText": "The SQL Server's job category name", 36 | "DefaultValue": "", 37 | "DisplaySettings": { 38 | "Octopus.ControlType": "SingleLineText" 39 | }, 40 | "Links": {} 41 | } 42 | ], 43 | "LastModifiedBy": "ahmedig", 44 | "$Meta": { 45 | "ExportedAt": "2017-03-09T03:35:46.804Z", 46 | "OctopusVersion": "3.11.2", 47 | "Type": "ActionTemplate" 48 | }, 49 | "Category" : "sql" 50 | } -------------------------------------------------------------------------------- /step-templates/sql-smo-drop-database.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "255a7317-460f-4bc4-8017-a99b4563aad3", 3 | "Name": "SQL - Drop Database Using SMO", 4 | "Description": "This uses Sql Management Objects to drop a database if it exists. If the username and password are both empty then it will attempt a trusted connection.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 9, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "[System.Reflection.Assembly]::LoadWithPartialName(\"Microsoft.SqlServer.SMO\") | out-null\n\ntry\n{ \n $server = new-object ('Microsoft.SqlServer.Management.Smo.Server') $SqlServer\n \n if (!$SqlUsername -and !$SqlPassword)\n {\n $server.ConnectionContext.LoginSecure = $true\n } else {\n $server.ConnectionContext.LoginSecure = $false\n $server.ConnectionContext.set_Login($SqlUsername)\n $server.ConnectionContext.set_Password($SqlPassword) \n }\n\n\tif ($server.databases[$SqlDatabase] -ne $null)\n\t{\n \t$server.killallprocesses($SqlDatabase)\n \t$server.databases[$SqlDatabase].drop()\n\t}\n}\ncatch\n{ \n $error[0] | format-list -force\n Exit 1\n}\n ", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "SqlServer", 15 | "Label": "Sql Server", 16 | "HelpText": "SQL Server Instance with Port", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | }, 22 | { 23 | "Name": "SqlUsername", 24 | "Label": "Sql Username (optional)", 25 | "HelpText": "The SQL Account which has access to Create SQL Database", 26 | "DefaultValue": null, 27 | "DisplaySettings": { 28 | "Octopus.ControlType": "SingleLineText" 29 | } 30 | }, 31 | { 32 | "Name": "SqlPassword", 33 | "Label": "Sql Password (optional)", 34 | "HelpText": "The password for the SQL Account", 35 | "DefaultValue": null, 36 | "DisplaySettings": { 37 | "Octopus.ControlType": "SingleLineText" 38 | } 39 | }, 40 | { 41 | "Name": "SqlDatabase", 42 | "Label": "Sql Database", 43 | "HelpText": "Name of Database to be Dropped", 44 | "DefaultValue": null, 45 | "DisplaySettings": { 46 | "Octopus.ControlType": "SingleLineText" 47 | } 48 | } 49 | ], 50 | "LastModifiedOn": "2021-07-26T16:50:00.000+00:00", 51 | "LastModifiedBy": "bobjwalker", 52 | "$Meta": { 53 | "ExportedAt": "2015-05-20T13:00:12.964+00:00", 54 | "OctopusVersion": "2.6.5.1010", 55 | "Type": "ActionTemplate" 56 | }, 57 | "Category": "sql" 58 | } -------------------------------------------------------------------------------- /step-templates/sql-test-connection-string.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "7e43cab7-e56c-4c37-a471-f4d552815169", 3 | "Name": "SQL - Test Connection String", 4 | "Description": "Tests a SQL Server connection string by attempting to connect to the database.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 5, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "#Create SQL Connection\r\n$con = new-object \"System.data.sqlclient.SQLconnection\"\r\nWrite-Host \"Opening SQL connection to $ConnectionString\"\r\n\r\n$con.ConnectionString =(\"$ConnectionString\")\r\ntry {\r\n $con.Open()\r\n Write-Host \"Successfully opened connection to the database\"\r\n}\r\ncatch {\r\n $error[0]\r\n exit 1\r\n}\r\nfinally{\r\n Write-Host \"Closing SQL connection\"\r\n $con.Close()\r\n $con.Dispose()\r\n Write-Host \"Connection closed.\"\r\n}", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "ConnectionString", 15 | "Label": "Connection string", 16 | "HelpText": "The connection string. For example:\n\n> Data Source=MyServer;Initial Catalog=MyDatabase;User Id=admin; Password=supersecretpassword;", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | } 22 | ], 23 | "LastModifiedOn": "2021-07-26T16:50:00.000+00:00", 24 | "LastModifiedBy": "bobjwalker", 25 | "$Meta": { 26 | "ExportedAt": "2014-06-26T10:19:31.547+00:00", 27 | "OctopusVersion": "2.4.8.107", 28 | "Type": "ActionTemplate" 29 | }, 30 | "Category": "sql" 31 | } -------------------------------------------------------------------------------- /step-templates/ssl-certificate-install.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "2a939210-3f1c-4a66-a535-40ba7cd709fb", 3 | "Name": "SSL Certificate - Install", 4 | "Description": "Installs an SSL certificate on the target machine", 5 | "ActionType": "Octopus.Script", 6 | "Version": 4, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "$base64Certificate = $OctopusParameters['Base64Certificate']\n$password = $OctopusParameters['Password']\n$location = $OctopusParameters['StoreLocation']\n$name = $OctopusParameters['StoreName']\n\nWrite-Host \"Adding/updating certificate in store\"\n\n$certBytes = [System.Convert]::FromBase64String($base64Certificate)\n$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($certBytes, $password, \"MachineKeySet,PersistKeySet\")\n$store = New-Object System.Security.Cryptography.X509Certificates.X509Store($name, $location)\n$store.Open(\"ReadWrite\")\n$store.Add($cert)\n$store.Close()", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "Base64Certificate", 15 | "Label": "Base64 certificate", 16 | "HelpText": "The certificate, encoded as a base64 string", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "MultiLineText" 20 | } 21 | }, 22 | { 23 | "Name": "Password", 24 | "Label": "Password", 25 | "HelpText": "The certificate password", 26 | "DefaultValue": null, 27 | "DisplaySettings": { 28 | "Octopus.ControlType": "Sensitive" 29 | } 30 | }, 31 | { 32 | "Name": "StoreName", 33 | "Label": "StoreName", 34 | "HelpText": "The name of the certificate store", 35 | "DefaultValue": "My", 36 | "DisplaySettings": { 37 | "Octopus.ControlType": "Select", 38 | "Octopus.SelectOptions": "AddressBook\nAuthRoot\nCA\nDisallowed\nMy\nRoot\nTrustedPeople\nTrustedPublisher" 39 | } 40 | }, 41 | { 42 | "Name": "StoreLocation", 43 | "Label": "StoreLocation", 44 | "HelpText": "The location of the certificate store", 45 | "DefaultValue": "LocalMachine", 46 | "DisplaySettings": { 47 | "Octopus.ControlType": "Select", 48 | "Octopus.SelectOptions": "CurrentUser\nLocalMachine" 49 | } 50 | } 51 | ], 52 | "LastModifiedOn": "2016-10-14T03:01:44.952+00:00", 53 | "LastModifiedBy": "kp-tseng", 54 | "$Meta": { 55 | "ExportedAt": "2014-10-01T07:43:57.503+00:00", 56 | "OctopusVersion": "2.5.8.447", 57 | "Type": "ActionTemplate" 58 | }, 59 | "Category": "ssl" 60 | } -------------------------------------------------------------------------------- /step-templates/topshelf-uninstall.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "b5a4ed5a-7fb3-4d0c-b4a5-02616d0ed919", 3 | "Name": "Uninstall TopShelf service", 4 | "Description": "This step can be used before unpacking a package with your TopShelf service to stop and remove the previous installation, if there is one.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 4, 7 | "CommunityActionTemplateId": null, 8 | "Properties": { 9 | "Octopus.Action.Script.Syntax": "PowerShell", 10 | "Octopus.Action.Script.ScriptSource": "Inline", 11 | "Octopus.Action.RunOnServer": "false", 12 | "Octopus.Action.Script.ScriptBody": "$step = $OctopusParameters['Unpackage step']\n$previous = $OctopusParameters[\"Octopus.Action[$step].Package.CustomInstallationDirectory\"]\n$customExeFilename = $OctopusParameters['Exe filename'];\n\nif(!$previous -or (-not (Test-Path $previous)) )\n{\n Write-Host \"No installation found in: $previous\"\n\t\n $previous = $OctopusParameters[\"Octopus.Action[$step].Output.Package.InstallationDirectoryPath\"]\n if(!$previous -or (-not (Test-Path $previous)) )\n {\n Write-Host \"No installation found in: $previous\"\n Break\n }\n}\n\n\n$defaultExeFilename = $OctopusParameters[\"Octopus.Action[$step].Package.NuGetPackageId\"] + \".exe\"\n$exeFilename = If ($customExeFilename) {$customExeFilename} Else {$defaultExeFilename}\n$path = Join-Path $previous $exeFilename\n\nWrite-Host \"Previous installation: $path\"\n\nStart-Process $path -ArgumentList \"stop\" -NoNewWindow -Wait | Write-Host\nStart-Process $path -ArgumentList \"uninstall\" -NoNewWindow -Wait | Write-Host\n" 13 | }, 14 | "Parameters": [ 15 | { 16 | "Id": "14d4b5e5-98ff-48ee-aeba-c062e294a18c", 17 | "Name": "Unpackage step", 18 | "Label": "", 19 | "HelpText": "The step where you unpack the topshelf service", 20 | "DefaultValue": "", 21 | "DisplaySettings": { 22 | "Octopus.ControlType": "StepName" 23 | }, 24 | "Links": {} 25 | }, 26 | { 27 | "Id": "75418f4b-48fb-4475-93a1-a6d793495693", 28 | "Name": "Exe filename", 29 | "Label": "", 30 | "HelpText": "Name of exe file for service, if empty, package Id+\".exe.\" will be used as default", 31 | "DefaultValue": "", 32 | "DisplaySettings": { 33 | "Octopus.ControlType": "SingleLineText" 34 | }, 35 | "Links": {} 36 | } 37 | ], 38 | "LastModifiedBy": "sphinxy", 39 | "$Meta": { 40 | "ExportedAt": "2018-02-22T16:57:20.068Z", 41 | "OctopusVersion": "4.0.10", 42 | "Type": "ActionTemplate" 43 | }, 44 | "Category": "topshelf" 45 | } 46 | -------------------------------------------------------------------------------- /step-templates/unzip.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "d2f144e7-e998-4229-ab7c-1013865070d5", 3 | "Name": "Unzip", 4 | "Description": "Unzip file", 5 | "ActionType": "Octopus.Script", 6 | "Version": 7, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "$shell_app=new-object -com shell.application\r\n\r\n$FOF_SILENT_FLAG = 4\r\n$FOF_NOCONFIRMATION_FLAG = 16\r\n\r\nif (Test-Path $filename)\r\n{\r\n Write-Host Unzipping $filename\r\n $zip_file = $shell_app.namespace(\"$filename\")\r\n $destination = $shell_app.namespace(\"$dest\")\r\n $destination.Copyhere($zip_file.items(), $FOF_SILENT_FLAG + $FOF_NOCONFIRMATION_FLAG)\r\n}\r\nelse\r\n{\r\n Write-Host File $filename does not exist\r\n}\r\n", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "filename", 15 | "Label": "FIle to unzip", 16 | "HelpText": "Zip filename path", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | }, 22 | { 23 | "Name": "dest", 24 | "Label": "Destination", 25 | "HelpText": "Destination folder.", 26 | "DefaultValue": null, 27 | "DisplaySettings": { 28 | "Octopus.ControlType": "SingleLineText" 29 | } 30 | } 31 | ], 32 | "LastModifiedOn": "2015-08-03T13:45:04.765+00:00", 33 | "LastModifiedBy": "pitrew", 34 | "$Meta": { 35 | "ExportedAt": "2015-08-03T13:45:19.309+00:00", 36 | "OctopusVersion": "2.6.5.1010", 37 | "Type": "ActionTemplate" 38 | }, 39 | "Category": "unzip" 40 | } -------------------------------------------------------------------------------- /step-templates/update-hosts-file.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "79d6ce26-71bc-44c8-9228-d90cc7de9991", 3 | "Name": "Update Hosts File", 4 | "Description": "This template will update the value of your HOSTS file to what you define in this step.\nIt will skip all lines that start with \"#\" (comments), and all other lines will be deleted.\nThen the values defined in this step will be added. You can define as many entry lines as you want.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 9, 7 | "CommunityActionTemplateId": null, 8 | "Packages": [], 9 | "Properties": { 10 | "Octopus.Action.Script.ScriptSource": "Inline", 11 | "Octopus.Action.Script.Syntax": "PowerShell", 12 | "Octopus.Action.Script.ScriptBody": "$hostsPath = \"$env:windir\\system32\\drivers\\etc\\hosts\"\nWrite-Host \"Opening HOSTS file:$hostsPath\"\n\n$hostEntries = $OctopusParameters[\"uhf_Hosts\"]\nWrite-Verbose \"hostEntries:$hostEntries\"\n\n$lines = (Get-Content $hostsPath)\n\nfor ($i = 0; $i -lt $lines.Length; $i++) {\n $line = $lines[$i]\n if ($line -match \"^#\" -or $line -match \"^[\\s\\t]*$\") {\n continue\n }\n\n $line = \"\"\n\n $lines[$i] = $line\n}\n\nforeach ($hostEntry in $hostEntries.Split(\"`n\")) {\n Write-Verbose $hostEntry\n $parts = $hostEntry.Split(\",\")\n $ip = $parts[0]\n Write-Verbose $ip\n $hostname = $parts[1]\n Write-Verbose $hostname\n $line = \"$ip`t`t`t$hostname\"\n Write-Host \"Adding entry:$line\"\n $lines += $line\n}\n\nOut-File -FilePath $hostsPath -Encoding ascii -InputObject $lines.Where({ $_ -ne \"\"}) -Force" 13 | }, 14 | "Parameters": [ 15 | { 16 | "Id": "a815bb21-5ca4-4645-9076-e0e9c9042006", 17 | "Name": "uhf_Hosts", 18 | "Label": "Hosts Entries", 19 | "HelpText": "A comma delimited list of IP's and Hostnames", 20 | "DefaultValue": "127.0.0.1,hostname.xyz\n127.0.0.1,hostname2.xyz", 21 | "DisplaySettings": { 22 | "Octopus.ControlType": "MultiLineText" 23 | } 24 | } 25 | ], 26 | "LastModifiedBy": "BlueWombat", 27 | "$Meta": { 28 | "ExportedAt": "2019-12-02T05:53:03.714Z", 29 | "OctopusVersion": "2019.10.8", 30 | "Type": "ActionTemplate" 31 | }, 32 | "Category": "hosts-file" 33 | } -------------------------------------------------------------------------------- /step-templates/wait.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "c69b03c9-bfa1-41ab-a712-ba74dc0512b1", 3 | "Name": "Wait", 4 | "Description": "Pauses the process for a set duration", 5 | "ActionType": "Octopus.Script", 6 | "Version": 2, 7 | "CommunityActionTemplateId": null, 8 | "Packages": [], 9 | "Properties": { 10 | "Octopus.Action.Script.ScriptBody": "[int]$Wait = $Seconds\nWrite-Output \"Waiting for $seconds seconds\"\nfor ($CountDown = $Wait; $CountDown -ge 0; $CountDown--){\nWrite-Verbose \"$CountDown seconds remaining\"\nStart-Sleep 1\n}", 11 | "Octopus.Action.Script.Syntax": "PowerShell", 12 | "Octopus.Action.Script.ScriptSource": "Inline", 13 | "Octopus.Action.RunOnServer": "false" 14 | }, 15 | "Parameters": [ 16 | { 17 | "Id": "8bcf738c-d7f8-4f4a-b35f-15aedecd24a8", 18 | "Name": "Seconds", 19 | "Label": "Seconds", 20 | "HelpText": "Number of seconds to wait", 21 | "DefaultValue": "120", 22 | "DisplaySettings": { 23 | "Octopus.ControlType": "SingleLineText" 24 | } 25 | } 26 | ], 27 | "LastModifiedOn": "2020-01-12T21:05:05.736Z", 28 | "LastModifiedBy": "biohazardhpk", 29 | "$Meta": { 30 | "ExportedAt": "2019-12-06T20:15:05.736Z", 31 | "OctopusVersion": "2018.9.16", 32 | "Type": "ActionTemplate" 33 | }, 34 | "Category": "wait" 35 | } 36 | -------------------------------------------------------------------------------- /step-templates/windows-add-back-connection-host-name.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "d66d091d-39d8-43ba-a7d4-db868cd9f7d5", 3 | "Name": "Windows - Add Back Connection Host Name", 4 | "Description": "Disables loopback checking for a given host header name, allowing an IIS site running with integrated authentication to be accessed from the same machine, e.g. an MVC application referencing a WebAPI application. See below for more information:\n\n", 5 | "ActionType": "Octopus.Script", 6 | "Version": 2, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "$hostName = $OctopusParameters['HostName']\r\n\r\n$key = 'HKLM:\\System\\CurrentControlSet\\Control\\Lsa\\MSV1_0\\'\r\n\r\n$hostNames = get-itemproperty $key -Name BackConnectionHostNames -ErrorAction SilentlyContinue\r\n\r\nIf ($hostNames -eq $null) { new-itemproperty $key -Name BackConnectionHostNames -Value $hostName -PropertyType MultiString }\r\n\r\nElseIf ($hostNames.BackConnectionHostNames -notcontains $hostName) { set-itemproperty $key -Name BackConnectionHostNames -Value ($hostNames.BackConnectionHostNames + $hostName) }\r\n", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "HostName", 15 | "Label": "Host header name", 16 | "HelpText": "The host header of the target application referenced by the client application. For example, an MVC website which requires access to a WebAPI application on the same machine would add a back connection host name for the API's host header, e.g.:\n\napi.mycompany.com", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | } 22 | ], 23 | "LastModifiedOn": "2021-07-26T16:50:00.000+00:00", 24 | "LastModifiedBy": "bobjwalker", 25 | "$Meta": { 26 | "ExportedAt": "2015-06-30T11:18:08.029+00:00", 27 | "OctopusVersion": "2.6.0.778", 28 | "Type": "ActionTemplate" 29 | }, 30 | "Category": "windows" 31 | } -------------------------------------------------------------------------------- /step-templates/windows-create-eventsource.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "6047c2b5-95f7-46db-85b4-d970c1586f94", 3 | "Name": "Windows - Create Event Source", 4 | "Description": "Establishes the specified source name as a valid event source for writing entries to a log on the local computer. \n\nThis method can also create a new custom log on the local computer.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 5, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "$sourceName = $OctopusParameters[\"EventSourceName\"]\r\n$logName = $OctopusParameters[\"EventLogName\"]\r\n\r\n$sourceExists = [System.Diagnostics.EventLog]::SourceExists($sourceName)\r\nif($sourceExists) {\r\n\tWrite-Output \"Event source $sourceName already exist.\"\r\n\treturn\r\n}\r\n\r\n[System.Diagnostics.EventLog]::CreateEventSource($sourceName, $logName)", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "EventSourceName", 15 | "Label": "Source name", 16 | "HelpText": "The source name by which the application is registered on the local computer.", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | }, 22 | { 23 | "Name": "EventLogName", 24 | "Label": "Log name", 25 | "HelpText": "The name of the log the source's entries are written to. Possible values include Application, System, or a custom event log.", 26 | "DefaultValue": "Application", 27 | "DisplaySettings": { 28 | "Octopus.ControlType": "SingleLineText" 29 | } 30 | } 31 | ], 32 | "LastModifiedOn": "2017-01-20T08:46:45.849+01:00", 33 | "LastModifiedBy": "HumanPrinter", 34 | "$Meta": { 35 | "ExportedAt": "2015-06-20T10:04:09.578+00:00", 36 | "OctopusVersion": "2.6.5.1010", 37 | "Type": "ActionTemplate" 38 | }, 39 | "Category": "windows" 40 | } -------------------------------------------------------------------------------- /step-templates/windows-ensure-hosts-file-entry-exists.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "36e828dc-8679-451d-9f3d-6edf3e90babf", 3 | "Name": "Windows - Ensure Hosts File Entry Exists", 4 | "Description": "Ensures that the given IP/host name entry exists in the hosts file.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 6, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "$ip = $OctopusParameters['IP']\r\n$hostName = $OctopusParameters['HostName']\r\n\r\n$hostsPath = \"$env:windir\\System32\\drivers\\etc\\hosts\"\r\n\r\n$hosts = Get-Content $hostsPath\r\n\r\n$match = $hosts -match (\"^\\s*$ip\\s+$hostName\" -replace '\\.', '\\.')\r\n\r\nIf ($match) { Exit }\r\n\r\n$hostsEntry = \"$ip`t$hostName\"\r\n\r\nIf ([IO.File]::ReadAllText($hostsPath) -notmatch \"\\r\\n\\z\") { $hostsEntry = [environment]::newline + $hostsEntry }\r\n\r\nAdd-Content $hostsPath $hostsEntry\r\n", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "IP", 15 | "Label": "IP Address", 16 | "HelpText": "The IP address which the host name should resolve to, e.g. 127.0.0.1", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | }, 22 | { 23 | "Name": "HostName", 24 | "Label": "Host Name", 25 | "HelpText": "The host name which should resolve to the given IP, e.g. www.mydomain.com", 26 | "DefaultValue": null, 27 | "DisplaySettings": { 28 | "Octopus.ControlType": "SingleLineText" 29 | } 30 | } 31 | ], 32 | "LastModifiedOn": "2021-07-26T16:50:00.000+00:00", 33 | "LastModifiedBy": "bobjwalker", 34 | "$Meta": { 35 | "ExportedAt": "2015-07-15T15:02:15.749+00:00", 36 | "OctopusVersion": "2.6.0.778", 37 | "Type": "ActionTemplate" 38 | }, 39 | "Category": "windows" 40 | } -------------------------------------------------------------------------------- /step-templates/windows-get-processor-load.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "072eda4e-eb5f-4603-b3af-e742f6431cd0", 3 | "Name": "Windows - Get Processor Load", 4 | "Description": "Get processor load from computer.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 1, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "$prcInfo = gwmi win32_processor -computer $ComputerName -ErrorAction STOP\nTry{\n $Name = \"Proc type: $($prcInfo.Name)\"\n $Load = \"Proc load: $($prcInfo.LoadPercentage) %\"\n $Freq = \"Proc frequency: $($prcInfo.CurrentClockSpeed) MHz\"\n \"$Name `n$Load `n$Freq\"\n}\nCatch\n{\n Write-Host \"Error getting processor load information.\"\n}", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "ComputerName", 15 | "Label": "Computer name", 16 | "HelpText": "Name of computer to get processor load from.", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | } 22 | ], 23 | "LastModifiedOn": "2021-07-26T16:50:00.000+00:00", 24 | "LastModifiedBy": "bobjwalker", 25 | "$Meta": { 26 | "ExportedAt": "2014-05-30T20:58:55.916+00:00", 27 | "OctopusVersion": "2.4.7.85", 28 | "Type": "ActionTemplate" 29 | }, 30 | "Category": "windows" 31 | } -------------------------------------------------------------------------------- /step-templates/windows-get-uptime.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "8bd69993-6c6f-4729-8455-0aa8fc07dc3c", 3 | "Name": "Windows - Get Uptime", 4 | "Description": "Get computer up time.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 1, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "$pc = $computer\n$info = Get-WmiObject -Class Win32_OperatingSystem -ComputerName $computer\n$diff = ($info.ConvertToDateTime($info.LocalDateTime) - $info.ConvertToDateTime($info.LastBootUpTime))\n \n$properties=[ordered]@{\n 'ComputerName'=$pc;\n 'UptimeDays'=$diff.Days;\n 'UptimeHours'=$diff.Hours;\n 'UptimeMinutes'=$diff.Minutes\n 'UptimeSeconds'=$diff.Seconds\n }\n $obj = New-Object -TypeName PSObject -Property $properties\n \nWrite-Output $obj", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "Computer", 15 | "Label": "Computer name", 16 | "HelpText": "Computer to get up-time from.", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | } 22 | ], 23 | "LastModifiedOn": "2021-07-26T16:50:00.000+00:00", 24 | "LastModifiedBy": "bobjwalker", 25 | "$Meta": { 26 | "ExportedAt": "2014-05-30T18:33:20.536+00:00", 27 | "OctopusVersion": "2.4.7.85", 28 | "Type": "ActionTemplate" 29 | }, 30 | "Category": "windows" 31 | } -------------------------------------------------------------------------------- /step-templates/windows-restart-computer.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "3db008be-3fd8-4114-8f5d-0b986babf934", 3 | "Name": "Windows - Restart Computer", 4 | "Description": "Restarts the computer.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 0, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "Restart-Computer -ComputerName $ComputerName -force", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "ComputerName", 15 | "Label": "Computer name", 16 | "HelpText": "Computer to restart.", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | } 22 | ], 23 | "LastModifiedOn": "2021-07-26T16:50:00.000+00:00", 24 | "LastModifiedBy": "bobjwalker", 25 | "$Meta": { 26 | "ExportedAt": "2014-05-30T20:40:30.083+00:00", 27 | "OctopusVersion": "2.4.7.85", 28 | "Type": "ActionTemplate" 29 | }, 30 | "Category": "windows" 31 | } -------------------------------------------------------------------------------- /step-templates/windows-scheduled-task-enable.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "c5b985a0-14ed-4364-a1c1-6a1dc65500ed", 3 | "Name": "Windows Scheduled Task - Enable", 4 | "Description": "Enables a Windows Scheduled Task for both 2008 and 2012.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 2, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "$taskName = $OctopusParameters['TaskName']\r\rWrite-Output \"Enabling $taskName...\"\r\r#Check if 2008 Server\rif ((Get-WmiObject Win32_OperatingSystem).Name.Contains(\"2008\"))\r{\r schtasks /Change /Enable /TN $taskName\r}\relse\r{\r Enable-ScheduledTask $taskName;\r}", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "TaskName", 15 | "Label": "Task Name", 16 | "HelpText": "Name of the Windows Scheduled Task.", 17 | "DisplaySettings": { 18 | "Octopus.ControlType": "SingleLineText" 19 | }, 20 | "DefaultValue": null 21 | } 22 | ], 23 | "LastModifiedOn": "2014-05-14T19:45:23.842+00:00", 24 | "LastModifiedBy": "maohde", 25 | "$Meta": { 26 | "ExportedAt": "2014-05-14T19:46:43.760+00:00", 27 | "OctopusVersion": "2.4.5.46", 28 | "Type": "ActionTemplate" 29 | }, 30 | "Category": "windows" 31 | } 32 | -------------------------------------------------------------------------------- /step-templates/windows-service-change-binary-path.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "b6860fcf-9dee-48a0-afac-85e2098df692", 3 | "Name": "Windows Service - Change binary path", 4 | "Description": "Change binary path of existing windows service (changes will be effective after service start/stop)", 5 | "ActionType": "Octopus.Script", 6 | "Version": 2, 7 | "CommunityActionTemplateId": null, 8 | "Properties": { 9 | "Octopus.Action.Script.ScriptSource": "Inline", 10 | "Octopus.Action.Script.Syntax": "PowerShell", 11 | "Octopus.Action.Script.ScriptBody": "$TheService = Get-Service $ServiceName -ErrorAction SilentlyContinue\nif ($TheService)\n{\n Write-Host \"Windows Service \"\"$ServiceName\"\" found, changing path.\"\n sc.exe config $TheService binPath= $BinaryPath\n Write-Host \"Service \"\"$ServiceName\"\" path changed to \"\"$BinaryPath\"\", restart service to use new path.\"\n}\nelse\n{\n Write-Host \"Windows Service \"\"$ServiceName\"\" not found.\"\n}\n", 12 | "Octopus.Action.Package.DownloadOnTentacle": "False" 13 | }, 14 | "Parameters": [ 15 | { 16 | "Id": "b6cfb2c2-7bfd-4d28-ab91-f9f114c2c0dd", 17 | "Name": "ServiceName", 18 | "Label": "Service name to change binary path.", 19 | "HelpText": "Name of the service to change. Example: OctopusService", 20 | "DefaultValue": "", 21 | "DisplaySettings": { 22 | "Octopus.ControlType": "SingleLineText" 23 | }, 24 | "Links": {} 25 | }, 26 | { 27 | "Id": "d2e685d0-e244-450f-82eb-c435462cdb0f", 28 | "Name": "BinaryPath", 29 | "Label": "Binary path", 30 | "HelpText": "Path to the new service binary. Example: c:\\services\\octopus.exe", 31 | "DefaultValue": "", 32 | "DisplaySettings": { 33 | "Octopus.ControlType": "SingleLineText" 34 | }, 35 | "Links": {} 36 | } 37 | ], 38 | "LastModifiedOn": "2018-05-04T08:38:54.450Z", 39 | "LastModifiedBy": "sphinxy", 40 | "$Meta": { 41 | "ExportedAt": "2018-05-04T08:38:54.450Z", 42 | "OctopusVersion": "4.0.10", 43 | "Type": "ActionTemplate" 44 | }, 45 | "Category": "windows" 46 | } -------------------------------------------------------------------------------- /step-templates/windows-service-remove.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "c5e85c9f-0408-4b38-b85f-6a225fd3e9d6", 3 | "Name": "Windows Service - Remove", 4 | "Description": "Removes a Windows service.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 1, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "$TheService = Get-Service $ServiceName -ErrorAction SilentlyContinue\r\nif ($TheService)\r\n{\r\n Write-Host \"Windows Service \"\"$ServiceName\"\" found, removing service.\"\r\n if ($TheService.Status -eq \"Running\")\r\n {\r\n Write-Host \"Stopping $ServiceName ...\"\r\n $TheService.Stop()\r\n }\r\n sc.exe delete $TheService\r\n Write-Host \"Service \"\"$ServiceName\"\" removed.\"\r\n}\r\nelse\r\n{\r\n Write-Host \"Windows Service \"\"$ServiceName\"\" not found.\"\r\n}\r\n", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "ServiceName", 15 | "Label": "Service name to remove.", 16 | "HelpText": "Name of the service to remove. Example: _OctopusDeploy Tentacle_", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | } 22 | ], 23 | "LastModifiedOn": "2021-07-26T16:50:00.000+00:00", 24 | "LastModifiedBy": "bobjwalker", 25 | "$Meta": { 26 | "ExportedAt": "2014-05-19T21:05:57.107+00:00", 27 | "OctopusVersion": "2.4.5.46", 28 | "Type": "ActionTemplate" 29 | }, 30 | "Category": "windows" 31 | } -------------------------------------------------------------------------------- /step-templates/windows-service-restart.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "d1df734a-c0da-4022-9e70-8e1931b083da", 3 | "Name": "Windows Service - Restart", 4 | "Description": "Restarts a Windows Service.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 3, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "$serviceName = $OctopusParameters['ServiceName']\nWrite-Output \"Restarting $serviceName, stopping...\"\n$serviceInstance = Get-Service $serviceName\nrestart-service -InputObject $serviceName -Force\n$serviceInstance.WaitForStatus('Running','00:01:00')\nWrite-Output \"Service $serviceName started.\"\r", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "ServiceName", 15 | "Label": "Service Name", 16 | "HelpText": "Name of the Windows Service (this is not always the display name).", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | } 22 | ], 23 | "LastModifiedOn": "2021-07-26T16:50:00.000+00:00", 24 | "LastModifiedBy": "bobjwalker", 25 | "$Meta": { 26 | "ExportedAt": "2014-05-05T04:30:44.943+00:00", 27 | "OctopusVersion": "2.4.2.1412", 28 | "Type": "ActionTemplate" 29 | }, 30 | "Category": "windows" 31 | } -------------------------------------------------------------------------------- /step-templates/windows-service-set-startup-type.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "361926f3-8c53-4d19-bb3b-337a531e4448", 3 | "Name": "Windows Service - Set Startup Type", 4 | "Description": "Sets the Startup Type of a Windows Service", 5 | "ActionType": "Octopus.Script", 6 | "Version": 1, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "$serviceName = $OctopusParameters['ServiceName']\r\n$startupType = $OctopusParameters['StartupType']\r\n\r\nif (!$serviceName)\r\n{\r\n Write-Error \"No service name was specified. Please specify the name of the service to set the 'Startup Type'.\"\r\n exit -2\r\n}\r\n\r\nWrite-Output \"Setting Startup Type for $serviceName...\"\r\n\r\nsc.exe config $serviceName start= $startupType\r\n\r\nWrite-Output \"Startup Type for $serviceName set to $startupType.\"\r\n", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "ServiceName", 15 | "Label": "Service Name", 16 | "HelpText": "Name of the Windows Service (this is not always the display name).", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | }, 22 | { 23 | "Name": "StartupType", 24 | "Label": "Startup Type", 25 | "HelpText": "Startup type of the Windows Service.", 26 | "DefaultValue": "auto", 27 | "DisplaySettings": { 28 | "Octopus.ControlType": "Select", 29 | "Octopus.SelectOptions": "delayed-auto|Automatic (Delayed Start)\nauto|Automatic\ndemand|Manual\ndisabled|Disabled" 30 | } 31 | } 32 | ], 33 | "LastModifiedOn": "2014-09-16T00:08:51.570+00:00", 34 | "LastModifiedBy": "caioproiete", 35 | "$Meta": { 36 | "ExportedAt": "2014-09-16T00:19:29.865+00:00", 37 | "OctopusVersion": "2.5.8.447", 38 | "Type": "ActionTemplate" 39 | }, 40 | "Category": "windows" 41 | } -------------------------------------------------------------------------------- /step-templates/windows-service-start.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "60733bf3-1617-4d85-a40f-4b6a0b9289ef", 3 | "Name": "Windows Service - Start", 4 | "Description": "Starts a Windows Service.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 6, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "$serviceName = $OctopusParameters['ServiceName']\r\rWrite-Output \"Starting $serviceName...\"\r\r$serviceInstance = Get-Service $serviceName\rif ($serviceInstance.Status -eq \"Running\") {\r Write-Output \"The $serviceName service is already running.\"\r} else {\r start-service $serviceName\r $serviceInstance.WaitForStatus('Running', '00:01:00')\r Write-Output \"Started $serviceName\"\r}\r", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "ServiceName", 15 | "Label": "Service Name", 16 | "HelpText": "Name of the Windows Service (this is not always the display name).", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | } 22 | ], 23 | "LastModifiedOn": "2021-07-26T16:50:00.000+00:00", 24 | "LastModifiedBy": "bobjwalker", 25 | "$Meta": { 26 | "ExportedAt": "2014-05-05T04:11:22.101+00:00", 27 | "OctopusVersion": "2.4.2.1412", 28 | "Type": "ActionTemplate" 29 | }, 30 | "Category": "windows" 31 | } -------------------------------------------------------------------------------- /step-templates/windows-service-stop.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "ab3eb4cf-5fc1-4168-be8d-02246d919ca8", 3 | "Name": "Windows Service - Stop", 4 | "Description": "Stops a Windows Service if it is running.", 5 | "ActionType": "Octopus.Script", 6 | "Version": 2, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "$serviceName = $OctopusParameters['ServiceName']\r\rWrite-Output \"Stopping $serviceName...\"\r\r$serviceInstance = Get-Service $serviceName -ErrorAction SilentlyContinue\rif ($serviceInstance -ne $null) {\r Stop-Service $serviceName -Force\r $serviceInstance.WaitForStatus('Stopped', '00:01:00')\r Write-Output \"Service $serviceName stopped.\"\r} else {\r Write-Output \"The $serviceName service could not be located.\"\r}\r", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "ServiceName", 15 | "Label": "Service Name", 16 | "HelpText": "Name of the Windows Service (this is not always the display name).", 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | } 22 | ], 23 | "LastModifiedOn": "2021-07-26T16:50:00.000+00:00", 24 | "LastModifiedBy": "bobjwalker", 25 | "$Meta": { 26 | "ExportedAt": "2014-05-05T04:13:42.618+00:00", 27 | "OctopusVersion": "2.4.2.1412", 28 | "Type": "ActionTemplate" 29 | }, 30 | "Category": "windows" 31 | } -------------------------------------------------------------------------------- /step-templates/xml-attribute-update.json: -------------------------------------------------------------------------------- 1 | { 2 | "Id": "170a9b93-96f2-470b-81ca-e0ff53fa7c3d", 3 | "Name": "XML update", 4 | "Description": null, 5 | "ActionType": "Octopus.Script", 6 | "Version": 0, 7 | "Properties": { 8 | "Octopus.Action.Script.ScriptBody": "[xml]$xml = Get-Content $path \r\n$ns = new-object Xml.XmlNamespaceManager $xml.NameTable\r\n$ns.AddNamespace($nsKey, $nsValue)\r\n\r\n$xml.SelectNodes($xmlPath, $ns) | % {\r\n\tif ($_.key -eq $key)\r\n\t{\r\n\t\t$_.value = $value\r\n\t}\r\n}\r\n\r\n$xml.Save($path)", 9 | "Octopus.Action.Script.Syntax": "PowerShell" 10 | }, 11 | "SensitiveProperties": {}, 12 | "Parameters": [ 13 | { 14 | "Name": "path", 15 | "Label": "XML file path", 16 | "HelpText": null, 17 | "DefaultValue": null, 18 | "DisplaySettings": { 19 | "Octopus.ControlType": "SingleLineText" 20 | } 21 | }, 22 | { 23 | "Name": "xmlPath", 24 | "Label": "XPath", 25 | "HelpText": "XPath element with namespace //b:setting", 26 | "DefaultValue": null, 27 | "DisplaySettings": { 28 | "Octopus.ControlType": "SingleLineText" 29 | } 30 | }, 31 | { 32 | "Name": "key", 33 | "Label": "Key", 34 | "HelpText": "Key to change", 35 | "DefaultValue": null, 36 | "DisplaySettings": { 37 | "Octopus.ControlType": "SingleLineText" 38 | } 39 | }, 40 | { 41 | "Name": "value", 42 | "Label": "Value", 43 | "HelpText": "New value", 44 | "DefaultValue": null, 45 | "DisplaySettings": { 46 | "Octopus.ControlType": "SingleLineText" 47 | } 48 | }, 49 | { 50 | "Name": "nsKey", 51 | "Label": "NS key", 52 | "HelpText": "Namespace key", 53 | "DefaultValue": "B", 54 | "DisplaySettings": { 55 | "Octopus.ControlType": "SingleLineText" 56 | } 57 | }, 58 | { 59 | "Name": "nsValue", 60 | "Label": "NS Value", 61 | "HelpText": "Namespace value", 62 | "DefaultValue": null, 63 | "DisplaySettings": { 64 | "Octopus.ControlType": "SingleLineText" 65 | } 66 | } 67 | ], 68 | "LastModifiedOn": "2015-08-03T13:33:12.919+00:00", 69 | "LastModifiedBy": "pitrew", 70 | "$Meta": { 71 | "ExportedAt": "2015-08-03T13:50:55.041+00:00", 72 | "OctopusVersion": "2.6.5.1010", 73 | "Type": "ActionTemplate" 74 | }, 75 | "Category": "xml" 76 | } -------------------------------------------------------------------------------- /tools/Converter.ps1: -------------------------------------------------------------------------------- 1 | [CmdletBinding()] 2 | param 3 | ( 4 | [Parameter(Mandatory=$false)] 5 | [string] $SearchPattern, 6 | [Parameter(Mandatory=$false)] 7 | $Operation = 'unpack' 8 | ) 9 | 10 | $ErrorActionPreference = "Stop" 11 | Set-StrictMode -Version "Latest" 12 | 13 | $thisScript = $MyInvocation.MyCommand.Path; 14 | Write-Verbose "`$thisScript $thisScript" 15 | $thisFolder = Split-Path -parent $thisScript 16 | Write-Verbose "`$thisFolder $thisFolder" 17 | Import-Module -Name (Join-Path $thisFolder "StepTemplatePacker") -ErrorAction "Stop"; 18 | 19 | $parentFolder = Split-Path -parent $thisFolder 20 | Write-Verbose "`$parentFolder $parentFolder" 21 | $stepTemplateFolder = Join-Path $parentFolder "step-templates" 22 | Write-Verbose "`$stepTemplateFolder $stepTemplateFolder" 23 | 24 | if( $PSBoundParameters.ContainsKey("SearchPattern") ) 25 | { 26 | $stepTemplates = Get-ChildItem $stepTemplateFolder -Filter "$SearchPattern.json" 27 | if (!($stepTemplates)) { "No templates found matching $SearchPattern, maybe try using a wildcard *$SearchPattern*" } 28 | Write-Debug "$stepTemplates" 29 | } 30 | else 31 | { 32 | $stepTemplates = Get-ChildItem $stepTemplateFolder -Filter "*.json" 33 | Write-Debug "$stepTemplates" 34 | } 35 | 36 | switch ($Operation) 37 | { 38 | "unpack" { 39 | function Run-Command ($stepTemplate) 40 | { 41 | write-host "unpacking '$($stepTemplate)'" 42 | Export-OctopusStepTemplateScripts -StepTemplate $($stepTemplate.FullName) 43 | } 44 | break 45 | } 46 | "pack" { 47 | function Run-Command ($stepTemplate) 48 | { 49 | write-host "packing '$($stepTemplate)'" 50 | Import-OctopusStepTemplateScripts -StepTemplate $($stepTemplate.FullName) 51 | } 52 | break 53 | } 54 | default { 55 | Write-Host "No operation parameter detected, assuming 'unpack'" 56 | Write-Host "Possible -Op arguments are 'unpack' or 'pack'" 57 | function Run-Command ($stepTemplate) 58 | { 59 | write-host "unpacking '$($stepTemplate)'" 60 | Export-OctopusStepTemplateScripts -StepTemplate $($stepTemplate.FullName) 61 | } 62 | } 63 | } 64 | 65 | foreach( $stepTemplate in $stepTemplates ) 66 | { 67 | Run-Command $stepTemplate 68 | } -------------------------------------------------------------------------------- /tools/GitVersion/GitVersion.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/tools/GitVersion/GitVersion.exe -------------------------------------------------------------------------------- /tools/GitVersion/GitVersion.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/tools/GitVersion/GitVersion.pdb -------------------------------------------------------------------------------- /tools/GitVersion/LibGit2Sharp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/tools/GitVersion/LibGit2Sharp.dll -------------------------------------------------------------------------------- /tools/GitVersion/LibGit2Sharp.dll.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /tools/GitVersion/LibGit2Sharp.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/tools/GitVersion/LibGit2Sharp.pdb -------------------------------------------------------------------------------- /tools/GitVersion/lib/linux/x86_64/libgit2-381caf5.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/tools/GitVersion/lib/linux/x86_64/libgit2-381caf5.so -------------------------------------------------------------------------------- /tools/GitVersion/lib/osx/libgit2-381caf5.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/tools/GitVersion/lib/osx/libgit2-381caf5.dylib -------------------------------------------------------------------------------- /tools/GitVersion/lib/win32/x64/git2-381caf5.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/tools/GitVersion/lib/win32/x64/git2-381caf5.dll -------------------------------------------------------------------------------- /tools/GitVersion/lib/win32/x64/git2-381caf5.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/tools/GitVersion/lib/win32/x64/git2-381caf5.pdb -------------------------------------------------------------------------------- /tools/GitVersion/lib/win32/x86/git2-381caf5.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/tools/GitVersion/lib/win32/x86/git2-381caf5.dll -------------------------------------------------------------------------------- /tools/GitVersion/lib/win32/x86/git2-381caf5.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/tools/GitVersion/lib/win32/x86/git2-381caf5.pdb -------------------------------------------------------------------------------- /tools/ReleaseNotesGenerator/Generate_ReleaseNotes.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | setlocal 3 | set EXDIR=%~dp0scriptcs 4 | set PATH=%PATH%;%EXDIR%\tools 5 | set ISTEAMCITY="false" 6 | IF "%1" NEQ "" set ISTEAMCITY=%1 7 | 8 | scriptcs -v >nul 2>&1 && ( echo scriptcs is installed & goto run ) || ( echo scriptcs is not installed ) 9 | 10 | echo Installing scriptcs 11 | set ZIPFILE=%~dp0scriptcs.zip 12 | powershell -Command "[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor [System.Net.SecurityProtocolType]::Tls12;Invoke-WebRequest -Uri http://chocolatey.org/api/v2/package/ScriptCs -OutFile %ZIPFILE%" 13 | powershell -Command "Add-Type -A System.IO.Compression.FileSystem;[IO.Compression.ZipFile]::ExtractToDirectory('%ZIPFILE%', '%EXDIR%')" 14 | scriptcs -v 15 | IF %ERRORLEVEL% NEQ 0 echo Failed to install scriptcs & goto end 16 | 17 | :run 18 | echo Installing ScriptCs.Octokit 19 | scriptcs -i ScriptCs.Octokit 20 | 21 | echo Running release notes generator script 22 | scriptcs .\ReleaseNotesGenerator.csx -- "OctopusDeploy" "Library" "vNext" "Closed" %ISTEAMCITY% 23 | 24 | :end 25 | -------------------------------------------------------------------------------- /tools/ReleaseNotesGenerator/project.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /tools/ReleaseNotesGenerator/scriptcs_nuget.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /tools/StepTemplatePacker/StepTemplatePacker.psd1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/OctopusDeploy/Library/d8405f1229ec4783f9664ee3fea6e1b45dfba479/tools/StepTemplatePacker/StepTemplatePacker.psd1 -------------------------------------------------------------------------------- /tools/StepTemplatePacker/scripts/Export-OctopusStepTemplateCustomScript.ps1: -------------------------------------------------------------------------------- 1 | function Export-OctopusStepTemplateCustomScript 2 | { 3 | 4 | param 5 | ( 6 | 7 | [Parameter(Mandatory=$true)] 8 | [string] $StepTemplate, 9 | 10 | [Parameter(Mandatory=$true)] 11 | [PsCustomObject] $StepJson, 12 | 13 | [Parameter(Mandatory=$true)] 14 | [string] $ScriptName, 15 | 16 | [Parameter(Mandatory=$false)] 17 | [switch] $Force = $false 18 | 19 | ) 20 | 21 | # work out what file extension to use based on the language 22 | $filetype = Get-OctopusStepTemplateFileType -Syntax "PowerShell"; 23 | 24 | # extract the custom script 25 | $customScript = Get-OctopusStepTemplateProperty -StepJson $StepJson ` 26 | -PropertyName "Octopus.Action.CustomScripts.$ScriptName.ps1"; 27 | if( [string]::IsNullOrEmpty($customScript) ) 28 | { 29 | return; 30 | } 31 | 32 | # work out the filename for the script 33 | $stepFolder = [System.IO.Path]::GetDirectoryName($StepTemplate); 34 | $scriptFilename = [System.IO.Path]::GetFileNameWithoutExtension($StepTemplate) + ".$ScriptName" + $fileType; 35 | $scriptPath = [System.IO.Path]::Combine($stepFolder, $scriptFilename); 36 | 37 | # check if the file already exists and whether to overwrite 38 | if( [System.IO.File]::Exists($scriptPath) -and -not $Force ) 39 | { 40 | return; 41 | } 42 | 43 | # write the custom script out to disk 44 | Set-OctopusTextFile -Path $scriptPath ` 45 | -Contents $customScript; 46 | 47 | } 48 | -------------------------------------------------------------------------------- /tools/StepTemplatePacker/scripts/Export-OctopusStepTemplateScriptBody.ps1: -------------------------------------------------------------------------------- 1 | function Export-OctopusStepTemplateScriptBody 2 | { 3 | 4 | param 5 | ( 6 | 7 | [Parameter(Mandatory=$true)] 8 | [string] $StepTemplate, 9 | 10 | [Parameter(Mandatory=$true)] 11 | [PsCustomObject] $StepJson, 12 | 13 | [Parameter(Mandatory=$false)] 14 | [switch] $Force = $false 15 | 16 | ) 17 | 18 | # check this is an inline script, otherwise there's nothing to expand 19 | $scriptSource = Get-OctopusStepTemplateProperty -StepJson $StepJson ` 20 | -PropertyName "Octopus.Action.Script.ScriptSource" ` 21 | -DefaultValue "Inline"; 22 | if( $scriptSource -ne "Inline" ) 23 | { 24 | return; 25 | } 26 | 27 | # work out what file extension to use based on the language 28 | $syntax = Get-OctopusStepTemplateProperty -StepJson $StepJson ` 29 | -PropertyName "Octopus.Action.Script.Syntax" ` 30 | -DefaultValue "PowerShell"; 31 | 32 | $filetype = Get-OctopusStepTemplateFileType -Syntax $syntax; 33 | 34 | # extract the script body text 35 | $scriptBody = Get-OctopusStepTemplateProperty -StepJson $StepJson ` 36 | -PropertyName "Octopus.Action.Script.ScriptBody"; 37 | if( [string]::IsNullOrEmpty($scriptBody) ) 38 | { 39 | return; 40 | } 41 | 42 | # work out the filename for the script 43 | $stepFolder = [System.IO.Path]::GetDirectoryName($StepTemplate); 44 | $scriptFilename = [System.IO.Path]::GetFileNameWithoutExtension($StepTemplate) + ".ScriptBody" + $fileType; 45 | $scriptPath = [System.IO.Path]::Combine($stepFolder, $scriptFilename); 46 | 47 | # check if the file already exists and whether to overwrite 48 | if( [System.IO.File]::Exists($scriptPath) -and -not $Force ) 49 | { 50 | return; 51 | } 52 | 53 | # write the script body out to disk 54 | Set-OctopusTextFile -Path $scriptPath ` 55 | -Contents $scriptBody; 56 | 57 | } 58 | -------------------------------------------------------------------------------- /tools/StepTemplatePacker/scripts/Export-OctopusStepTemplateScripts.ps1: -------------------------------------------------------------------------------- 1 | function Export-OctopusStepTemplateScripts 2 | { 3 | 4 | param 5 | ( 6 | 7 | [Parameter(Mandatory=$true)] 8 | [string] $StepTemplate, 9 | 10 | [Parameter(Mandatory=$false)] 11 | [switch] $Force = $false 12 | 13 | ) 14 | 15 | $ErrorActionPreference = "Stop"; 16 | Set-StrictMode -Version "Latest"; 17 | 18 | # read and parse the step template's json 19 | $stepText = Get-OctopusTextFile -Path $StepTemplate; 20 | $stepJson = ConvertFrom-Json -InputObject $stepText; 21 | 22 | # export the scripts 23 | Export-OctopusStepTemplateScriptBody -StepTemplate $StepTemplate -StepJson $stepJson -Force:$Force; 24 | Export-OctopusStepTemplateCustomScript -StepTemplate $StepTemplate -StepJson $stepJson -ScriptName "PreDeploy" -Force:$Force; 25 | Export-OctopusStepTemplateCustomScript -StepTemplate $StepTemplate -StepJson $stepJson -ScriptName "Deploy" -Force:$Force; 26 | Export-OctopusStepTemplateCustomScript -StepTemplate $StepTemplate -StepJson $stepJson -ScriptName "PostDeploy" -Force:$Force; 27 | 28 | } -------------------------------------------------------------------------------- /tools/StepTemplatePacker/scripts/Get-OctopusStepTemplateFileType.ps1: -------------------------------------------------------------------------------- 1 | function Get-OctopusStepTemplateFileType 2 | { 3 | 4 | param 5 | ( 6 | 7 | [Parameter(Mandatory=$true)] 8 | [string] $Syntax 9 | 10 | ) 11 | 12 | switch( $Syntax ) 13 | { 14 | 15 | "PowerShell" { 16 | return ".ps1"; 17 | } 18 | 19 | "Bash" { 20 | return ".sh"; 21 | } 22 | 23 | "Python" { 24 | return ".py"; 25 | } 26 | 27 | default { 28 | throw new-object System.NotImplementedException("Unhandled script syntax '$syntax'."); 29 | } 30 | 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /tools/StepTemplatePacker/scripts/Get-OctopusStepTemplateProperty.ps1: -------------------------------------------------------------------------------- 1 | function Get-OctopusStepTemplateProperty 2 | { 3 | 4 | param 5 | ( 6 | 7 | [Parameter(Mandatory=$true)] 8 | [PsCustomObject] $StepJson, 9 | 10 | [Parameter(Mandatory=$true)] 11 | [string] $PropertyName, 12 | 13 | [Parameter(Mandatory=$false)] 14 | [string] $DefaultValue = [string]::Empty 15 | 16 | ) 17 | 18 | $member = Get-Member -InputObject $StepJson -MemberType "NoteProperty" -Name "Properties"; 19 | if( $member -eq $null ) 20 | { 21 | return $DefaultValue; 22 | } 23 | 24 | $member = Get-Member -InputObject $StepJson.Properties -MemberType "NoteProperty" -Name $PropertyName; 25 | if( $member -eq $null ) 26 | { 27 | return $DefaultValue; 28 | } 29 | 30 | return $StepJson.Properties.$PropertyName; 31 | 32 | } -------------------------------------------------------------------------------- /tools/StepTemplatePacker/scripts/Get-OctopusTextFile.ps1: -------------------------------------------------------------------------------- 1 | function Get-OctopusTextFile 2 | { 3 | 4 | param 5 | ( 6 | 7 | [Parameter(Mandatory=$true)] 8 | [string] $Path 9 | 10 | ) 11 | 12 | # wrapper around .Net class to support mocking in Pester 13 | 14 | return [System.IO.File]::ReadAllText($Path); 15 | 16 | } -------------------------------------------------------------------------------- /tools/StepTemplatePacker/scripts/Import-OctopusStepTemplateCustomScript.ps1: -------------------------------------------------------------------------------- 1 | function Import-OctopusStepTemplateCustomScript 2 | { 3 | 4 | param 5 | ( 6 | 7 | [Parameter(Mandatory=$true)] 8 | [string] $StepTemplate, 9 | 10 | [Parameter(Mandatory=$true)] 11 | [PsCustomObject] $StepJson, 12 | 13 | [Parameter(Mandatory=$true)] 14 | [string] $ScriptName 15 | 16 | ) 17 | 18 | # work out what file extension to use based on the language 19 | $filetype = Get-OctopusStepTemplateFileType -Syntax "PowerShell"; 20 | 21 | # work out the filename for the script 22 | $stepFolder = [System.IO.Path]::GetDirectoryName($StepTemplate); 23 | $scriptFilename = [System.IO.Path]::GetFileNameWithoutExtension($StepTemplate) + ".$ScriptName" + $fileType; 24 | $scriptPath = [System.IO.Path]::Combine($stepFolder, $scriptFilename); 25 | 26 | # read the custom script in from disk 27 | if( -not [System.IO.File]::Exists($scriptPath) ) 28 | { 29 | return; 30 | } 31 | else 32 | { 33 | $customScript = Get-OctopusTextFile -Path $scriptPath; 34 | } 35 | 36 | if( [string]::IsNullOrEmpty($customScript) ) 37 | { 38 | return; 39 | } 40 | 41 | # update the step template 42 | Set-OctopusStepTemplateProperty -StepJson $StepJson ` 43 | -PropertyName "Octopus.Action.CustomScripts.$ScriptName.ps1" ` 44 | -Value $customScript; 45 | 46 | } 47 | -------------------------------------------------------------------------------- /tools/StepTemplatePacker/scripts/Import-OctopusStepTemplateScriptBody.ps1: -------------------------------------------------------------------------------- 1 | function Import-OctopusStepTemplateScriptBody 2 | { 3 | 4 | param 5 | ( 6 | 7 | [Parameter(Mandatory=$true)] 8 | [string] $StepTemplate, 9 | 10 | [Parameter(Mandatory=$true)] 11 | [PsCustomObject] $StepJson 12 | 13 | ) 14 | 15 | # check this is an inline script, otherwise there's nothing to expand 16 | $scriptSource = Get-OctopusStepTemplateProperty -StepJson $StepJson ` 17 | -PropertyName "Octopus.Action.Script.ScriptSource" ` 18 | -DefaultValue "Inline"; 19 | if( $scriptSource -ne "Inline" ) 20 | { 21 | return; 22 | } 23 | 24 | # work out what file extension to use based on the language 25 | $syntax = Get-OctopusStepTemplateProperty -StepJson $StepJson ` 26 | -PropertyName "Octopus.Action.Script.Syntax" ` 27 | -DefaultValue "PowerShell"; 28 | $filetype = Get-OctopusStepTemplateFileType -Syntax $syntax; 29 | 30 | # work out the filename for the script 31 | $stepFolder = [System.IO.Path]::GetDirectoryName($StepTemplate); 32 | $scriptFilename = [System.IO.Path]::GetFileNameWithoutExtension($StepTemplate) + ".ScriptBody" + $fileType; 33 | $scriptPath = [System.IO.Path]::Combine($stepFolder, $scriptFilename); 34 | 35 | # read the script body in from disk 36 | if( -not [System.IO.File]::Exists($scriptPath) ) 37 | { 38 | return; 39 | } 40 | else 41 | { 42 | $scriptBody = Get-OctopusTextFile -Path $scriptPath; 43 | } 44 | 45 | if( [string]::IsNullOrEmpty($scriptBody) ) 46 | { 47 | return; 48 | } 49 | 50 | # update the step template 51 | Set-OctopusStepTemplateProperty -StepJson $StepJson ` 52 | -PropertyName "Octopus.Action.Script.ScriptBody" ` 53 | -Value $scriptBody; 54 | 55 | } 56 | -------------------------------------------------------------------------------- /tools/StepTemplatePacker/scripts/Import-OctopusStepTemplateScripts.ps1: -------------------------------------------------------------------------------- 1 | function Import-OctopusStepTemplateScripts 2 | { 3 | 4 | param 5 | ( 6 | 7 | [Parameter(Mandatory=$true)] 8 | [string] $StepTemplate 9 | 10 | ) 11 | 12 | $ErrorActionPreference = "Stop"; 13 | Set-StrictMode -Version "Latest"; 14 | 15 | # read and parse the step template's json 16 | $stepText = [System.IO.File]::ReadAllText($StepTemplate); 17 | $stepJson = ConvertFrom-Json -InputObject $stepText; 18 | 19 | # import the scripts 20 | Import-OctopusStepTemplateScriptBody -StepTemplate $StepTemplate -StepJson $stepJson; 21 | Import-OctopusStepTemplateCustomScript -StepTemplate $StepTemplate -StepJson $stepJson -ScriptName "PreDeploy"; 22 | Import-OctopusStepTemplateCustomScript -StepTemplate $StepTemplate -StepJson $stepJson -ScriptName "Deploy"; 23 | Import-OctopusStepTemplateCustomScript -StepTemplate $StepTemplate -StepJson $stepJson -ScriptName "PostDeploy"; 24 | 25 | $stepText = ConvertTo-OctopusJson -InputObject $stepJson; 26 | Set-OctopusTextFile -Path $StepTemplate ` 27 | -Contents $stepText; 28 | 29 | } -------------------------------------------------------------------------------- /tools/StepTemplatePacker/scripts/Set-OctopusStepTemplateProperty.ps1: -------------------------------------------------------------------------------- 1 | function Set-OctopusStepTemplateProperty 2 | { 3 | 4 | param 5 | ( 6 | 7 | [Parameter(Mandatory=$true)] 8 | [PsCustomObject] $StepJson, 9 | 10 | [Parameter(Mandatory=$true)] 11 | [string] $PropertyName, 12 | 13 | [Parameter(Mandatory=$false)] 14 | [object] $Value = $null 15 | 16 | ) 17 | 18 | $member = Get-Member -InputObject $StepJson -MemberType "NoteProperty" -Name "Properties"; 19 | if( $member -eq $null ) 20 | { 21 | Add-Member -InputObject $StepJson -NotePropertyName "Properties" -NotePropertyValue ([PSCustomObject] @{}); 22 | } 23 | 24 | $member = Get-Member -InputObject $stepJson.Properties -MemberType "NoteProperty" -Name $PropertyName; 25 | if( $member -eq $null ) 26 | { 27 | Add-Member -InputObject $StepJson.Properties -NotePropertyName $PropertyName -NotePropertyValue ([PSCustomObject] @{}); 28 | } 29 | 30 | $StepJson.Properties.$PropertyName = $Value; 31 | 32 | } -------------------------------------------------------------------------------- /tools/StepTemplatePacker/scripts/Set-OctopusTextFile.ps1: -------------------------------------------------------------------------------- 1 | function Set-OctopusTextFile 2 | { 3 | 4 | param 5 | ( 6 | 7 | [Parameter(Mandatory=$true)] 8 | [string] $Path, 9 | 10 | [Parameter(Mandatory=$true)] 11 | [string] $Contents 12 | 13 | ) 14 | 15 | # wrapper around .Net class to support mocking in Pester 16 | 17 | [System.IO.File]::WriteAllText($Path, $Contents); 18 | 19 | } -------------------------------------------------------------------------------- /tools/StepTemplatePacker/tests/Invoke-PesterTests.ps1: -------------------------------------------------------------------------------- 1 | $ErrorActionPreference = "Stop"; 2 | Set-StrictMode -Version "Latest"; 3 | 4 | $thisScript = $MyInvocation.MyCommand.Path; 5 | $thisFolder = [System.IO.Path]::GetDirectoryName($thisScript); 6 | 7 | $packagesFolder = $thisFolder; 8 | $packagesFolder = [System.IO.Path]::GetDirectoryName($packagesFolder); 9 | $packagesFolder = [System.IO.Path]::GetDirectoryName($packagesFolder); 10 | $packagesFolder = [System.IO.Path]::GetDirectoryName($packagesFolder); 11 | $packagesFolder = [System.IO.Path]::Combine($packagesFolder, "packages"); 12 | 13 | $packer = [System.IO.Path]::GetDirectoryName($thisFolder); 14 | 15 | Import-Module -Name $packer; 16 | Import-Module -Name ([System.IO.Path]::Combine($packagesFolder, "Pester.3.4.3\tools\Pester")); 17 | 18 | Invoke-Pester; -------------------------------------------------------------------------------- /tools/_pack.ps1: -------------------------------------------------------------------------------- 1 | param 2 | ( 3 | [Parameter(Mandatory=$false)] 4 | [string] $SearchPattern 5 | ) 6 | 7 | $ErrorActionPreference = "Stop"; 8 | Set-StrictMode -Version "Latest"; 9 | 10 | $thisScript = $MyInvocation.MyCommand.Path; 11 | $thisFolder = [System.IO.Path]::GetDirectoryName($thisScript); 12 | 13 | Import-Module -Name ([System.IO.Path]::Combine($thisFolder, "StepTemplatePacker")) -ErrorAction "Stop"; 14 | 15 | $stepTemplateFolder = $thisFolder; 16 | $stepTemplateFolder = [System.IO.Path]::GetDirectoryName($stepTemplateFolder); 17 | $stepTemplateFolder = [System.IO.Path]::Combine($stepTemplateFolder, "step-templates"); 18 | 19 | if( $PSBoundParameters.ContainsKey("SearchPattern") ) 20 | { 21 | $stepTemplates = [System.IO.Directory]::GetFiles($stepTemplateFolder, "$SearchPattern.json"); 22 | } 23 | else 24 | { 25 | $stepTemplates = [System.IO.Directory]::GetFiles($stepTemplateFolder, "*.json"); 26 | } 27 | 28 | foreach( $stepTemplate in $stepTemplates ) 29 | { 30 | write-host "packing '$([System.IO.Path]::GetFileName($stepTemplate))'"; 31 | Import-OctopusStepTemplateScripts -StepTemplate $stepTemplate; 32 | } -------------------------------------------------------------------------------- /tools/_unpack.ps1: -------------------------------------------------------------------------------- 1 | param 2 | ( 3 | 4 | [Parameter(Mandatory=$false)] 5 | [string] $SearchPattern, 6 | 7 | [Parameter(Mandatory=$false)] 8 | [switch] $Force = $false 9 | 10 | ) 11 | 12 | $ErrorActionPreference = "Stop"; 13 | Set-StrictMode -Version "Latest"; 14 | 15 | $thisScript = $MyInvocation.MyCommand.Path; 16 | $thisFolder = [System.IO.Path]::GetDirectoryName($thisScript); 17 | 18 | Import-Module -Name ([System.IO.Path]::Combine($thisFolder, "StepTemplatePacker")) -ErrorAction "Stop"; 19 | 20 | $stepTemplateFolder = $thisFolder; 21 | $stepTemplateFolder = [System.IO.Path]::GetDirectoryName($stepTemplateFolder); 22 | $stepTemplateFolder = [System.IO.Path]::Combine($stepTemplateFolder, "step-templates"); 23 | 24 | if( $PSBoundParameters.ContainsKey("SearchPattern") ) 25 | { 26 | $stepTemplates = [System.IO.Directory]::GetFiles($stepTemplateFolder, "$SearchPattern.json"); 27 | } 28 | else 29 | { 30 | $stepTemplates = [System.IO.Directory]::GetFiles($stepTemplateFolder, "*.json"); 31 | } 32 | 33 | foreach( $stepTemplate in $stepTemplates ) 34 | { 35 | write-host "unpacking '$([System.IO.Path]::GetFileName($stepTemplate))'"; 36 | Export-OctopusStepTemplateScripts -StepTemplate $stepTemplate -Force:$Force; 37 | } --------------------------------------------------------------------------------