<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Armory Docs – Get Started with Pipelines-as-Code</title><link>/plugins/pipelines-as-code/install/</link><description>Recent content in Get Started with Pipelines-as-Code on Armory Docs</description><generator>Hugo -- gohugo.io</generator><atom:link href="/plugins/pipelines-as-code/install/index.xml" rel="self" type="application/rss+xml"/><item><title>Plugins: Enable Pipelines-as-Code in Armory Continuous Deployment</title><link>/plugins/pipelines-as-code/install/armory-cd/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/plugins/pipelines-as-code/install/armory-cd/</guid><description>
&lt;h2 id="before-you-begin">Before you begin&lt;/h2>
&lt;ul>
&lt;li>You are running Armory Continuous Deployment.&lt;/li>
&lt;li>You manage your instance using the Armory Operator.&lt;/li>
&lt;/ul>
&lt;p>Pipelines-as-Code is a built-in feature of Armory CD. You only need to configure your repo, enable the Dinghy service, and apply your changes to use Pipelines-as-Code.&lt;/p>
&lt;p>If you are running open source Spinnaker, see the &lt;a href="/plugins/pipelines-as-code/#installation">Pipelines-as-Code landing page&lt;/a> for installation paths based on whether you are using Halyard or the Spinnaker Operator.&lt;/p>
&lt;h2 id="where-to-configure-the-service">Where to configure the service&lt;/h2>
&lt;ul>
&lt;li>
&lt;p>If you are using the &lt;code>spinnaker-kustomize-patches&lt;/code> repo, put your config in the &lt;code>armory/features/pipelines-as-code/features.yml&lt;/code> file.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>If you are using a single &lt;code>spinnakerservice.yml&lt;/code> manifest, put your config in the &lt;code>spec.spinnakerConfig.config.armory.dinghy&lt;/code> section.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">apiVersion&lt;/span>: spinnaker.armory.io/v1alpha2
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">kind&lt;/span>: SpinnakerService
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">metadata&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">name&lt;/span>: spinnaker
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">spec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">spinnakerConfig&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">armory&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">dinghy&lt;/span>:
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;/ul>
&lt;h2 id="enable-pipelines-as-code">Enable Pipelines-as-Code&lt;/h2>
&lt;ul class="nav nav-tabs justify-content-end" id="tabs-3" role="tablist">
&lt;li class="nav-item">
&lt;button class="nav-link active"
id="tabs-03-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-03-00" role="tab"
aria-controls="tabs-03-00" aria-selected="true">
spinnaker-kustomize-patches
&lt;/button>
&lt;/li>&lt;li class="nav-item">
&lt;button class="nav-link"
id="tabs-03-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-03-01" role="tab"
aria-controls="tabs-03-01" aria-selected="false">
spinnakerservice.yml
&lt;/button>
&lt;/li>
&lt;/ul>
&lt;div class="tab-content" id="tabs-3-content">
&lt;div class="tab-body tab-pane fade show active"
id="tabs-03-00" role="tabpanel" aria-labelled-by="tabs-03-00-tab" tabindex="3">
&lt;p>The Dinghy service is already enabled in the &lt;code>armory/features/pipelines-as-code/features.yml&lt;/code> file, so you only need to modify your Kustomization recipe. Add an entry for Pipelines-as-Code in the &lt;code>components&lt;/code> section of your &lt;code>kustomization.yml&lt;/code> file:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">components&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - core/base
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - core/persistence/in-cluster
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - targets/kubernetes/default
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - armory/features/pipelines-as-code/
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-03-01" role="tabpanel" aria-labelled-by="tabs-03-01-tab" tabindex="3">
&lt;p>Add &lt;code>enabled: true&lt;/code> to your &lt;code>dinghy&lt;/code> section.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">spec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">spinnakerConfig&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">armory&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">dinghy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">enabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="configure-your-repo">Configure your repo&lt;/h2>
&lt;p>Before configuring your repos, ensure you have the following:&lt;/p>
&lt;ol>
&lt;li>A personal access token that has read access to the repo where you store your &lt;code>dinghyfile&lt;/code> and the repo where you store &lt;code>module&lt;/code> files. You should create a Kubernetes &lt;a href="/continuous-deployment/armory-admin/secrets/secrets-kubernetes/">Secret&lt;/a> for your personal access token so you don&amp;rsquo;t store the token in plain text in your config file.&lt;/li>
&lt;li>The organization where the app repos and templates reside; for example, if your repo is &lt;code>armory-io/dinghy-templates&lt;/code>, your &lt;code>template-org&lt;/code> is &lt;code>armory-io&lt;/code>.&lt;/li>
&lt;li>The name of the repo containing your modules; for example, if your repo is &lt;code>armory-io/dinghy-templates&lt;/code>, your &lt;code>template-repo&lt;/code> is &lt;code>dinghy-templates&lt;/code>.&lt;/li>
&lt;/ol>
&lt;ul class="nav nav-tabs justify-content-end" id="tabs-5" role="tablist">
&lt;li class="nav-item">
&lt;button class="nav-link disabled"
id="tabs-05-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-05-00" role="tab"
aria-controls="tabs-05-00" aria-selected="false">
&lt;strong>Version Control&lt;/strong>:
&lt;/button>
&lt;/li>&lt;li class="nav-item">
&lt;button class="nav-link active"
id="tabs-05-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-05-01" role="tab"
aria-controls="tabs-05-01" aria-selected="true">
GitHub
&lt;/button>
&lt;/li>&lt;li class="nav-item">
&lt;button class="nav-link"
id="tabs-05-02-tab" data-bs-toggle="tab" data-bs-target="#tabs-05-02" role="tab"
aria-controls="tabs-05-02" aria-selected="false">
Bitbucket/Stash
&lt;/button>
&lt;/li>&lt;li class="nav-item">
&lt;button class="nav-link"
id="tabs-05-03-tab" data-bs-toggle="tab" data-bs-target="#tabs-05-03" role="tab"
aria-controls="tabs-05-03" aria-selected="false">
GitLab
&lt;/button>
&lt;/li>
&lt;/ul>
&lt;div class="tab-content" id="tabs-5-content">
&lt;div class="tab-body tab-pane fade"
id="tabs-05-00" role="tabpanel" aria-labelled-by="tabs-05-00-tab" tabindex="5">
&lt;/div>
&lt;div class="tab-body tab-pane fade show active"
id="tabs-05-01" role="tabpanel" aria-labelled-by="tabs-05-01-tab" tabindex="5">
&lt;p>Add the following to your config file:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">spec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">spinnakerConfig&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">armory&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">dinghy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">enabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">templateOrg&lt;/span>: &amp;lt;repo-org&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">templateRepo&lt;/span>: &amp;lt;dinghy-templates-repo&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">githubToken&lt;/span>: &amp;lt;abc&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">githubEndpoint&lt;/span>: &amp;lt;https://api.github.com&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>All fields are required.&lt;/p>
&lt;ul>
&lt;li>&lt;code>templateOrg&lt;/code>: VCS organization or namespace where application and template repositories are located&lt;/li>
&lt;li>&lt;code>templateRepo&lt;/code>: VCS repository where module templates are located&lt;/li>
&lt;li>&lt;code>githubToken&lt;/code>: GitHub token; This field supports &amp;ldquo;encrypted&amp;rdquo; field references; see &lt;a href="/continuous-deployment/armory-admin/secrets/secrets-kubernetes/">Secrets&lt;/a> for details.&lt;/li>
&lt;li>&lt;code>githubEndpoint&lt;/code>: (Default: &lt;code>https://api.github.com&lt;/code>) GitHub API endpoint. Useful if you’re using GitHub Enterprise.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>GitHub webhooks&lt;/strong>&lt;/p>
&lt;p>Set up webhooks at the organization level for push events. You can do this by going to &lt;code>https://github.com/organizations/&amp;lt;your_org_here&amp;gt;/settings/hooks&lt;/code>.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Set &lt;code>content-type&lt;/code> to &lt;code>application/json&lt;/code>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Set the &lt;code>Payload URL&lt;/code> to your Gate URL. Depending on whether you configured Gate to use its own DNS name or a path on the same DNS name as Deck, the URL follows one of the following formats:&lt;/p>
&lt;ul>
&lt;li>&lt;code>https://&amp;lt;your-gate-url&amp;gt;/webhooks/git/github&lt;/code> if you have a separate DNS name or port for Gate&lt;/li>
&lt;li>&lt;code>https://&amp;lt;your-spinnaker-url&amp;gt;/api/v1/webhooks/git/github&lt;/code> if you&amp;rsquo;re using a different path for Gate&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;p>If your Gate endpoint is protected by a firewall, you need to configure your firewall to allow inbound webhooks from GitHub&amp;rsquo;s IP addresses. You can find the IPs in this API &lt;a href="https://api.github.com/meta">response&lt;/a>. Read more about &lt;a href="https://help.github.com/articles/about-github-s-ip-addresses/">GitHub&amp;rsquo;s IP addresses&lt;/a>.&lt;/p>
&lt;p>You can configure webhooks on multiple GitHub organizations or repositories to send events to Dinghy. Only a single repository from one organization can be the shared template repository in Dinghy. However, Dinghy can process pipelines from multiple GitHub organizations. You want to ensure the GitHub token configured for Dinghy has permission for all the organizations involved.&lt;/p>
&lt;p>&lt;strong>Pull request validations&lt;/strong>&lt;/p>
&lt;p>When you make a GitHub pull request (PR) and there is a change in a &lt;code>dinghyfile&lt;/code>, Pipelines-as-Code automatically performs a validation for that &lt;code>dinghyfile&lt;/code>. It also updates the GitHub status accordingly. If the validation fails, you see an unsuccessful &lt;code>dinghy&lt;/code> check.&lt;/p>
&lt;figure>
&lt;img src="/images/dinghy/pr_validation/pr_validation.png"
alt="PR that fails validation."/>
&lt;/figure>
&lt;p>Make PR validations mandatory to ensure users only merge working &lt;code>dinghyfiles&lt;/code>.&lt;/p>
&lt;p>Perform the following steps to configure mandatory PR validation:&lt;/p>
&lt;ol>
&lt;li>Go to your GitHub repository.&lt;/li>
&lt;li>Click on &lt;strong>Settings &amp;gt; Branches&lt;/strong>.&lt;/li>
&lt;li>In &lt;strong>Branch protection rules&lt;/strong>, select &lt;strong>Add rule&lt;/strong>.&lt;/li>
&lt;li>Add &lt;code>master&lt;/code> in &lt;strong>Branch name pattern&lt;/strong> so that the rule gets enforced on the &lt;code>master&lt;/code> branch. Note that if this is a new repository with no commits, the &amp;ldquo;dinghy&amp;rdquo; option does not appear. You must first create a &lt;code>dinghyfile&lt;/code> in any branch.&lt;/li>
&lt;li>Select &lt;strong>Require status checks to pass before merging&lt;/strong> and make &lt;strong>dinghy&lt;/strong> required. Select &lt;strong>Include administrators&lt;/strong> as well so that all PRs get validated, regardless of user.&lt;/li>
&lt;/ol>
&lt;p>The following screenshot shows what your GitHub settings should resemble:&lt;/p>
&lt;figure>
&lt;img src="/images/dinghy/pr_validation/branch_mandatory.png"
alt="Configured dinghy PR validation."/>
&lt;/figure>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-05-02" role="tabpanel" aria-labelled-by="tabs-05-02-tab" tabindex="5">
&lt;p>Bitbucket has both cloud and server offerings. See the Atlassian &lt;a href="https://confluence.atlassian.com/bitbucketserver/bitbucket-rebrand-faq-779298912.html">docs&lt;/a> for more on the name change from Stash to Bitbucket Server. Consult your company&amp;rsquo;s Bitbucket support desk if you need help determining what flavor and version of Bitbucket you are using.&lt;/p>
&lt;p>Add the following to your config file:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">spec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">spinnakerConfig&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">armory&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">dinghy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">enabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">templateOrg&lt;/span>: &amp;lt;repo-org&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">templateRepo&lt;/span>: &amp;lt;dinghy-templates-repo&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">stashUsername&lt;/span>: &amp;lt;stash_user&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">stashToken&lt;/span>: &amp;lt;abc&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">stashEndpoint&lt;/span>: &amp;lt;https://my-endpoint&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>All fields are required.&lt;/p>
&lt;ul>
&lt;li>&lt;code>templateRepo&lt;/code>: VCS repository where module templates are located&lt;/li>
&lt;li>&lt;code>stashUsername&lt;/code>: Stash username&lt;/li>
&lt;li>&lt;code>stashToken&lt;/code>: Stash token. This field supports &amp;ldquo;encrypted&amp;rdquo; field references; see &lt;a href="/continuous-deployment/armory-admin/secrets/secrets-kubernetes/">Secrets&lt;/a> for details.&lt;/li>
&lt;li>&lt;code>stashEndpoint&lt;/code>: Stash API endpoint. If you&amp;rsquo;re using Bitbucket Server, update the endpoint to include the api e.g. &lt;a href="https://your-endpoint-here.com/rest/api/1.0">https://your-endpoint-here.com/rest/api/1.0&lt;/a>&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>If you&amp;rsquo;re using Bitbucket Server, update the endpoint to include the api, e.g. &lt;!-- markdown-link-check-disable -->&lt;code>--stash-endpoint https://your-endpoint-here.com/rest/api/1.0&lt;/code>&lt;!-- markdown-link-check-enable-->&lt;/p>
&lt;/blockquote>
&lt;p>You need to set up webhooks for each project that has the &lt;code>dinghyfile&lt;/code> or module separately. Make the webhook &lt;code>POST&lt;/code> to: &lt;code>https://spinnaker.your-company.com:8084/webhooks/git/bitbucket&lt;/code>. If you&amp;rsquo;re using Stash &lt;code>&amp;lt;v3.11.6&lt;/code>, you need to install the &lt;a href="https://marketplace.atlassian.com/plugins/com.atlassian.stash.plugin.stash-web-post-receive-hooks-plugin/server/overview">webhook plugin&lt;/a> to be able to set up webhooks.&lt;/p>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-05-03" role="tabpanel" aria-labelled-by="tabs-05-03-tab" tabindex="5">
&lt;p>Add the following to your config file:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">spec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">spinnakerConfig&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">armory&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">dinghy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">enabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">templateOrg&lt;/span>: &amp;lt;repo-org&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">templateRepo&lt;/span>: &amp;lt;dinghy-templates-repo&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">gitlabToken&lt;/span>: &amp;lt;abc&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">gitlabEndpoint&lt;/span>: &amp;lt;https://my-endpoint&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>All fields are required.&lt;/p>
&lt;ul>
&lt;li>&lt;code>templateOrg&lt;/code>: VCS organization or namespace where application and template repositories are located&lt;/li>
&lt;li>&lt;code>templateRepo&lt;/code>: VCS repository where module templates are located&lt;/li>
&lt;li>&lt;code>gitlabToken&lt;/code>: GitLab token. This field supports &amp;ldquo;encrypted&amp;rdquo; field references; see &lt;a href="/continuous-deployment/armory-admin/secrets/secrets-kubernetes/">Secrets&lt;/a> for details.&lt;/li>
&lt;li>&lt;code>gitlabEndpoint&lt;/code>: GitLab endpoint&lt;/li>
&lt;/ul>
&lt;p>Under &lt;strong>Settings&lt;/strong> -&amp;gt; &lt;strong>Integrations&lt;/strong> on your project page, point your webhooks to &lt;code>https://&amp;lt;your-gate-url&amp;gt;/webhooks/git/gitlab&lt;/code>. Make sure the server your GitLab install is running on can connect to your Gate URL. Armory also needs to communicate with your GitLab installation. Ensure that connectivity works as well.&lt;/p>
&lt;/div>
&lt;/div>
&lt;h2 id="deploy">Deploy&lt;/h2>
&lt;p>Apply your updates.&lt;/p>
&lt;ul class="nav nav-tabs justify-content-end" id="tabs-6" role="tablist">
&lt;li class="nav-item">
&lt;button class="nav-link active"
id="tabs-06-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-06-00" role="tab"
aria-controls="tabs-06-00" aria-selected="true">
spinnaker-kustomize-patches
&lt;/button>
&lt;/li>&lt;li class="nav-item">
&lt;button class="nav-link"
id="tabs-06-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-06-01" role="tab"
aria-controls="tabs-06-01" aria-selected="false">
spinnakerservice.yml
&lt;/button>
&lt;/li>
&lt;/ul>
&lt;div class="tab-content" id="tabs-6-content">
&lt;div class="tab-body tab-pane fade show active"
id="tabs-06-00" role="tabpanel" aria-labelled-by="tabs-06-00-tab" tabindex="6">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>kubectl apply -k &amp;lt;kustomization-directory-path&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-06-01" role="tabpanel" aria-labelled-by="tabs-06-01-tab" tabindex="6">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>kubectl -n spinnaker apply -f spinnakerservice.yml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="whats-next">What&amp;rsquo;s next&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="/plugins/pipelines-as-code/install/configure/"}>Configure Pipelines-as-Code Optional Features&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Plugins: Install Pipelines-as-Code in Spinnaker (Spinnaker Operator)</title><link>/plugins/pipelines-as-code/install/spinnaker-operator/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/plugins/pipelines-as-code/install/spinnaker-operator/</guid><description>
&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>In this guide, you use the Kustomize files in the &lt;a href="https://github.com/armory/spinnaker-kustomize-patches">&lt;code>spinnaker-kustomize-patches&lt;/code> repo&lt;/a> to deploy the service and install the plugin. You do need to update the contents of some files.&lt;/p>
&lt;h3 id="compatibility">Compatibility&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Spinnaker Version&lt;/th>
&lt;th style="text-align:left">Pipelines-as-Code Service Version&lt;/th>
&lt;th style="text-align:left">Pipelines-as-Code Plugin Version&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">1.30.x&lt;/td>
&lt;td style="text-align:left">2.30&lt;/td>
&lt;td style="text-align:left">0.0.5&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">1.28.x&lt;/td>
&lt;td style="text-align:left">2.28&lt;/td>
&lt;td style="text-align:left">0.0.5&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">1.27.x&lt;/td>
&lt;td style="text-align:left">2.27&lt;/td>
&lt;td style="text-align:left">0.0.5&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">1.26.x&lt;/td>
&lt;td style="text-align:left">2.26&lt;/td>
&lt;td style="text-align:left">0.0.5&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="before-you-begin">Before you begin&lt;/h2>
&lt;ul>
&lt;li>You are running open source Spinnaker.&lt;/li>
&lt;li>You manage your instance using the Spinnaker Operator and the &lt;code>spinnaker-kustomize-patches&lt;/code> &lt;a href="https://github.com/armory/spinnaker-kustomize-patches">repo&lt;/a>. If you are using Halyard, see &lt;a href="/plugins/pipelines-as-code/install/spinnaker-halyard/"}>Install Pipelines-as-Code in Spinnaker (Halyard)&lt;/a>.&lt;/li>
&lt;/ul>
&lt;h2 id="find-the-files">Find the files&lt;/h2>
&lt;p>You can find the Pipelines-as-Code files in the &lt;code>spinnaker-kustomize-patches&lt;/code> repo&amp;rsquo;s &lt;code>plugins/oss/pipelines-as-code&lt;/code> directory.&lt;/p>
&lt;ul>
&lt;li>&lt;code>kustomization.yml&lt;/code>: Kustomize build file&lt;/li>
&lt;li>&lt;code>deployment.yml&lt;/code>: &lt;code>spin-dinghy&lt;/code> Deployment manifest&lt;/li>
&lt;li>&lt;code>dinghy.yml&lt;/code>: service config&lt;/li>
&lt;li>&lt;code>pac-plugin-config.yml&lt;/code>: plugin config&lt;/li>
&lt;li>&lt;code>service.yml&lt;/code>: &lt;code>spin-dinghy&lt;/code> Service manifest&lt;/li>
&lt;li>&lt;code>spinnaker.yml&lt;/code>: Spinnaker service mapping&lt;/li>
&lt;li>&lt;code>versions&lt;/code> directory: contains version-specific values that Kustomize inserts into the manifest during generation&lt;/li>
&lt;/ul>
&lt;p>The &lt;code>spinnaker-kustomize-patches/recipes&lt;/code> directory contains the example &lt;code>kustomization-oss-pac.yml&lt;/code> recipe. You can use that recipe or copy the entries to your recipe. This guide uses the &lt;code>kustomization-oss-pac.yml&lt;/code> recipe for examples.&lt;/p>
&lt;h2 id="configure-the-service">Configure the service&lt;/h2>
&lt;h3 id="set-your-spinnaker-version">Set your Spinnaker version&lt;/h3>
&lt;p>Make sure the service version is compatible with your Spinnaker version.&lt;/p>
&lt;p>You specify the version in the &lt;code>patchesStrategicMerge&lt;/code> section of &lt;code>plugins/oss/pipelines-as-code/kustomization.yml&lt;/code>. You can find supported versions in the &lt;code>plugins/oss/pipelines-as-code/versions&lt;/code> directory. For example, if you are running Spinnaker 1.27.x, replace &lt;code>./versions/v-1.28.yml&lt;/code> with &lt;code>./versions/v-1.27.yml&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">patchesStrategicMerge&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - ./pac-plugin-config.yml
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - ./versions/v-1.28.yml
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="configure-your-repo">Configure your repo&lt;/h3>
&lt;div class="alert alert-primary" role="alert">
&lt;h4 class="alert-heading">Important&lt;/h4>
Configure your repo in the &lt;code>plugins/oss/pipelines-as-code/dinghy.yml&lt;/code> file.
&lt;/div>
&lt;p>Before configuring your repos, ensure you have the following:&lt;/p>
&lt;ol>
&lt;li>A personal access token that has read access to the repo where you store your &lt;code>dinghyfile&lt;/code> and the repo where you store &lt;code>module&lt;/code> files. You should create a Kubernetes &lt;a href="/continuous-deployment/armory-admin/secrets/secrets-kubernetes/">Secret&lt;/a> for your personal access token so you don&amp;rsquo;t store the token in plain text in your config file.&lt;/li>
&lt;li>The organization where the app repos and templates reside; for example, if your repo is &lt;code>armory-io/dinghy-templates&lt;/code>, your &lt;code>template-org&lt;/code> is &lt;code>armory-io&lt;/code>.&lt;/li>
&lt;li>The name of the repo containing your modules; for example, if your repo is &lt;code>armory-io/dinghy-templates&lt;/code>, your &lt;code>template-repo&lt;/code> is &lt;code>dinghy-templates&lt;/code>.&lt;/li>
&lt;/ol>
&lt;ul class="nav nav-tabs justify-content-end" id="tabs-5" role="tablist">
&lt;li class="nav-item">
&lt;button class="nav-link disabled"
id="tabs-05-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-05-00" role="tab"
aria-controls="tabs-05-00" aria-selected="false">
&lt;strong>Version Control&lt;/strong>:
&lt;/button>
&lt;/li>&lt;li class="nav-item">
&lt;button class="nav-link active"
id="tabs-05-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-05-01" role="tab"
aria-controls="tabs-05-01" aria-selected="true">
GitHub
&lt;/button>
&lt;/li>&lt;li class="nav-item">
&lt;button class="nav-link"
id="tabs-05-02-tab" data-bs-toggle="tab" data-bs-target="#tabs-05-02" role="tab"
aria-controls="tabs-05-02" aria-selected="false">
Bitbucket/Stash
&lt;/button>
&lt;/li>&lt;li class="nav-item">
&lt;button class="nav-link"
id="tabs-05-03-tab" data-bs-toggle="tab" data-bs-target="#tabs-05-03" role="tab"
aria-controls="tabs-05-03" aria-selected="false">
GitLab
&lt;/button>
&lt;/li>
&lt;/ul>
&lt;div class="tab-content" id="tabs-5-content">
&lt;div class="tab-body tab-pane fade"
id="tabs-05-00" role="tabpanel" aria-labelled-by="tabs-05-00-tab" tabindex="5">
&lt;/div>
&lt;div class="tab-body tab-pane fade show active"
id="tabs-05-01" role="tabpanel" aria-labelled-by="tabs-05-01-tab" tabindex="5">
&lt;p>Add the following to your &lt;code>dinghy.yml&lt;/code> config:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">templateOrg&lt;/span>: &amp;lt;repo-org&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">templateRepo&lt;/span>: &amp;lt;dinghy-templates-repo&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">githubToken&lt;/span>: &amp;lt;abc&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">githubEndpoint&lt;/span>: &amp;lt;https://api.github.com&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>All fields are required.&lt;/p>
&lt;ul>
&lt;li>&lt;code>templateOrg&lt;/code>: VCS organization or namespace where application and template repositories are located&lt;/li>
&lt;li>&lt;code>templateRepo&lt;/code>: VCS repository where module templates are located&lt;/li>
&lt;li>&lt;code>githubToken&lt;/code>: GitHub token; This field supports &amp;ldquo;encrypted&amp;rdquo; field references; see &lt;a href="/continuous-deployment/armory-admin/secrets/secrets-kubernetes/">Secrets&lt;/a> for details.&lt;/li>
&lt;li>&lt;code>githubEndpoint&lt;/code>: (Default: &lt;code>https://api.github.com&lt;/code>) GitHub API endpoint. Useful if you’re using GitHub Enterprise.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>GitHub webhooks&lt;/strong>&lt;/p>
&lt;p>Set up webhooks at the organization level for push events. You can do this by going to &lt;code>https://github.com/organizations/&amp;lt;your_org_here&amp;gt;/settings/hooks&lt;/code>.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Set &lt;code>content-type&lt;/code> to &lt;code>application/json&lt;/code>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Set the &lt;code>Payload URL&lt;/code> to your Gate URL. Depending on whether you configured Gate to use its own DNS name or a path on the same DNS name as Deck, the URL follows one of the following formats:&lt;/p>
&lt;ul>
&lt;li>&lt;code>https://&amp;lt;your-gate-url&amp;gt;/webhooks/git/github&lt;/code> if you have a separate DNS name or port for Gate&lt;/li>
&lt;li>&lt;code>https://&amp;lt;your-spinnaker-url&amp;gt;/api/v1/webhooks/git/github&lt;/code> if you&amp;rsquo;re using a different path for Gate&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;p>If your Gate endpoint is protected by a firewall, you need to configure your firewall to allow inbound webhooks from GitHub&amp;rsquo;s IP addresses. You can find the IPs in this API &lt;a href="https://api.github.com/meta">response&lt;/a>. Read more about &lt;a href="https://help.github.com/articles/about-github-s-ip-addresses/">GitHub&amp;rsquo;s IP addresses&lt;/a>.&lt;/p>
&lt;p>You can configure webhooks on multiple GitHub organizations or repositories to send events to Dinghy. Only a single repository from one organization can be the shared template repository in Dinghy. However, Dinghy can process pipelines from multiple GitHub organizations. You want to ensure the GitHub token configured for Dinghy has permission for all the organizations involved.&lt;/p>
&lt;p>&lt;strong>Pull request validations&lt;/strong>&lt;/p>
&lt;p>When you make a GitHub pull request (PR) and there is a change in a &lt;code>dinghyfile&lt;/code>, Pipelines-as-Code automatically performs a validation for that &lt;code>dinghyfile&lt;/code>. It also updates the GitHub status accordingly. If the validation fails, you see an unsuccessful &lt;code>dinghy&lt;/code> check.&lt;/p>
&lt;figure>
&lt;img src="/images/dinghy/pr_validation/pr_validation.png"
alt="PR that fails validation."/>
&lt;/figure>
&lt;p>Make PR validations mandatory to ensure users only merge working &lt;code>dinghyfiles&lt;/code>.&lt;/p>
&lt;p>Perform the following steps to configure mandatory PR validation:&lt;/p>
&lt;ol>
&lt;li>Go to your GitHub repository.&lt;/li>
&lt;li>Click on &lt;strong>Settings &amp;gt; Branches&lt;/strong>.&lt;/li>
&lt;li>In &lt;strong>Branch protection rules&lt;/strong>, select &lt;strong>Add rule&lt;/strong>.&lt;/li>
&lt;li>Add &lt;code>master&lt;/code> in &lt;strong>Branch name pattern&lt;/strong> so that the rule gets enforced on the &lt;code>master&lt;/code> branch. Note that if this is a new repository with no commits, the &amp;ldquo;dinghy&amp;rdquo; option does not appear. You must first create a &lt;code>dinghyfile&lt;/code> in any branch.&lt;/li>
&lt;li>Select &lt;strong>Require status checks to pass before merging&lt;/strong> and make &lt;strong>dinghy&lt;/strong> required. Select &lt;strong>Include administrators&lt;/strong> as well so that all PRs get validated, regardless of user.&lt;/li>
&lt;/ol>
&lt;p>The following screenshot shows what your GitHub settings should resemble:&lt;/p>
&lt;figure>
&lt;img src="/images/dinghy/pr_validation/branch_mandatory.png"
alt="Configured dinghy PR validation."/>
&lt;/figure>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-05-02" role="tabpanel" aria-labelled-by="tabs-05-02-tab" tabindex="5">
&lt;p>Bitbucket has both cloud and server offerings. See the Atlassian &lt;a href="https://confluence.atlassian.com/bitbucketserver/bitbucket-rebrand-faq-779298912.html">docs&lt;/a> for more on the name change from Stash to Bitbucket Server. Consult your company&amp;rsquo;s Bitbucket support desk if you need help determining what flavor and version of Bitbucket you are using.&lt;/p>
&lt;p>Add the following to your &lt;code>dinghy.yml&lt;/code> config:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">templateOrg&lt;/span>: &amp;lt;repo-org&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">templateRepo&lt;/span>: &amp;lt;dinghy-templates-repo&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">stashUsername&lt;/span>: &amp;lt;stash_user&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">stashToken&lt;/span>: &amp;lt;abc&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">stashEndpoint&lt;/span>: &amp;lt;https://my-endpoint&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>All fields are required.&lt;/p>
&lt;ul>
&lt;li>&lt;code>templateRepo&lt;/code>: VCS repository where module templates are located&lt;/li>
&lt;li>&lt;code>stashUsername&lt;/code>: Stash username&lt;/li>
&lt;li>&lt;code>stashToken&lt;/code>: Stash token. This field supports &amp;ldquo;encrypted&amp;rdquo; field references; see &lt;a href="/continuous-deployment/armory-admin/secrets/secrets-kubernetes/">Secrets&lt;/a> for details.&lt;/li>
&lt;li>&lt;code>stashEndpoint&lt;/code>: Stash API endpoint. If you&amp;rsquo;re using Bitbucket Server, update the endpoint to include the api e.g. &lt;a href="https://your-endpoint-here.com/rest/api/1.0">https://your-endpoint-here.com/rest/api/1.0&lt;/a>&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>If you&amp;rsquo;re using Bitbucket Server, update the endpoint to include the api, e.g. &lt;!-- markdown-link-check-disable -->&lt;code>--stash-endpoint https://your-endpoint-here.com/rest/api/1.0&lt;/code>&lt;!-- markdown-link-check-enable-->&lt;/p>
&lt;/blockquote>
&lt;p>You need to set up webhooks for each project that has the &lt;code>dinghyfile&lt;/code> or module separately. Make the webhook &lt;code>POST&lt;/code> to: &lt;code>https://spinnaker.your-company.com:8084/webhooks/git/bitbucket&lt;/code>. If you&amp;rsquo;re using Stash &lt;code>&amp;lt;v3.11.6&lt;/code>, you need to install the &lt;a href="https://marketplace.atlassian.com/plugins/com.atlassian.stash.plugin.stash-web-post-receive-hooks-plugin/server/overview">webhook plugin&lt;/a> to be able to set up webhooks.&lt;/p>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-05-03" role="tabpanel" aria-labelled-by="tabs-05-03-tab" tabindex="5">
&lt;p>Add the following to your &lt;code>dinghy.yml&lt;/code> config:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">templateOrg&lt;/span>: &amp;lt;repo-org&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">templateRepo&lt;/span>: &amp;lt;dinghy-templates-repo&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">gitlabToken&lt;/span>: &amp;lt;abc&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">gitlabEndpoint&lt;/span>: &amp;lt;https://my-endpoint&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>All fields are required.&lt;/p>
&lt;ul>
&lt;li>&lt;code>templateOrg&lt;/code>: VCS organization or namespace where application and template repositories are located&lt;/li>
&lt;li>&lt;code>templateRepo&lt;/code>: VCS repository where module templates are located&lt;/li>
&lt;li>&lt;code>gitlabToken&lt;/code>: GitLab token. This field supports &amp;ldquo;encrypted&amp;rdquo; field references; see &lt;a href="/continuous-deployment/armory-admin/secrets/secrets-kubernetes/">Secrets&lt;/a> for details.&lt;/li>
&lt;li>&lt;code>gitlabEndpoint&lt;/code>: GitLab endpoint&lt;/li>
&lt;/ul>
&lt;p>Under &lt;strong>Settings&lt;/strong> -&amp;gt; &lt;strong>Integrations&lt;/strong> on your project page, point your webhooks to &lt;code>https://&amp;lt;your-gate-url&amp;gt;/webhooks/git/gitlab&lt;/code>. Make sure the server your GitLab install is running on can connect to your Gate URL. Armory also needs to communicate with your GitLab installation. Ensure that connectivity works as well.&lt;/p>
&lt;/div>
&lt;/div>
&lt;h2 id="configure-the-plugin">Configure the plugin&lt;/h2>
&lt;p>In &lt;code>pac-plugin-config.yml&lt;/code>, make sure the &lt;code>version&lt;/code> number is compatible with your Spinnaker instance.&lt;/p>
&lt;details>&lt;summary>&lt;strong>Show the manifest&lt;/strong>&lt;/summary>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6272a4">#------------------------------------------------------------------------------&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6272a4"># Example configuration for enabling the Pipeline as a Code plugin&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#6272a4">#------------------------------------------------------------------------------&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">apiVersion&lt;/span>: spinnaker.armory.io/v1alpha2
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">kind&lt;/span>: SpinnakerService
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">metadata&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">name&lt;/span>: spinnaker
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">spec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">spinnakerConfig&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">profiles&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#6272a4"># Configs in the spinnaker profile get applied to all services&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">spinnaker&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">spinnaker&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">extensibility&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">repositories&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">repository&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">enabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">url&lt;/span>: https://raw.githubusercontent.com/armory-plugins/pluginRepository/master/repositories.json
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">gate&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">spinnaker&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">extensibility&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">plugins&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">Armory.PipelineAsACode&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">enabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">version&lt;/span>: &lt;span style="color:#bd93f9">0.0.5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">echo&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">armorywebhooks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">enabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">forwarding&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">baseUrl&lt;/span>: http://spin-dinghy:8081
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">endpoint&lt;/span>: v1/webhooks
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">spinnaker&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">extensibility&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">plugins&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">Armory.PipelineAsACode&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">enabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">version&lt;/span>: &lt;span style="color:#bd93f9">0.0.5&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/details>&lt;br />
&lt;h2 id="deploy">Deploy&lt;/h2>
&lt;p>This step deploys the Dinghy service and installs the plugin. If you want to see the generated manifest before you deploy, execute &lt;code>kubectl kustomize&lt;/code>.&lt;/p>
&lt;p>Apply the updates to your Kustomization file.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>kubectl apply -k &amp;lt;kustomization-directory-path&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="whats-next">What&amp;rsquo;s next&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="/plugins/pipelines-as-code/install/configure/"}>Configure Pipelines-as-Code Optional Features&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Plugins: Install Pipelines-as-Code in Spinnaker (Halyard)</title><link>/plugins/pipelines-as-code/install/spinnaker-halyard/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/plugins/pipelines-as-code/install/spinnaker-halyard/</guid><description>
&lt;h2 id="installation-overview">Installation overview&lt;/h2>
&lt;p>Installing Pipelines-as-Code consists of these steps:&lt;/p>
&lt;ol>
&lt;li>&lt;a href="#configure-kubernetes-permissions">Configure Kubernetes permissions&lt;/a>.&lt;/li>
&lt;li>&lt;a href="#configure-the-service">Configure the Pipelines-as-Code service&lt;/a>.&lt;/li>
&lt;li>&lt;a href="#deploy-the-service">Deploy the Pipelines-as-Code service&lt;/a> in the same Kubernetes cluster as Spinnaker.&lt;/li>
&lt;li>&lt;a href="#install-the-plugin">Install the plugin&lt;/a> into Spinnaker.&lt;/li>
&lt;/ol>
&lt;h3 id="compatibility">Compatibility&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Spinnaker Version&lt;/th>
&lt;th style="text-align:left">Pipelines-as-Code Service Version&lt;/th>
&lt;th style="text-align:left">Pipelines-as-Code Plugin Version&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">1.30.x&lt;/td>
&lt;td style="text-align:left">2.30&lt;/td>
&lt;td style="text-align:left">0.0.5&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">1.28.x&lt;/td>
&lt;td style="text-align:left">2.28&lt;/td>
&lt;td style="text-align:left">0.0.5&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">1.27.x&lt;/td>
&lt;td style="text-align:left">2.27&lt;/td>
&lt;td style="text-align:left">0.0.5&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">1.26.x&lt;/td>
&lt;td style="text-align:left">2.26&lt;/td>
&lt;td style="text-align:left">0.0.5&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="before-you-begin">Before you begin&lt;/h2>
&lt;ul>
&lt;li>You are running open source Spinnaker.&lt;/li>
&lt;li>You manage your instance using Halyard. If you are using the Spinnaker Operator, see &lt;a href="/plugins/pipelines-as-code/install/spinnaker-operator/"}>Install Pipelines-as-Code in Spinnaker (Spinnaker Operator)&lt;/a>&lt;/li>
&lt;li>You have permissions to create ServiceAccount, ClusterRole, and ClusterRoleBinding objects in your cluster.&lt;/li>
&lt;/ul>
&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Warning&lt;/h4>
The examples in this guide are for a vanilla Spinnaker installation. You may need to adjust them for your environment.
&lt;/div>
&lt;h2 id="configure-kubernetes-permissions">Configure Kubernetes permissions&lt;/h2>
&lt;p>The following manifest creates a ServiceAccount, ClusterRole, and ClusterRoleBinding. Apply the manifest in your &lt;code>spinnaker&lt;/code> namespace.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">apiVersion&lt;/span>: v1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">kind&lt;/span>: ServiceAccount
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">metadata&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">name&lt;/span>: dinghy-sa
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">namespace&lt;/span>: spinnaker
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>---
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">apiVersion&lt;/span>: rbac.authorization.k8s.io/v1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">kind&lt;/span>: ClusterRole
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">metadata&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">name&lt;/span>: dinghy-cluster-role
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">rules&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- &lt;span style="color:#ff79c6">apiGroups&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - extensions
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - ingresses
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - ingresses/status
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">verbs&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - get
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - list
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - watch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - create
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - update
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - patch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - delete
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- &lt;span style="color:#ff79c6">apiGroups&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - networking.k8s.io
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - ingresses
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - ingresses/status
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">verbs&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - get
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - list
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - watch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - create
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - update
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - patch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - delete
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- &lt;span style="color:#ff79c6">apiGroups&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f1fa8c">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - pods
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - endpoints
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">verbs&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - get
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - list
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - watch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - create
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - update
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - patch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - delete
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- &lt;span style="color:#ff79c6">apiGroups&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f1fa8c">&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - services
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - services/finalizers
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - events
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - configmaps
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - secrets
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - namespaces
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - jobs
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">verbs&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - create
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - get
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - list
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - update
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - watch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - patch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - delete
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- &lt;span style="color:#ff79c6">apiGroups&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - batch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - jobs
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">verbs&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - create
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - get
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - list
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - update
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - watch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - patch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- &lt;span style="color:#ff79c6">apiGroups&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - apps
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - extensions
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - deployments
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - deployments/finalizers
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - deployments/scale
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - daemonsets
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - replicasets
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - statefulsets
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">verbs&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - create
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - get
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - list
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - update
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - watch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - patch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - delete
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- &lt;span style="color:#ff79c6">apiGroups&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - monitoring.coreos.com
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - servicemonitors
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">verbs&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - get
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - create
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- &lt;span style="color:#ff79c6">apiGroups&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - spinnaker.armory.io
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f1fa8c">&amp;#39;*&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - spinnakerservices
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">verbs&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - create
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - get
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - list
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - update
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - watch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - patch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- &lt;span style="color:#ff79c6">apiGroups&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - admissionregistration.k8s.io
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">resources&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - validatingwebhookconfigurations
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">verbs&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#f1fa8c">&amp;#39;*&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>---
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">apiVersion&lt;/span>: rbac.authorization.k8s.io/v1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">kind&lt;/span>: ClusterRoleBinding
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">metadata&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">name&lt;/span>: dinghy-cluster-role-binding
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">roleRef&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">apiGroup&lt;/span>: rbac.authorization.k8s.io
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">kind&lt;/span>: ClusterRole
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">name&lt;/span>: dinghy-cluster-role
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">subjects&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- &lt;span style="color:#ff79c6">kind&lt;/span>: ServiceAccount
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">name&lt;/span>: dinghy-sa
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">namespace&lt;/span>: spinnaker
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;h2 id="configure-the-service">Configure the service&lt;/h2>
&lt;p>Create a ConfigMap to contain your Dinghy service configuration. Be sure to check the &lt;code>spinnaker.yml&lt;/code> entry in the &lt;code>data&lt;/code> section to ensure the values match your Spinnaker installation.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">apiVersion&lt;/span>: v1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">kind&lt;/span>: ConfigMap
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">metadata&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">name&lt;/span>: spin-dinghy-config
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">namespace&lt;/span>: spinnaker
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">data&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">dinghy.yml&lt;/span>: |&lt;span style="color:#f1fa8c">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> autoLockPipelines: false
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> dinghyFilename: dinghyfile
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> dinghyIgnoreRegexp2Enabled: false
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> echo:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> baseURL: ${services.echo.baseUrl}
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> enabled: true
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> fiat:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> baseUrl: ${services.fiat.baseUrl}
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> enabled: ${services.fiat.enabled}
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> front50:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> baseUrl: ${services.front50.baseUrl}
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> enabled: ${services.front50.enabled}
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> orca:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> baseUrl: ${services.orca.baseUrl}
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> enabled: ${services.orca.enabled}
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> redis:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> baseUrl: ${services.redis.baseUrl}
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> repositoryRawdataProcessing: false
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> spectator:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> applicationName: ${spring.application.name}
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> webEndpoint:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> enabled: false
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> spinnaker:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> extensibility:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> plugins: {}
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> plugins-root-path: /opt/dinghy/plugins
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> repositories: {}
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> strict-plugin-loading: false
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> githubEndpoint: https://api.github.com
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> githubToken: CHANGEME
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> templateOrg: CHANGEME
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> templateRepo: CHANGEME&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">spinnaker.yml&lt;/span>: |&lt;span style="color:#f1fa8c">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> global.spinnaker.timezone: America/Los_Angeles
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> services:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> clouddriver:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> baseUrl: http://spin-clouddriver:7002
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> enabled: true
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> host: 0.0.0.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> port: 7002
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> clouddriverCaching:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> baseUrl: http://spin-clouddriver-caching:7002
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> enabled: false
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> host: 0.0.0.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> port: 7002
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> clouddriverRo:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> baseUrl: http://spin-clouddriver-ro:7002
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> enabled: false
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> host: 0.0.0.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> port: 7002
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> clouddriverRoDeck:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> baseUrl: http://spin-clouddriver-ro-deck:7002
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> enabled: false
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> host: 0.0.0.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> port: 7002
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> clouddriverRw:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> baseUrl: http://spin-clouddriver-rw:7002
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> enabled: false
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> host: 0.0.0.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> port: 7002
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> deck:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> baseUrl: http://localhost:9000
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> enabled: true
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> host: 0.0.0.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> port: 9000
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> dinghy:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> baseUrl: http://spin-dinghy:8081
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> enabled: true
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> host: 0.0.0.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> port: 8081
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> echo:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> baseUrl: http://spin-echo:8089
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> enabled: true
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> host: 0.0.0.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> port: 8089
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> echoScheduler:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> baseUrl: http://spin-echo-scheduler:8089
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> enabled: false
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> host: 0.0.0.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> port: 8089
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> echoWorker:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> baseUrl: http://spin-echo-worker:8089
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> enabled: false
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> host: 0.0.0.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> port: 8089
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> fiat:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> baseUrl: http://spin-fiat:7003
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> enabled: false
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> host: 0.0.0.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> port: 7003
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> front50:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> baseUrl: http://spin-front50:8080
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> enabled: true
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> host: 0.0.0.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> port: 8080
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> gate:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> baseUrl: http://localhost:8084
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> enabled: true
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> host: 0.0.0.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> port: 8084
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> igor:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> baseUrl: http://spin-igor:8088
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> enabled: false
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> host: 0.0.0.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> port: 8088
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> kayenta:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> baseUrl: http://spin-kayenta:8090
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> enabled: false
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> host: 0.0.0.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> port: 8090
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> monitoringDaemon:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> baseUrl: http://spin-monitoring-daemon:8008
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> enabled: false
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> host: 0.0.0.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> port: 8008
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> orca:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> baseUrl: http://spin-orca:8083
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> enabled: true
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> host: 0.0.0.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> port: 8083
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> redis:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> baseUrl: redis://spin-redis:6379
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> enabled: true
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> host: 0.0.0.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> port: 6379
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> rosco:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> baseUrl: http://spin-rosco:8087
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> enabled: true
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> host: 0.0.0.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> port: 8087
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> terraformer:
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> baseUrl: http://spin-terraformer:7088
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> enabled: false
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> host: 0.0.0.0
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f1fa8c"> port: 7088&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;h3 id="configure-your-repo">Configure your repo&lt;/h3>
&lt;p>Before configuring your repos, ensure you have the following:&lt;/p>
&lt;ol>
&lt;li>A personal access token that has read access to the repo where you store your &lt;code>dinghyfile&lt;/code> and the repo where you store &lt;code>module&lt;/code> files. You should create a Kubernetes &lt;a href="/continuous-deployment/armory-admin/secrets/secrets-kubernetes/">Secret&lt;/a> for your personal access token so you don&amp;rsquo;t store the token in plain text in your config file.&lt;/li>
&lt;li>The organization where the app repos and templates reside; for example, if your repo is &lt;code>armory-io/dinghy-templates&lt;/code>, your &lt;code>template-org&lt;/code> is &lt;code>armory-io&lt;/code>.&lt;/li>
&lt;li>The name of the repo containing your modules; for example, if your repo is &lt;code>armory-io/dinghy-templates&lt;/code>, your &lt;code>template-repo&lt;/code> is &lt;code>dinghy-templates&lt;/code>.&lt;/li>
&lt;/ol>
&lt;ul class="nav nav-tabs justify-content-end" id="tabs-7" role="tablist">
&lt;li class="nav-item">
&lt;button class="nav-link disabled"
id="tabs-07-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-07-00" role="tab"
aria-controls="tabs-07-00" aria-selected="false">
&lt;strong>Version Control&lt;/strong>:
&lt;/button>
&lt;/li>&lt;li class="nav-item">
&lt;button class="nav-link active"
id="tabs-07-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-07-01" role="tab"
aria-controls="tabs-07-01" aria-selected="true">
GitHub
&lt;/button>
&lt;/li>&lt;li class="nav-item">
&lt;button class="nav-link"
id="tabs-07-02-tab" data-bs-toggle="tab" data-bs-target="#tabs-07-02" role="tab"
aria-controls="tabs-07-02" aria-selected="false">
Bitbucket/Stash
&lt;/button>
&lt;/li>&lt;li class="nav-item">
&lt;button class="nav-link"
id="tabs-07-03-tab" data-bs-toggle="tab" data-bs-target="#tabs-07-03" role="tab"
aria-controls="tabs-07-03" aria-selected="false">
GitLab
&lt;/button>
&lt;/li>
&lt;/ul>
&lt;div class="tab-content" id="tabs-7-content">
&lt;div class="tab-body tab-pane fade"
id="tabs-07-00" role="tabpanel" aria-labelled-by="tabs-07-00-tab" tabindex="7">
&lt;/div>
&lt;div class="tab-body tab-pane fade show active"
id="tabs-07-01" role="tabpanel" aria-labelled-by="tabs-07-01-tab" tabindex="7">
&lt;p>Add the following to your &lt;code>dinghy.yml&lt;/code> config:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">templateOrg&lt;/span>: &amp;lt;repo-org&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">templateRepo&lt;/span>: &amp;lt;dinghy-templates-repo&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">githubToken&lt;/span>: &amp;lt;abc&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">githubEndpoint&lt;/span>: &amp;lt;https://api.github.com&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>All fields are required.&lt;/p>
&lt;ul>
&lt;li>&lt;code>templateOrg&lt;/code>: VCS organization or namespace where application and template repositories are located&lt;/li>
&lt;li>&lt;code>templateRepo&lt;/code>: VCS repository where module templates are located&lt;/li>
&lt;li>&lt;code>githubToken&lt;/code>: GitHub token; This field supports &amp;ldquo;encrypted&amp;rdquo; field references; see &lt;a href="/continuous-deployment/armory-admin/secrets/secrets-kubernetes/">Secrets&lt;/a> for details.&lt;/li>
&lt;li>&lt;code>githubEndpoint&lt;/code>: (Default: &lt;code>https://api.github.com&lt;/code>) GitHub API endpoint. Useful if you’re using GitHub Enterprise.&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>GitHub webhooks&lt;/strong>&lt;/p>
&lt;p>Set up webhooks at the organization level for push events. You can do this by going to &lt;code>https://github.com/organizations/&amp;lt;your_org_here&amp;gt;/settings/hooks&lt;/code>.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Set &lt;code>content-type&lt;/code> to &lt;code>application/json&lt;/code>.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Set the &lt;code>Payload URL&lt;/code> to your Gate URL. Depending on whether you configured Gate to use its own DNS name or a path on the same DNS name as Deck, the URL follows one of the following formats:&lt;/p>
&lt;ul>
&lt;li>&lt;code>https://&amp;lt;your-gate-url&amp;gt;/webhooks/git/github&lt;/code> if you have a separate DNS name or port for Gate&lt;/li>
&lt;li>&lt;code>https://&amp;lt;your-spinnaker-url&amp;gt;/api/v1/webhooks/git/github&lt;/code> if you&amp;rsquo;re using a different path for Gate&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;p>If your Gate endpoint is protected by a firewall, you need to configure your firewall to allow inbound webhooks from GitHub&amp;rsquo;s IP addresses. You can find the IPs in this API &lt;a href="https://api.github.com/meta">response&lt;/a>. Read more about &lt;a href="https://help.github.com/articles/about-github-s-ip-addresses/">GitHub&amp;rsquo;s IP addresses&lt;/a>.&lt;/p>
&lt;p>You can configure webhooks on multiple GitHub organizations or repositories to send events to Dinghy. Only a single repository from one organization can be the shared template repository in Dinghy. However, Dinghy can process pipelines from multiple GitHub organizations. You want to ensure the GitHub token configured for Dinghy has permission for all the organizations involved.&lt;/p>
&lt;p>&lt;strong>Pull request validations&lt;/strong>&lt;/p>
&lt;p>When you make a GitHub pull request (PR) and there is a change in a &lt;code>dinghyfile&lt;/code>, Pipelines-as-Code automatically performs a validation for that &lt;code>dinghyfile&lt;/code>. It also updates the GitHub status accordingly. If the validation fails, you see an unsuccessful &lt;code>dinghy&lt;/code> check.&lt;/p>
&lt;figure>
&lt;img src="/images/dinghy/pr_validation/pr_validation.png"
alt="PR that fails validation."/>
&lt;/figure>
&lt;p>Make PR validations mandatory to ensure users only merge working &lt;code>dinghyfiles&lt;/code>.&lt;/p>
&lt;p>Perform the following steps to configure mandatory PR validation:&lt;/p>
&lt;ol>
&lt;li>Go to your GitHub repository.&lt;/li>
&lt;li>Click on &lt;strong>Settings &amp;gt; Branches&lt;/strong>.&lt;/li>
&lt;li>In &lt;strong>Branch protection rules&lt;/strong>, select &lt;strong>Add rule&lt;/strong>.&lt;/li>
&lt;li>Add &lt;code>master&lt;/code> in &lt;strong>Branch name pattern&lt;/strong> so that the rule gets enforced on the &lt;code>master&lt;/code> branch. Note that if this is a new repository with no commits, the &amp;ldquo;dinghy&amp;rdquo; option does not appear. You must first create a &lt;code>dinghyfile&lt;/code> in any branch.&lt;/li>
&lt;li>Select &lt;strong>Require status checks to pass before merging&lt;/strong> and make &lt;strong>dinghy&lt;/strong> required. Select &lt;strong>Include administrators&lt;/strong> as well so that all PRs get validated, regardless of user.&lt;/li>
&lt;/ol>
&lt;p>The following screenshot shows what your GitHub settings should resemble:&lt;/p>
&lt;figure>
&lt;img src="/images/dinghy/pr_validation/branch_mandatory.png"
alt="Configured dinghy PR validation."/>
&lt;/figure>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-07-02" role="tabpanel" aria-labelled-by="tabs-07-02-tab" tabindex="7">
&lt;p>Bitbucket has both cloud and server offerings. See the Atlassian &lt;a href="https://confluence.atlassian.com/bitbucketserver/bitbucket-rebrand-faq-779298912.html">docs&lt;/a> for more on the name change from Stash to Bitbucket Server. Consult your company&amp;rsquo;s Bitbucket support desk if you need help determining what flavor and version of Bitbucket you are using.&lt;/p>
&lt;p>Add the following to your &lt;code>dinghy.yml&lt;/code> config:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">templateOrg&lt;/span>: &amp;lt;repo-org&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">templateRepo&lt;/span>: &amp;lt;dinghy-templates-repo&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">stashUsername&lt;/span>: &amp;lt;stash_user&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">stashToken&lt;/span>: &amp;lt;abc&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">stashEndpoint&lt;/span>: &amp;lt;https://my-endpoint&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>All fields are required.&lt;/p>
&lt;ul>
&lt;li>&lt;code>templateRepo&lt;/code>: VCS repository where module templates are located&lt;/li>
&lt;li>&lt;code>stashUsername&lt;/code>: Stash username&lt;/li>
&lt;li>&lt;code>stashToken&lt;/code>: Stash token. This field supports &amp;ldquo;encrypted&amp;rdquo; field references; see &lt;a href="/continuous-deployment/armory-admin/secrets/secrets-kubernetes/">Secrets&lt;/a> for details.&lt;/li>
&lt;li>&lt;code>stashEndpoint&lt;/code>: Stash API endpoint. If you&amp;rsquo;re using Bitbucket Server, update the endpoint to include the api e.g. &lt;a href="https://your-endpoint-here.com/rest/api/1.0">https://your-endpoint-here.com/rest/api/1.0&lt;/a>&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>If you&amp;rsquo;re using Bitbucket Server, update the endpoint to include the api, e.g. &lt;!-- markdown-link-check-disable -->&lt;code>--stash-endpoint https://your-endpoint-here.com/rest/api/1.0&lt;/code>&lt;!-- markdown-link-check-enable-->&lt;/p>
&lt;/blockquote>
&lt;p>You need to set up webhooks for each project that has the &lt;code>dinghyfile&lt;/code> or module separately. Make the webhook &lt;code>POST&lt;/code> to: &lt;code>https://spinnaker.your-company.com:8084/webhooks/git/bitbucket&lt;/code>. If you&amp;rsquo;re using Stash &lt;code>&amp;lt;v3.11.6&lt;/code>, you need to install the &lt;a href="https://marketplace.atlassian.com/plugins/com.atlassian.stash.plugin.stash-web-post-receive-hooks-plugin/server/overview">webhook plugin&lt;/a> to be able to set up webhooks.&lt;/p>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-07-03" role="tabpanel" aria-labelled-by="tabs-07-03-tab" tabindex="7">
&lt;p>Add the following to your &lt;code>dinghy.yml&lt;/code> config:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">templateOrg&lt;/span>: &amp;lt;repo-org&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">templateRepo&lt;/span>: &amp;lt;dinghy-templates-repo&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">gitlabToken&lt;/span>: &amp;lt;abc&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">gitlabEndpoint&lt;/span>: &amp;lt;https://my-endpoint&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>All fields are required.&lt;/p>
&lt;ul>
&lt;li>&lt;code>templateOrg&lt;/code>: VCS organization or namespace where application and template repositories are located&lt;/li>
&lt;li>&lt;code>templateRepo&lt;/code>: VCS repository where module templates are located&lt;/li>
&lt;li>&lt;code>gitlabToken&lt;/code>: GitLab token. This field supports &amp;ldquo;encrypted&amp;rdquo; field references; see &lt;a href="/continuous-deployment/armory-admin/secrets/secrets-kubernetes/">Secrets&lt;/a> for details.&lt;/li>
&lt;li>&lt;code>gitlabEndpoint&lt;/code>: GitLab endpoint&lt;/li>
&lt;/ul>
&lt;p>Under &lt;strong>Settings&lt;/strong> -&amp;gt; &lt;strong>Integrations&lt;/strong> on your project page, point your webhooks to &lt;code>https://&amp;lt;your-gate-url&amp;gt;/webhooks/git/gitlab&lt;/code>. Make sure the server your GitLab install is running on can connect to your Gate URL. Armory also needs to communicate with your GitLab installation. Ensure that connectivity works as well.&lt;/p>
&lt;/div>
&lt;/div>
&lt;h2 id="deploy-the-service">Deploy the service&lt;/h2>
&lt;p>Replace &lt;code>&amp;lt;version&amp;gt;&lt;/code> with the Pipelines-as-Code service version &lt;a href="#compatibility">compatible&lt;/a> with your Spinnaker version.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">apiVersion&lt;/span>: v1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">kind&lt;/span>: Service
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">metadata&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">name&lt;/span>: spin-dinghy
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">labels&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">app&lt;/span>: spin
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">cluster&lt;/span>: spin-dinghy
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">spec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">selector&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">app&lt;/span>: spin
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">cluster&lt;/span>: spin-dinghy
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">type&lt;/span>: ClusterIP
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">ports&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ff79c6">protocol&lt;/span>: TCP
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">port&lt;/span>: &lt;span style="color:#bd93f9">8081&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">targetPort&lt;/span>: &lt;span style="color:#bd93f9">8081&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>---
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">apiVersion&lt;/span>: apps/v1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">kind&lt;/span>: Deployment
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">metadata&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">name&lt;/span>: spin-dinghy
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">annotations&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">moniker.spinnaker.io/application&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#39;&amp;#34;spin&amp;#34;&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">moniker.spinnaker.io/cluster&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#39;&amp;#34;dinghy&amp;#34;&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">labels&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">app&lt;/span>: spin
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">cluster&lt;/span>: spin-dinghy
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">app.kubernetes.io/name&lt;/span>: dinghy
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">app.kubernetes.io/managed-by&lt;/span>: armory
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">app.kubernetes.io/part-of&lt;/span>: spinnaker
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">app.kubernetes.io/version&lt;/span>: &amp;lt;version&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">spec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">replicas&lt;/span>: &lt;span style="color:#bd93f9">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">selector&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">matchLabels&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">app&lt;/span>: spin
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">cluster&lt;/span>: spin-dinghy
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">template&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">metadata&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">annotations&lt;/span>: &lt;span style="color:#ff79c6">null&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">labels&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">app&lt;/span>: spin
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">cluster&lt;/span>: spin-dinghy
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">app.kubernetes.io/name&lt;/span>: dinghy
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">app.kubernetes.io/managed-by&lt;/span>: armory
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">app.kubernetes.io/part-of&lt;/span>: spinnaker
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">app.kubernetes.io/version&lt;/span>: &amp;lt;version&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">spec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">containers&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ff79c6">name&lt;/span>: dinghy
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">image&lt;/span>: docker.io/armory/dinghy
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">ports&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ff79c6">containerPort&lt;/span>: &lt;span style="color:#bd93f9">8081&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">startupProbe&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">httpGet&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">path&lt;/span>: /health
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">port&lt;/span>: &lt;span style="color:#bd93f9">8081&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">failureThreshold&lt;/span>: &lt;span style="color:#bd93f9">3&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">periodSeconds&lt;/span>: &lt;span style="color:#bd93f9">10&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">successThreshold&lt;/span>: &lt;span style="color:#bd93f9">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">timeoutSeconds&lt;/span>: &lt;span style="color:#bd93f9">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">readinessProbe&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">exec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">command&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - wget
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - --&lt;span style="color:#ff79c6">no&lt;/span>-check-certificate
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - --spider
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - -q
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - http://localhost:8081/health
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">failureThreshold&lt;/span>: &lt;span style="color:#bd93f9">3&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">initialDelaySeconds&lt;/span>: &lt;span style="color:#bd93f9">90&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">periodSeconds&lt;/span>: &lt;span style="color:#bd93f9">10&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">successThreshold&lt;/span>: &lt;span style="color:#bd93f9">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">timeoutSeconds&lt;/span>: &lt;span style="color:#bd93f9">1&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">volumeMounts&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ff79c6">name&lt;/span>: spin-dinghy-config-file
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">mountPath&lt;/span>: /opt/spinnaker/config
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">volumes&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ff79c6">name&lt;/span>: spin-dinghy-config-file
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">secret&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">secretName&lt;/span>: spin-dinghy-config-file
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>Apply the ConfigMap and Deployment manifests in your &lt;code>spinnaker&lt;/code> namespace.&lt;/p>
&lt;h2 id="install-the-plugin">Install the plugin&lt;/h2>
&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">A note about installing plugins in Spinnaker&lt;/h4>
&lt;p>When Halyard adds a plugin to a Spinnaker installation, it adds the plugin repository information to all services, not just the ones the plugin is for. This means that when you restart Spinnaker, each service restarts, downloads the plugin, and checks if an extension exists for that service. Each service restarting is not ideal for large Spinnaker installations due to service restart times. Clouddriver can take an hour or more to restart if you have many accounts configured.&lt;/p>
&lt;p>The Pipelines-as-Code plugin extends Gate and Echo. To avoid every Spinnaker service restarting and downloading the plugin, do not add the plugin using Halyard. Instead, follow the &lt;strong>Local Config&lt;/strong> installation method, in which you configure the plugin in each extended service’s local profile.&lt;/p>
&lt;/div>
&lt;p>The Pipelines-as-Code plugin extends Gate and Echo. You should create or update the extended service&amp;rsquo;s local profile in the same directory as the other Halyard configuration files. This is usually &lt;code>~/.hal/default/profiles&lt;/code> on the machine where Halyard is running.&lt;/p>
&lt;p>Replace &lt;code>&amp;lt;version&amp;gt;&lt;/code> with the plugin version that&amp;rsquo;s compatible with your Spinnaker instance.&lt;/p>
&lt;ol>
&lt;li>
&lt;p>Add the following to &lt;code>gate-local.yml&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">spinnaker&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">extensibility&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">plugins&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">Armory.PipelinesAsCode&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">enabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">version&lt;/span>: &amp;lt;version&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">repositories&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">pipelinesAsCode&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">enabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">url&lt;/span>: https://raw.githubusercontent.com/armory-plugins/pluginRepository/master/repositories.json
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;/li>
&lt;li>
&lt;p>Add the following to &lt;code>echo-local.yml&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">armorywebhooks&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> enabled; true
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">forwarding&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">baseUrl&lt;/span>: http://spin-dinghy:8081
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">endpoint&lt;/span>: v1/webhooks
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">spinnaker&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">extensibility&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">plugins&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">Armory.PipelinesAsCode&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">enabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">version&lt;/span>: &amp;lt;version&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">repositories&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">pipelinesAsCode&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">enabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">url&lt;/span>: https://raw.githubusercontent.com/armory-plugins/pluginRepository/master/repositories.json
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;code>armorywebhooks&lt;/code> config tells the service where to forward events it receives from the repo.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Save your files and apply your changes by running &lt;code>hal deploy apply&lt;/code>.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="whats-next">What&amp;rsquo;s next&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="/plugins/pipelines-as-code/install/configure/"}>Configure Pipelines-as-Code Optional Features&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Plugins: Configure Pipelines-as-Code Optional Features</title><link>/plugins/pipelines-as-code/install/configure/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/plugins/pipelines-as-code/install/configure/</guid><description>
&lt;h2 id="where-to-configure-the-dinghy-service">Where to configure the Dinghy service&lt;/h2>
&lt;ul>
&lt;li>Spinnaker (Halyard): &lt;code>dinghy.yml&lt;/code> section of your ConfigMap&lt;/li>
&lt;li>Spinnaker (Spinnaker Operator): &lt;code>spinnaker-kustomize-patches/plugins/oss/pipelines-as-code/dinghy.yml&lt;/code>&lt;/li>
&lt;li>Armory CD: Either &lt;code>spinnaker-kustomize-patches/armory/features/pipelines-as-code/features.yml&lt;/code> or &lt;code>spinnakerservice.yml&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="auto-lock-pipelines---disable">Auto lock pipelines - disable&lt;/h2>
&lt;p>Set &lt;code>autoLockPipelines: false&lt;/code> to disable lock pipelines in the UI before overwriting changes.&lt;/p>
&lt;ul class="nav nav-tabs justify-content-end" id="tabs-0" role="tablist">
&lt;li class="nav-item">
&lt;button class="nav-link active"
id="tabs-00-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-00" role="tab"
aria-controls="tabs-00-00" aria-selected="true">
Spinnaker
&lt;/button>
&lt;/li>&lt;li class="nav-item">
&lt;button class="nav-link"
id="tabs-00-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-00-01" role="tab"
aria-controls="tabs-00-01" aria-selected="false">
Armory CD
&lt;/button>
&lt;/li>
&lt;/ul>
&lt;div class="tab-content" id="tabs-0-content">
&lt;div class="tab-body tab-pane fade show active"
id="tabs-00-00" role="tabpanel" aria-labelled-by="tabs-00-00-tab" tabindex="0">
&lt;p>Add the following to your &lt;code>dinghy.yml&lt;/code> config:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">autoLockPipelines&lt;/span>: &lt;span style="color:#ff79c6">false&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-00-01" role="tabpanel" aria-labelled-by="tabs-00-01-tab" tabindex="0">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">spec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">spinnakerConfig&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">armory&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">dinghy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">autoLockPipelines&lt;/span>: &lt;span style="color:#ff79c6">false&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="branches">Branches&lt;/h2>
&lt;h3 id="custom-branches">Custom branches&lt;/h3>
&lt;p>Configuring a custom branch is required if you are using a repo that does not use &lt;code>master&lt;/code> or &lt;code>main&lt;/code> as the default branch, or you want to use a branch other than &lt;code>master&lt;/code> or &lt;code>main&lt;/code>.&lt;/p>
&lt;p>By default, Dinghy uses the &lt;code>master&lt;/code> branch in your repository and fallbacks to &lt;code>main&lt;/code> if &lt;code>master&lt;/code> doesn&amp;rsquo;t exist. If you wish to use a different branch in your repository, you can configure that using the &lt;code>repoConfig&lt;/code> tag in your YAML configuration.&lt;/p>
&lt;p>The &lt;code>repoConfig&lt;/code> tag supports a collection of the following values:&lt;/p>
&lt;ul>
&lt;li>
&lt;p>&lt;code>branch&lt;/code> - the name of the branch you wish to use&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;code>provider&lt;/code> - the name of the provider. Pipelines-as-Code supports the following:&lt;/p>
&lt;ul>
&lt;li>&lt;code>github&lt;/code>&lt;/li>
&lt;li>&lt;code>bitbucket-cloud&lt;/code>&lt;/li>
&lt;li>&lt;code>bitbucket-server&lt;/code>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;code>repo&lt;/code> - the name of the repository&lt;/p>
&lt;/li>
&lt;/ul>
&lt;ul class="nav nav-tabs justify-content-end" id="tabs-1" role="tablist">
&lt;li class="nav-item">
&lt;button class="nav-link active"
id="tabs-01-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-01-00" role="tab"
aria-controls="tabs-01-00" aria-selected="true">
Spinnaker
&lt;/button>
&lt;/li>&lt;li class="nav-item">
&lt;button class="nav-link"
id="tabs-01-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-01-01" role="tab"
aria-controls="tabs-01-01" aria-selected="false">
Armory CD
&lt;/button>
&lt;/li>
&lt;/ul>
&lt;div class="tab-content" id="tabs-1-content">
&lt;div class="tab-body tab-pane fade show active"
id="tabs-01-00" role="tabpanel" aria-labelled-by="tabs-01-00-tab" tabindex="1">
&lt;p>Add the following to your &lt;code>dinghy.yml&lt;/code> config:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">repoConfig&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- &lt;span style="color:#ff79c6">branch&lt;/span>: some_branch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">provider&lt;/span>: bitbucket-server
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">repo&lt;/span>: my-bitbucket-repository
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- &lt;span style="color:#ff79c6">branch&lt;/span>: some_branch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">provider&lt;/span>: github
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">repo&lt;/span>: my-github-repository
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-01-01" role="tabpanel" aria-labelled-by="tabs-01-01-tab" tabindex="1">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">spec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">spinnakerConfig&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">profiles&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">dinghy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">repoConfig&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ff79c6">branch&lt;/span>: some_branch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">provider&lt;/span>: bitbucket-server
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">repo&lt;/span>: my-bitbucket-repository
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ff79c6">branch&lt;/span>: some_branch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">provider&lt;/span>: github
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">repo&lt;/span>: my-github-repository
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/div>
&lt;h3 id="multiple-branches">Multiple branches&lt;/h3>
&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Early Access&lt;/h4>
The information below is written for an Early Access feature. &lt;a href="mailto:hello@armory.io">Contact us&lt;/a> if you are interested in using this feature! Your feedback will help shape the development of this feature.
&lt;br>&lt;br>
&lt;b>Do not use Early Access features for production environments.
&lt;/b>
&lt;/div>
&lt;ul class="nav nav-tabs justify-content-end" id="tabs-3" role="tablist">
&lt;li class="nav-item">
&lt;button class="nav-link active"
id="tabs-03-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-03-00" role="tab"
aria-controls="tabs-03-00" aria-selected="true">
Spinnaker
&lt;/button>
&lt;/li>&lt;li class="nav-item">
&lt;button class="nav-link"
id="tabs-03-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-03-01" role="tab"
aria-controls="tabs-03-01" aria-selected="false">
Armory CD
&lt;/button>
&lt;/li>
&lt;/ul>
&lt;div class="tab-content" id="tabs-3-content">
&lt;div class="tab-body tab-pane fade show active"
id="tabs-03-00" role="tabpanel" aria-labelled-by="tabs-03-00-tab" tabindex="3">
&lt;p>Each branch in a repository must be explicitly configured in a separate &lt;code>repoConfig&lt;/code> item. In the example below, Dinghy properly handles changes from two branches, &lt;code>branch_a&lt;/code> and &lt;code>branch_b&lt;/code> in &lt;code>repository-GitHub-repository&lt;/code>. Add the following to your &lt;code>dinghy.yml&lt;/code> profile config:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">multipleBranchesEnabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">repoConfig&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- &lt;span style="color:#ff79c6">branch&lt;/span>: branch_a
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">provider&lt;/span>: github
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">repo&lt;/span>: my-github-repository
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- &lt;span style="color:#ff79c6">branch&lt;/span>: branch_b
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">provider&lt;/span>: github
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">repo&lt;/span>: my-github-repository
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>- &lt;span style="color:#ff79c6">branch&lt;/span>: some_branch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">provider&lt;/span>: bitbucket-server
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">repo&lt;/span>: my-bitbucket-repository
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-03-01" role="tabpanel" aria-labelled-by="tabs-03-01-tab" tabindex="3">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">spec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">spinnakerConfig&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">armory&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">dinghy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">multipleBranchesEnabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">profiles&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">dinghy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">repoConfig&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ff79c6">branch&lt;/span>: some_branch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">provider&lt;/span>: bitbucket-server
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">repo&lt;/span>: my-bitbucket-repository
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - &lt;span style="color:#ff79c6">branch&lt;/span>: some_branch
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">provider&lt;/span>: github
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">repo&lt;/span>: my-github-repository
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="custom-dinghyfile-name">Custom dinghyfile name&lt;/h2>
&lt;p>This changes the name of the file that describes pipelines.&lt;/p>
&lt;ul class="nav nav-tabs justify-content-end" id="tabs-4" role="tablist">
&lt;li class="nav-item">
&lt;button class="nav-link active"
id="tabs-04-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-04-00" role="tab"
aria-controls="tabs-04-00" aria-selected="true">
Spinnaker
&lt;/button>
&lt;/li>&lt;li class="nav-item">
&lt;button class="nav-link"
id="tabs-04-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-04-01" role="tab"
aria-controls="tabs-04-01" aria-selected="false">
Armory CD
&lt;/button>
&lt;/li>
&lt;/ul>
&lt;div class="tab-content" id="tabs-4-content">
&lt;div class="tab-body tab-pane fade show active"
id="tabs-04-00" role="tabpanel" aria-labelled-by="tabs-04-00-tab" tabindex="4">
&lt;p>Add the following to your &lt;code>dinghy.yml&lt;/code> config:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">dinghyFilename&lt;/span>: &amp;lt;your-filename&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-04-01" role="tabpanel" aria-labelled-by="tabs-04-01-tab" tabindex="4">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">spec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">spinnakerConfig&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">armory&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">dinghy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">dinghyFilename&lt;/span>: &amp;lt;your-filename&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="external-persistent-database">External persistent database&lt;/h2>
&lt;p>The Pipelines-as-Code service uses an in-cluster Redis instance to store relationships between pipeline templates and pipeline config files (&lt;code>.dinghyfile&lt;/code>). You can, however, configure the service to use an external persistent database.&lt;/p>
&lt;h3 id="configure-redis">Configure Redis&lt;/h3>
&lt;p>Armory highly recommends that you use an external Redis instance for production use. If Redis becomes unavailable, you need to update your pipeline config files in order for the service to repopulate Redis with the relationships.&lt;/p>
&lt;blockquote>
&lt;p>You can only configure Dinghy to use a password with the default Redis user.&lt;/p>
&lt;/blockquote>
&lt;ul class="nav nav-tabs justify-content-end" id="tabs-5" role="tablist">
&lt;li class="nav-item">
&lt;button class="nav-link active"
id="tabs-05-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-05-00" role="tab"
aria-controls="tabs-05-00" aria-selected="true">
Spinnaker
&lt;/button>
&lt;/li>&lt;li class="nav-item">
&lt;button class="nav-link"
id="tabs-05-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-05-01" role="tab"
aria-controls="tabs-05-01" aria-selected="false">
Armory CD
&lt;/button>
&lt;/li>
&lt;/ul>
&lt;div class="tab-content" id="tabs-5-content">
&lt;div class="tab-body tab-pane fade show active"
id="tabs-05-00" role="tabpanel" aria-labelled-by="tabs-05-00-tab" tabindex="5">
&lt;p>Add the following to your &lt;code>dinghy.yml&lt;/code> config:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">redis&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">baseUrl&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;redis://spin-redis:6379&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">password&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;password&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-05-01" role="tabpanel" aria-labelled-by="tabs-05-01-tab" tabindex="5">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">spec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">spinnakerConfig&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">profiles&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">dinghy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">redis&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;redis://spin-redis:6379&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">password&lt;/span>: &lt;span style="color:#f1fa8c">&amp;#34;&amp;lt;password&amp;gt;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/div>
&lt;h3 id="configure-mysql">Configure MySQL&lt;/h3>
&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Early Access&lt;/h4>
The information below is written for an Early Access feature. &lt;a href="mailto:hello@armory.io">Contact us&lt;/a> if you are interested in using this feature! Your feedback will help shape the development of this feature.
&lt;br>&lt;br>
&lt;b>Do not use Early Access features for production environments.
&lt;/b>
&lt;/div>
&lt;p>The Pipelines-as-Code service can use MySQL to store relationships between pipeline templates and pipeline Dinghy files. Armory recommends an external MySQL instance for production use because it can provide more durability for Pipelines-as-Code. If MySQL becomes unavailable, you need to update your Dinghy files in order to repopulate MySQL with the relationships.&lt;/p>
&lt;blockquote>
&lt;p>Configure the RDBMS driver exactly as described in &lt;a href="https://spinnaker.io/docs/setup/productionize/persistence/clouddriver-sql/#database-setup">Set up Clouddriver to use SQL - Database Setup&lt;/a>. The MySQL database schema must be configured to with:&lt;/p>
&lt;/blockquote>
&lt;ul>
&lt;li>Default character set &lt;code>utfmb4&lt;/code>&lt;/li>
&lt;li>Default collate &lt;code>utf8mb4_unicode_ci&lt;/code>&lt;/li>
&lt;/ul>
&lt;p>First make sure the schema exists in your database.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">CREATE&lt;/span> &lt;span style="color:#ff79c6">SCHEMA&lt;/span> &lt;span style="color:#ff79c6">IF&lt;/span> &lt;span style="color:#ff79c6">NOT&lt;/span> &lt;span style="color:#ff79c6">EXISTS&lt;/span> dinghy &lt;span style="color:#ff79c6">DEFAULT&lt;/span> &lt;span style="color:#8be9fd;font-style:italic">CHARACTER&lt;/span> &lt;span style="color:#ff79c6">SET&lt;/span> utf8mb4 &lt;span style="color:#ff79c6">COLLATE&lt;/span> utf8mb4_unicode_ci;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">CREATE&lt;/span> &lt;span style="color:#ff79c6">USER&lt;/span> &lt;span style="color:#ff79c6">IF&lt;/span> &lt;span style="color:#ff79c6">NOT&lt;/span> &lt;span style="color:#ff79c6">EXISTS&lt;/span> &lt;span style="color:#f1fa8c">&amp;#39;dinghy_service&amp;#39;&lt;/span>&lt;span style="color:#ff79c6">@&lt;/span>&lt;span style="color:#f1fa8c">&amp;#39;%&amp;#39;&lt;/span> IDENTIFIED &lt;span style="color:#ff79c6">BY&lt;/span> &lt;span style="color:#f1fa8c">&amp;#39;${SOME_PASSWORD_HERE}&amp;#39;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">CREATE&lt;/span> &lt;span style="color:#ff79c6">USER&lt;/span> &lt;span style="color:#ff79c6">IF&lt;/span> &lt;span style="color:#ff79c6">NOT&lt;/span> &lt;span style="color:#ff79c6">EXISTS&lt;/span> &lt;span style="color:#f1fa8c">&amp;#39;dinghy_migrate&amp;#39;&lt;/span>&lt;span style="color:#ff79c6">@&lt;/span>&lt;span style="color:#f1fa8c">&amp;#39;%&amp;#39;&lt;/span> IDENTIFIED &lt;span style="color:#ff79c6">BY&lt;/span> &lt;span style="color:#f1fa8c">&amp;#39;${SOME_PASSWORD_HERE}&amp;#39;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">GRANT&lt;/span> &lt;span style="color:#ff79c6">SELECT&lt;/span>, &lt;span style="color:#ff79c6">INSERT&lt;/span>, &lt;span style="color:#ff79c6">UPDATE&lt;/span>, &lt;span style="color:#ff79c6">DELETE&lt;/span>, &lt;span style="color:#ff79c6">CREATE&lt;/span>, &lt;span style="color:#ff79c6">EXECUTE&lt;/span>, &lt;span style="color:#ff79c6">SHOW&lt;/span> &lt;span style="color:#ff79c6">VIEW&lt;/span> &lt;span style="color:#ff79c6">ON&lt;/span> dinghy.&lt;span style="color:#ff79c6">*&lt;/span> &lt;span style="color:#ff79c6">TO&lt;/span> &lt;span style="color:#f1fa8c">&amp;#39;dinghy_service&amp;#39;&lt;/span>&lt;span style="color:#ff79c6">@&lt;/span>&lt;span style="color:#f1fa8c">&amp;#39;%&amp;#39;&lt;/span>;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">GRANT&lt;/span> &lt;span style="color:#ff79c6">SELECT&lt;/span>, &lt;span style="color:#ff79c6">INSERT&lt;/span>, &lt;span style="color:#ff79c6">UPDATE&lt;/span>, &lt;span style="color:#ff79c6">DELETE&lt;/span>, &lt;span style="color:#ff79c6">CREATE&lt;/span>, &lt;span style="color:#ff79c6">DROP&lt;/span>, &lt;span style="color:#ff79c6">REFERENCES&lt;/span>, &lt;span style="color:#ff79c6">INDEX&lt;/span>, &lt;span style="color:#ff79c6">ALTER&lt;/span>, &lt;span style="color:#ff79c6">LOCK&lt;/span> TABLES, &lt;span style="color:#ff79c6">EXECUTE&lt;/span>, &lt;span style="color:#ff79c6">SHOW&lt;/span> &lt;span style="color:#ff79c6">VIEW&lt;/span> &lt;span style="color:#ff79c6">ON&lt;/span> dinghy.&lt;span style="color:#ff79c6">*&lt;/span> &lt;span style="color:#ff79c6">TO&lt;/span> dinghy_migrate&lt;span style="color:#ff79c6">@&lt;/span>&lt;span style="color:#f1fa8c">&amp;#39;%&amp;#39;&lt;/span>;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Next, configure Pipelines-as-Code to use your MySQL database.&lt;/p>
&lt;ul class="nav nav-tabs justify-content-end" id="tabs-8" role="tablist">
&lt;li class="nav-item">
&lt;button class="nav-link active"
id="tabs-08-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-08-00" role="tab"
aria-controls="tabs-08-00" aria-selected="true">
Spinnaker
&lt;/button>
&lt;/li>&lt;li class="nav-item">
&lt;button class="nav-link"
id="tabs-08-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-08-01" role="tab"
aria-controls="tabs-08-01" aria-selected="false">
Armory CD
&lt;/button>
&lt;/li>
&lt;/ul>
&lt;div class="tab-content" id="tabs-8-content">
&lt;div class="tab-body tab-pane fade show active"
id="tabs-08-00" role="tabpanel" aria-labelled-by="tabs-08-00-tab" tabindex="8">
&lt;p>Add the following to your &lt;code>dinghy.yml&lt;/code> config:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">sql&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">baseUrl&lt;/span>: mysql:3306
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">databaseName&lt;/span>: dinghy
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">enabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">password&lt;/span>: &amp;lt;password&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">user&lt;/span>: &amp;lt;user&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-08-01" role="tabpanel" aria-labelled-by="tabs-08-01-tab" tabindex="8">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">spec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">spinnakerConfig&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">profiles&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">dinghy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">sql&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">baseUrl&lt;/span>: mysql:3306
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">databaseName&lt;/span>: dinghy
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">enabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">password&lt;/span>: password
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">user&lt;/span>: user
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/div>
&lt;h3 id="migration-from-redis-to-sql">Migration from Redis to SQL&lt;/h3>
&lt;p>There is a migration strategy to move the relationships from Redis to SQL. In order to do that, you need to have the configuration from your Redis and add the configuration for MySQL as shown previously. When you do this and the pod starts, what happens is that the migration is done automatically by a job. To verify that the migration was done successfully, you can access your database and run the following query:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-sql" data-lang="sql">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">select&lt;/span> &lt;span style="color:#ff79c6">*&lt;/span> &lt;span style="color:#ff79c6">from&lt;/span> executions;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">select&lt;/span> &lt;span style="color:#ff79c6">*&lt;/span> &lt;span style="color:#ff79c6">from&lt;/span> fileurls;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">select&lt;/span> &lt;span style="color:#ff79c6">*&lt;/span> &lt;span style="color:#ff79c6">from&lt;/span> fileurl_childs;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>In the &lt;code>executions&lt;/code> table, you should be able to see one record with the name &lt;code>REDIS_TO_SQL_MIGRATION&lt;/code>.&lt;/p>
&lt;p>In &lt;code>fileurls&lt;/code> and &lt;code>fileurl_childs&lt;/code>, you should be able to see the migration information with the Dinghyfiles, modules, and their relationships.&lt;/p>
&lt;p>After Dinghy finishes the migration, it closes the Redis connection and works in full MySQL mode.&lt;/p>
&lt;h2 id="fiat">Fiat&lt;/h2>
&lt;p>If you have enabled Fiat, add the field &lt;code>fiatUser: &amp;lt;your-service-account&amp;gt;&lt;/code> to your config. Note that the service account has to be in a group that has read/write access to the pipelines you are updating.&lt;/p>
&lt;p>If you have app specific permissions configured, make sure you add the service account. For information on how to create a service account, see &lt;a href="https://www.spinnaker.io/setup/security/authorization/service-accounts/#creating-service-accounts">Creating service accounts&lt;/a>.&lt;/p>
&lt;ul class="nav nav-tabs justify-content-end" id="tabs-9" role="tablist">
&lt;li class="nav-item">
&lt;button class="nav-link active"
id="tabs-09-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-09-00" role="tab"
aria-controls="tabs-09-00" aria-selected="true">
Spinnaker
&lt;/button>
&lt;/li>&lt;li class="nav-item">
&lt;button class="nav-link"
id="tabs-09-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-09-01" role="tab"
aria-controls="tabs-09-01" aria-selected="false">
Armory CD
&lt;/button>
&lt;/li>
&lt;/ul>
&lt;div class="tab-content" id="tabs-9-content">
&lt;div class="tab-body tab-pane fade show active"
id="tabs-09-00" role="tabpanel" aria-labelled-by="tabs-09-00-tab" tabindex="9">
&lt;p>Add the following to your &lt;code>dinghy.yml&lt;/code> config:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">fiatUser&lt;/span>: &amp;lt;your-service-account&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-09-01" role="tabpanel" aria-labelled-by="tabs-09-01-tab" tabindex="9">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">spec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">spinnakerConfig&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">armory&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">dinghy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">fiatUser&lt;/span>: &amp;lt;your-service-account&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="negative-expressions-support">Negative expressions support&lt;/h2>
&lt;p>The Regexp2 engine supports negative expressions, so you don’t need to define patterns for all files to be ignored. You can ignore everything other than required files. For example, in your project you have some project-specific files: &lt;code>file.js&lt;/code>, &lt;code>file.ts&lt;/code>, &lt;code>file.css&lt;/code>. You also have files used by Dinghy: &lt;code>dinghyfile&lt;/code>, &lt;code>minimum-wait.stage.module&lt;/code>, &lt;code>maximum-wait.stage.module&lt;/code>. If you enable &lt;code>dinghyIgnoreRegexp2Enabled&lt;/code>, you can create your &lt;code>.dinghyfile&lt;/code> with one of the following regular expressions:&lt;/p>
&lt;ul>
&lt;li>file.(js|ts|css)&lt;/li>
&lt;li>^(?!.&lt;em>(.stage.module)|(dinghyfile)).&lt;/em>&lt;/li>
&lt;/ul>
&lt;p>Both of those regular expressions product the same result:&lt;/p>
&lt;ul>
&lt;li>file.js -&amp;gt; ignored&lt;/li>
&lt;li>file.ts -&amp;gt; ignored&lt;/li>
&lt;li>file.css -&amp;gt; ignored&lt;/li>
&lt;li>dinghyfile -&amp;gt; processed by Dinghy&lt;/li>
&lt;li>minimum-wait.stage.module -&amp;gt; processed by Dinghy&lt;/li>
&lt;li>maximum-wait.stage.module -&amp;gt; processed by Dinghy&lt;/li>
&lt;/ul>
&lt;p>Add &lt;code>dinghyIgnoreRegexp2Enabled: true&lt;/code> if you want Dinghy to ignore everything other than required files.&lt;/p>
&lt;ul class="nav nav-tabs justify-content-end" id="tabs-10" role="tablist">
&lt;li class="nav-item">
&lt;button class="nav-link active"
id="tabs-10-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-10-00" role="tab"
aria-controls="tabs-10-00" aria-selected="true">
Spinnaker
&lt;/button>
&lt;/li>&lt;li class="nav-item">
&lt;button class="nav-link"
id="tabs-10-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-10-01" role="tab"
aria-controls="tabs-10-01" aria-selected="false">
Armory CD
&lt;/button>
&lt;/li>
&lt;/ul>
&lt;div class="tab-content" id="tabs-10-content">
&lt;div class="tab-body tab-pane fade show active"
id="tabs-10-00" role="tabpanel" aria-labelled-by="tabs-10-00-tab" tabindex="10">
&lt;p>Add the following to your &lt;code>dinghy.yml&lt;/code> config:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">dinghyIgnoreRegexp2Enabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-10-01" role="tabpanel" aria-labelled-by="tabs-10-01-tab" tabindex="10">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">spec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">spinnakerConfig&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">armory&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">dinghy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">dinghyIgnoreRegexp2Enabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="notifications">Notifications&lt;/h2>
&lt;h3 id="slack-notifications">Slack notifications&lt;/h3>
&lt;p>If you &lt;a href="/continuous-deployment/armory-admin/notifications-slack-configure/">configured&lt;/a> Armory CD or Spinnaker to send Slack notifications for pipeline events, you can configure Pipelines-as-Code to send pipeline update results to Slack.&lt;/p>
&lt;ul class="nav nav-tabs justify-content-end" id="tabs-12" role="tablist">
&lt;li class="nav-item">
&lt;button class="nav-link active"
id="tabs-12-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-12-00" role="tab"
aria-controls="tabs-12-00" aria-selected="true">
Spinnaker
&lt;/button>
&lt;/li>&lt;li class="nav-item">
&lt;button class="nav-link"
id="tabs-12-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-12-01" role="tab"
aria-controls="tabs-12-01" aria-selected="false">
Armory CD
&lt;/button>
&lt;/li>
&lt;/ul>
&lt;div class="tab-content" id="tabs-12-content">
&lt;div class="tab-body tab-pane fade show active"
id="tabs-12-00" role="tabpanel" aria-labelled-by="tabs-12-00-tab" tabindex="12">
&lt;p>Add the following to your &lt;code>dinghy.yml&lt;/code> config:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">notifiers&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">enabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span> &lt;span style="color:#6272a4"># Enable to allow any notifier type to occur&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">slack&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">enabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span> &lt;span style="color:#6272a4"># Whether or not Slack notifications are enabled for Dinghy events&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">channel&lt;/span>: &amp;lt;my-channel&amp;gt; &lt;span style="color:#6272a4"># Slack channel where notifications will be sent to&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">github&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">enabled: false # (Default&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>) Whether or not github notifications are enabled for Dinghy events; once `spec.spinnakerConfig.profiles.dinghy.notifiers` are enabled, only enable this if you want both Slack and GitHub notifications at the same time
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-12-01" role="tabpanel" aria-labelled-by="tabs-12-01-tab" tabindex="12">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">spec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">spinnakerConfig&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">armory&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">dinghy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">enabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">notifiers&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">enabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span> &lt;span style="color:#6272a4"># Enable to allow any notifier type to occur&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">slack&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">enabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span> &lt;span style="color:#6272a4"># Whether or not Slack notifications are enabled for dinghy events&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">channel&lt;/span>: my-channel &lt;span style="color:#6272a4"># Slack channel where notifications will be sent to&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">github&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">enabled: false # (Default&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>) Whether or not github notifications are enabled for Dinghy events, once spec.spinnakerConfig.prifles.dinghy.notifiers are enabled. Only enable if you want both slack and github notifications at the same time
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/div>
&lt;figure>
&lt;img src="/images/dinghy-slack-notifications.png"/>
&lt;/figure>
&lt;h3 id="github-notifications">GitHub notifications&lt;/h3>
&lt;p>Dinghy can provide more robust information to GitHub about executed pipeline changes. This information appears as a comment in the PR.&lt;/p>
&lt;p>Keep the following in mind when enabling GitHub notifications:&lt;/p>
&lt;ul>
&lt;li>When using Armory CD versions below 2.26.2, GitHub notifications are not supported with custom endpoints and &lt;a href="https://support.armory.io/support?id=kb_article&amp;amp;sysparm_article=KB0010290">should be disabled due to a known issue&lt;/a>. This issue has been resolved as of &lt;a href="/continuous-deployment/release-notes/rn-armory-spinnaker/armoryspinnaker_v2-26-2/#dinghy---226622610">2.26.2, Dinghy Change #447&lt;/a>.&lt;/li>
&lt;li>Enabling this functionality may lead to a large number of comments on a pull request if, for example, you update a module that is used by multiple pipelines. This can lead to the GitHub UI not loading or GitHub rate limiting cause of related API calls.&lt;/li>
&lt;/ul>
&lt;ul class="nav nav-tabs justify-content-end" id="tabs-15" role="tablist">
&lt;li class="nav-item">
&lt;button class="nav-link active"
id="tabs-15-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-15-00" role="tab"
aria-controls="tabs-15-00" aria-selected="true">
Spinnaker
&lt;/button>
&lt;/li>&lt;li class="nav-item">
&lt;button class="nav-link"
id="tabs-15-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-15-01" role="tab"
aria-controls="tabs-15-01" aria-selected="false">
Armory CD
&lt;/button>
&lt;/li>
&lt;/ul>
&lt;div class="tab-content" id="tabs-15-content">
&lt;div class="tab-body tab-pane fade show active"
id="tabs-15-00" role="tabpanel" aria-labelled-by="tabs-15-00-tab" tabindex="15">
&lt;p>Add the following to your &lt;code>dinghy.yml&lt;/code> config:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">notifiers&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">enabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">github&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">enabled: true # (Default&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>) Whether or not github notifications are enabled for Dinghy events; once `notifiers` are enabled, only enable this if you want both Slack and GitHub notifications at the same time
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-15-01" role="tabpanel" aria-labelled-by="tabs-15-01-tab" tabindex="15">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">spec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">spinnakerConfig&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">profiles&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">dinghy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">notifiers&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">enabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">github&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">enabled: true # (Default&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>) Whether or not github notifications are enabled for Dinghy events, once spec.spinnakerConfig.profles.dinghy.notifiers are enabled
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/div>
&lt;figure>
&lt;img src="/images/plugins/pac/dinghy-github-notifications.jpg"/>
&lt;/figure>
&lt;h2 id="permissions-check-for-a-commit">Permissions check for a commit&lt;/h2>
&lt;p>The &lt;code>userWritePermissionsCheckEnabled&lt;/code> feature, when enabled, verifies if the author of a commit that changed app parameters has sufficient WRITE permission for that app. You can specify a list of authors whose permissions are not valid. This option’s purpose is to skip permissions checks for bots and tools.&lt;/p>
&lt;p>&lt;strong>How this feature works&lt;/strong>&lt;/p>
&lt;p>A webhook generated by commits pushed to a branch contains information about the commit author. Dinghy extracts the author&amp;rsquo;s email and fetches user roles for that email from Fiat. Given the roles, Dinghy fetches app permissions and compares the app’s WRITE roles with the roles of the author. If they match, Dinghy processes the webhook and applies changes from the commit to the app or pipelines. If permissions don’t match, Dinghy rejects the webhook since the author doesn’t have the required write permissions.&lt;/p>
&lt;p>&lt;strong>How to enable&lt;/strong>&lt;/p>
&lt;p>This feature is &lt;strong>disabled by default&lt;/strong> to prevent users from experiencing unexpected application behavior. You can enable the feature by setting &lt;code>userWritePermissionsCheckEnabled&lt;/code> to true. When you omit &lt;code>userWritePermissionsCheckEnabled&lt;/code> or set it to false, Dinghy does not check permissions.&lt;/p>
&lt;p>To skip permissions checks for users such as bots or service accounts, set the value of &lt;code>ignoreUsersWritePermissions&lt;/code> to the comma-delimited list of repo user email addresses.&lt;/p>
&lt;p>When &lt;code>userWritePermissionsCheckEnabled&lt;/code> is false or omitted, &lt;code>ignoreUsersWritePermissions&lt;/code> has no effect.&lt;/p>
&lt;ul class="nav nav-tabs justify-content-end" id="tabs-17" role="tablist">
&lt;li class="nav-item">
&lt;button class="nav-link active"
id="tabs-17-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-17-00" role="tab"
aria-controls="tabs-17-00" aria-selected="true">
Spinnaker
&lt;/button>
&lt;/li>&lt;li class="nav-item">
&lt;button class="nav-link"
id="tabs-17-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-17-01" role="tab"
aria-controls="tabs-17-01" aria-selected="false">
Armory CD
&lt;/button>
&lt;/li>
&lt;/ul>
&lt;div class="tab-content" id="tabs-17-content">
&lt;div class="tab-body tab-pane fade show active"
id="tabs-17-00" role="tabpanel" aria-labelled-by="tabs-17-00-tab" tabindex="17">
&lt;p>Add the following to your &lt;code>dinghy.yml&lt;/code> config:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">userWritePermissionsCheckEnabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">ignoreUsersWritePermissions&lt;/span>: “user1@example.com,user2@example.com”
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-17-01" role="tabpanel" aria-labelled-by="tabs-17-01-tab" tabindex="17">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">spec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">spinnakerConfig&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">config&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">armory&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">dinghy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">userWritePermissionsCheckEnabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">ignoreUsersWritePermissions&lt;/span>: “user1@example.com,user2@example.com”
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/div>
&lt;h2 id="template-formats">Template formats&lt;/h2>
&lt;p>Pipelines-as-Code supports two additional template formats in addition to the default JSON:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://github.com/hashicorp/hcl">HCL&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://yaml.org/">YAML&lt;/a>&lt;/li>
&lt;/ul>
&lt;blockquote>
&lt;p>Selecting one of these parsers means that all of your templates must also be in that format.&lt;/p>
&lt;/blockquote>
&lt;ul class="nav nav-tabs justify-content-end" id="tabs-18" role="tablist">
&lt;li class="nav-item">
&lt;button class="nav-link active"
id="tabs-18-00-tab" data-bs-toggle="tab" data-bs-target="#tabs-18-00" role="tab"
aria-controls="tabs-18-00" aria-selected="true">
Spinnaker
&lt;/button>
&lt;/li>&lt;li class="nav-item">
&lt;button class="nav-link"
id="tabs-18-01-tab" data-bs-toggle="tab" data-bs-target="#tabs-18-01" role="tab"
aria-controls="tabs-18-01" aria-selected="false">
Armory CD
&lt;/button>
&lt;/li>
&lt;/ul>
&lt;div class="tab-content" id="tabs-18-content">
&lt;div class="tab-body tab-pane fade show active"
id="tabs-18-00" role="tabpanel" aria-labelled-by="tabs-18-00-tab" tabindex="18">
&lt;p>Add the following to your &lt;code>dinghy.yml&lt;/code> config:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">parserFormat&lt;/span>: &amp;lt;parser-format&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;div class="tab-body tab-pane fade"
id="tabs-18-01" role="tabpanel" aria-labelled-by="tabs-18-01-tab" tabindex="18">
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">spec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">spinnakerConfig&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">profiles&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">dinghy&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">parserFormat&lt;/span>: &amp;lt;parser-format&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;/div>
&lt;/div>
&lt;p>Replace &lt;code>&amp;lt;parser-format&lt;/code> with one of the parsers:&lt;/p>
&lt;ul>
&lt;li>&lt;code>json&lt;/code> (Default)&lt;/li>
&lt;li>&lt;code>yaml&lt;/code>&lt;/li>
&lt;li>&lt;code>hcl&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="whats-next">What&amp;rsquo;s next&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="/plugins/pipelines-as-code/use/"}>Use Pipelines-as-Code in Armory Continuous Deployment&lt;/a>&lt;/li>
&lt;/ul></description></item></channel></rss>