<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Spinnaker – Set Up Triggers</title>
    <link>https://deploy-preview-629--spinnaker-io.netlify.app/docs/setup/other_config/triggers/</link>
    <description>Recent content in Set Up Triggers on Spinnaker</description>
    <generator>Hugo -- gohugo.io</generator>
    
	  <atom:link href="https://deploy-preview-629--spinnaker-io.netlify.app/docs/setup/other_config/triggers/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Docs: Configuring GitHub Webhooks</title>
      <link>https://deploy-preview-629--spinnaker-io.netlify.app/docs/setup/other_config/triggers/github/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://deploy-preview-629--spinnaker-io.netlify.app/docs/setup/other_config/triggers/github/</guid>
      <description>
        
        
        &lt;p&gt;These steps show you how to configure webhook push events to send to Spinnaker from a single GitHub repository.&lt;/p&gt;
&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;You need Spinnaker&amp;rsquo;s API running on an endpoint that is publicly reachable.
Ideally this means that you&amp;rsquo;ve configured

&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/setup/other_config/security/authentication&#34;&gt;authentication&lt;/a&gt;
. This is required to allow
GitHub&amp;rsquo;s webhooks to reach Spinnaker.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re unsure of what your Spinnaker API endpoint is, check the value of
&lt;code&gt;services.gate.baseUrl&lt;/code&gt; or your ingress or services.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You need a 
&lt;a href=&#34;https://help.github.com/articles/create-a-repo/&#34; target=&#34;_blank&#34;&gt;GitHub
repository&lt;/a&gt;

to send Webhooks from.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;configuring-your-github-webhook&#34;&gt;Configuring your GitHub webhook&lt;/h2&gt;
&lt;p&gt;Under your GitHub repository, navigate to &lt;strong&gt;Settings&lt;/strong&gt; &amp;gt; &lt;strong&gt;Webhooks&lt;/strong&gt; &amp;gt; &lt;strong&gt;Add
Webhook&lt;/strong&gt;. Here, provide the following values to the form shown below:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Payload URL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Given that the above 
&lt;a href=&#34;#prerequisites&#34;&gt;prerequisite&lt;/a&gt;
 API endpoint is &lt;code&gt;$ENDPOINT&lt;/code&gt;, enter &lt;code&gt;$ENDPOINT/webhooks/git/github&lt;/code&gt;. &lt;em&gt;While all GitHub webhooks share an endpoint in Spinnaker, there is no practical limit to the number of repositories you can configure to send notifications&lt;/em&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Content type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;application/json&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Secret&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The value is up to you, and must be provided to any GitHub webhooks triggers that you configure within Spinnaker. It&amp;rsquo;s used to ensure that only GitHub can trigger your pipelines, not an imposter.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;figure&gt;&lt;img src=&#34;./github-webhook.png&#34;/&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;spinnaker-configuration&#34;&gt;Spinnaker configuration&lt;/h2&gt;
&lt;p&gt;Aall that&amp;rsquo;s needed is pipeline trigger configuration. An example of that can be found in

&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/pipeline/triggers/github/&#34;&gt;this guide&lt;/a&gt;
.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Amazon AWS Pub/Sub</title>
      <link>https://deploy-preview-629--spinnaker-io.netlify.app/docs/setup/other_config/triggers/amazon/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://deploy-preview-629--spinnaker-io.netlify.app/docs/setup/other_config/triggers/amazon/</guid>
      <description>
        
        
        &lt;p&gt;Spinnaker pipelines can be triggered from a queue in 
&lt;a href=&#34;https://aws.amazon.com/sqs/&#34; target=&#34;_blank&#34;&gt;Amazon Simple Queue Service (SQS)&lt;/a&gt;
 that receives new notifications from 
&lt;a href=&#34;https://aws.amazon.com/sns/&#34; target=&#34;_blank&#34;&gt;Amazon Simple Notification Service (SNS)&lt;/a&gt;
.&lt;/p&gt;
&lt;h1 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h1&gt;
&lt;p&gt;You need an AWS Account and the 
&lt;a href=&#34;https://aws.amazon.com/cli/&#34; target=&#34;_blank&#34;&gt;AWS Command Line Interface (cli)&lt;/a&gt;
 installed locally and configured with credentials that allow you to manage your AWS cloud resources.&lt;/p&gt;
&lt;h2 id=&#34;creating-an-simple-notification-service-sns-topic&#34;&gt;Creating an Simple Notification Service (SNS) Topic&lt;/h2&gt;
&lt;p&gt;Use the AWS Command Line tool or the AWS Console website to create a SNS Topic that will receive the messages destined for the queue and Spinnaker. You can do this by running the following commands:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt; bash4.4$ export AWS_TOPIC_NAME=aws-pubsub-test-topic
 bash4.4$ aws sns create-topic --name ${AWS_TOPIC_NAME}
 {
    &amp;#34;TopicArn&amp;#34;: &amp;#34;arn:aws:sns:us-east-1:1234567890:aws-pubsub-test-topic&amp;#34;
 }
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;Make a note of the TopicArn. You will need this to configure Echo via the echo-local.yml file to tell Spinnaker to subscribe to this topic.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;creating-an-simple-queue-service-sqs-queue-optional&#34;&gt;Creating an Simple Queue Service (SQS) Queue (Optional)&lt;/h2&gt;
&lt;p&gt;At this point, you can also create an SQS Queue that will receive the notification messages.&lt;/p&gt;
&lt;p&gt;Spinnaker will do this part for you, provided that you specify what would be a valid name for the QueueARN in the &lt;code&gt;echo-local.yml&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;d like to create the queue yourself manually, follow these instructions. Otherwise skip to
the section below about 
&lt;a href=&#34;#configuring-an-s3-bucket-to-send-notifications&#34;&gt;Configuring your S3 Bucket&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;Use the AWS Command Line tool or the AWS Console website to create an SQS Queue that Spinnaker will listen to. You can do this by running the following commands:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt; # Create the queue
 bash4.4$ export AWS_QUEUE_NAME=aws-pubsub-test-queue
 bash4.4$ aws sqs create-queue --queue-name ${AWS_QUEUE_NAME}
 {
    &amp;#34;QueueUrl&amp;#34;: &amp;#34;https://us-east-1.queue.amazonaws.com/1234567890/aws-pubsub-test-queue&amp;#34;
 }
 # Add the permission for the topic to send messages to the queue
 bash4.4$ aws sqs add-permission --queue-url &amp;lt;QUEUE_URL&amp;gt; --aws-account-ids 1234567890 \
 --label spinnaker-pubsub --actions SendMessage
 # Now get the Queue ARN, you will need this for Spinnaker.
 bash4.4$ aws sqs get-queue-attributes --queue-url &amp;lt;QUEUE_URL&amp;gt; --attribute-names QueueArn
 {
    &amp;#34;Attributes&amp;#34;: {
        &amp;#34;QueueArn&amp;#34;: &amp;#34;arn:aws:sqs:us-east-1:1234567890:aws-pubsub-test-queue&amp;#34;
    }
 }
 # Now subscribe the queue to the topic you created above.
 bash4.4$ aws sns subscribe --topic-arn arn:aws:sns:us-east-1:12345467890:aws-pubsub-test-topic \
 --protocol sqs --notification-endpoint arn:aws:sqs:us-east-1:1234567890:aws-pubsub-test-queue
 {
    &amp;#34;SubscriptionArn&amp;#34;: &amp;#34;arn:aws:sns:us-east-1:1234567890:aws-pubsub-test-topic:e8d02657-e92c-43aa-a785-8d93cb8738fd&amp;#34;
 }
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;Make a note of this &lt;code&gt;QueueArn&lt;/code&gt;, as you will need to provide it to Spinnaker in the echo-local.yml file.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You have now set up an SNS topic and created a SQS queue which is subscribed to the topic. When messages are delivered to the topic, they will be delivered to the queue.&lt;/p&gt;
&lt;h2 id=&#34;configuring-an-s3-bucket-to-send-notifications&#34;&gt;Configuring an S3 bucket to send notifications&lt;/h2&gt;
&lt;p&gt;The next step is to create an S3 bucket, or use an existing bucket, and automatically deliver notifications when a file is uploaded. The following commands can be used to create a bucket and configure the notifications.&lt;/p&gt;
&lt;p&gt;Now you have to tell AWS that your SNS topic can receive messages from your S3 bucket. To do this, you&amp;rsquo;ll need to change the Access Policy for the SNS topic. You can do this by issuing the following command, swapping out the values with the resources created above:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;# CREATE THE BUCKET
bash4.4$ export AWS_TOPIC_ARN=&amp;lt;INSERT TOPIC ARN HERE&amp;gt;
bash4.4$ export AWS_PUBSUB_BUCKET=spin-pubsub-test-bucket
bash4.4$ aws s3 mb s3://${AWS_PUBSUB_BUCKET}/
make_bucket: spin-pubsub-test-bucket

bash4.4$ aws sns set-topic-attributes --topic-arn ${AWS_TOPIC_ARN} --attribute-name Policy --attribute-value \
&amp;#34;{\&amp;#34;Version\&amp;#34;:\&amp;#34;2008-10-17\&amp;#34;,\&amp;#34;Id\&amp;#34;:\&amp;#34;__default_policy_ID\&amp;#34;,\&amp;#34;Statement\&amp;#34;:[{\&amp;#34;Sid\&amp;#34;:\&amp;#34;s3Publish\&amp;#34;,\
\&amp;#34;Effect\&amp;#34;:\&amp;#34;Allow\&amp;#34;,\&amp;#34;Principal\&amp;#34;:{\&amp;#34;AWS\&amp;#34;:\&amp;#34;*\&amp;#34;},\&amp;#34;Action\&amp;#34;:[\&amp;#34;SNS:GetTopicAttributes\&amp;#34;,\
\&amp;#34;SNS:Publish\&amp;#34;],\&amp;#34;Resource\&amp;#34;:\&amp;#34;${AWS_TOPIC_ARN}\&amp;#34;,\&amp;#34;Condition\&amp;#34;:{\&amp;#34;ArnLike\&amp;#34;:\
{\&amp;#34;aws:SourceArn\&amp;#34;:\&amp;#34;arn:aws:s3:::${AWS_PUBSUB_BUCKET}\&amp;#34;}}}]}&amp;#34;
bash4.4$
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now that you&amp;rsquo;ve given your topic permission to have messages published to it, you can update your bucket&amp;rsquo;s &lt;code&gt;put-bucket-notification-configuration&lt;/code&gt; with the following &lt;code&gt;spin-pubsub-notification.json&lt;/code&gt;. You&amp;rsquo;ll need to swap out any values for the values for your configuration.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt; # You need to create a file with the notification information in json format
 bash4.4$ cat &amp;lt;&amp;lt; EOF &amp;gt; /tmp/spin-pubsub-notification.json
 {
    &amp;#34;TopicConfigurations&amp;#34;: [
        {
            &amp;#34;TopicArn&amp;#34;: &amp;#34;${AWS_TOPIC_ARN}&amp;#34;,
            &amp;#34;Events&amp;#34;: [
                &amp;#34;s3:ObjectCreated:*&amp;#34;
            ]
        }
    ]
 }
EOF
 bash4.4$ aws s3api put-bucket-notification-configuration --bucket ${AWS_PUBSUB_BUCKET} \
 --notification-configuration file:///tmp/spin-pubsub-notification.json    
 bash4.4$
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;Congratulations! You have now done all of the configuration in AWS to send pubsub messages. All we have to do now is configure Spinnaker to subscribe to and retrieve these messages.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;writing-your-echo-configuration&#34;&gt;Writing your Echo configuration&lt;/h2&gt;
&lt;p&gt;Define the details regarding your subscription in your &lt;code&gt;echo-local.yml&lt;/code&gt; file.
If you are interested in contributing to Spinnaker in code but haven&amp;rsquo;t found something simple to start on, this might be just the thing for you!&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;pubsub&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;enabled&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;amazon&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;enabled&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;subscriptions&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;aws-pubsub-test-subscription&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;topicARN&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;arn:aws:sns:us-east-1:1234567890:aws-pubsub-test-topic&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;queueARN&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;arn:aws:sqs:us-east-1:1234567890:aws-pubsub-test-queue&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;messageFormat&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;S3&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;turning-on-amazon-as-an-option-in-the-ui-deck&#34;&gt;Turning on Amazon as an option in the UI (Deck)&lt;/h2&gt;
&lt;p&gt;As of release 1.14.6, Amazon pubsub support is not supported by default in the UI, even if it&amp;rsquo;s configured in echo-local.yaml as laid out above. In order to get &lt;code&gt;amazon&lt;/code&gt; to show up in the list of pubsub, you must make a slight change to the &lt;code&gt;settings-local.js&lt;/code&gt; file that is deployed with Deck.&lt;/p&gt;
&lt;p&gt;Add a line like so:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;window.spinnakerSettings.pubsubProviders = [&amp;#39;google&amp;#39;, &amp;#39;amazon&amp;#39;];
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Once you have done that, redeploy Spinnaker.  After the new versions of Echo, Gate and Deck have come up and reported as healthy, you should be able to see this in the UI.&lt;/p&gt;
&lt;h2 id=&#34;troubleshooting&#34;&gt;Troubleshooting&lt;/h2&gt;
&lt;p&gt;If you don&amp;rsquo;t see your subscriptions after going through these steps, take a look at your Echo logs as the service starts up.&lt;/p&gt;
&lt;p&gt;You should see messages from the SQS Provider telling you that the Subscriptions have turned on.
Messaages like this should appear near the top of the logs.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;INFO 1 --- [           main] c.n.s.e.p.aws.SQSSubscriberProvider      : Bootstrapping SQS for SNS topic: arn:aws:sns:us-east-1:1234567890:aws-pubsub-test
INFO 1 --- [           main] ubsubProperties$AmazonPubsubSubscription : Using message format: S3 to process artifacts for subscription: aws-pubsub-test
INFO 1 --- [pool-2-thread-1] c.n.s.echo.pubsub.aws.SQSSubscriber      : Starting arn:aws:sqs:us-east-1:1234567890:aws-pubsub-queue/SQSSubscriber
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;If things aren&amp;rsquo;t working and you want additional info, you can add the following lines to echo-local.yml to get debugging information specific to pubsub.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;logging:
  level:
    com.netflix.spinnaker.echo.pubsub.aws: DEBUG
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This will print out a message each time that Spinnaker goes out and attempts to pull messages from the queue.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Google Cloud Pub/Sub</title>
      <link>https://deploy-preview-629--spinnaker-io.netlify.app/docs/setup/other_config/triggers/google/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://deploy-preview-629--spinnaker-io.netlify.app/docs/setup/other_config/triggers/google/</guid>
      <description>
        
        
        &lt;p&gt;Spinnaker pipelines can be triggered using a 
&lt;a href=&#34;https://cloud.google.com/pubsub/docs/overview&#34; target=&#34;_blank&#34;&gt;Google Pub/Sub
subscription&lt;/a&gt;
.&lt;/p&gt;
&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;You need a 
&lt;a href=&#34;https://cloud.google.com/&#34; target=&#34;_blank&#34;&gt;Google Cloud Platform&lt;/a&gt;

(GCP) project to with the 
&lt;a href=&#34;https://pantheon.corp.google.com/apis/api/pubsub.googleapis.com&#34; target=&#34;_blank&#34;&gt;Pub/Sub API
enabled&lt;/a&gt;
,
and 
&lt;a href=&#34;https://cloud.google.com/sdk/downloads&#34; target=&#34;_blank&#34;&gt;&amp;lt;code&amp;gt;gcloud&amp;lt;/code&amp;gt;&lt;/a&gt;

installed locally.  You can check that &lt;code&gt;gcloud&lt;/code&gt; is installed and authenticated
by running:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gcloud info
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;a-pubsub-subscription&#34;&gt;A Pub/Sub subscription&lt;/h2&gt;
&lt;p&gt;The Pub/Sub integration can be used to either:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Start pipelines by sending Pub/Sub messages from a system you own.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Start pipelines using Pub/Sub messages originating from a Google Cloud
system, such as 
&lt;a href=&#34;https://cloud.google.com/storage/&#34; target=&#34;_blank&#34;&gt;Google Cloud Storage&lt;/a&gt;
,
or 
&lt;a href=&#34;https://cloud.google.com/container-registry/&#34; target=&#34;_blank&#34;&gt;Google Container Registry&lt;/a&gt;
.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Configuration and setup for all cases are described below.&lt;/p&gt;
&lt;h3 id=&#34;sending-your-own-pubsub-messages&#34;&gt;Sending your own Pub/Sub messages&lt;/h3&gt;
&lt;p&gt;First, record the fact that your &lt;code&gt;$MESSAGE_FORMAT&lt;/code&gt; is &lt;code&gt;CUSTOM&lt;/code&gt;, this will be
needed later.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;MESSAGE_FORMAT&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;CUSTOM
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You need a topic with name &lt;code&gt;$TOPIC&lt;/code&gt; to publish messages to:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gcloud beta pubsub topics create &lt;span style=&#34;color:#000&#34;&gt;$TOPIC&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This topic needs a a pull subscription named &lt;code&gt;$SUBSCRIPTION&lt;/code&gt; to let Spinnaker
read messages from. &lt;em&gt;It is important that Spinnaker is the only system reading
from this single subscription. You can always create more subscriptions for
this topic if you want multiple systems to recieve the same messages.&lt;/em&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gcloud beta pubsub subscriptions create &lt;span style=&#34;color:#000&#34;&gt;$SUBSCRIPTION&lt;/span&gt; --topic &lt;span style=&#34;color:#000&#34;&gt;$TOPIC&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;At this point, you can use the 
&lt;a href=&#34;https://cloud.google.com/pubsub/docs/publisher&#34; target=&#34;_blank&#34;&gt;publisher
guide&lt;/a&gt;
 to
learn how to publish messages programmatically to the topic you have created.&lt;/p&gt;
&lt;p&gt;Note that your topic messages need to be valid JSON, otherwise an exception
will be raised in the &lt;code&gt;echo&lt;/code&gt; service and your pipeline will not be triggered.&lt;/p&gt;
&lt;h3 id=&#34;receiving-messages-from-google-cloud-storage-gcs&#34;&gt;Receiving messages from Google Cloud Storage (GCS)&lt;/h3&gt;
&lt;p&gt;First, record the fact that your &lt;code&gt;$MESSAGE_FORMAT&lt;/code&gt; is &lt;code&gt;GCS&lt;/code&gt;, this will be
needed later.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;MESSAGE_FORMAT&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;GCS
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Given that you&amp;rsquo;ll be listening to changes in a GCS bucket (&lt;code&gt;$BUCKET&lt;/code&gt;), the
following command will create (or use an existing) topic with name &lt;code&gt;$TOPIC&lt;/code&gt; to
publish messages to:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gsutil notification create -t &lt;span style=&#34;color:#000&#34;&gt;$TOPIC&lt;/span&gt; -f json gs://&lt;span style=&#34;color:#4e9a06&#34;&gt;${&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;BUCKET&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Finally, create a pull subscription named &lt;code&gt;$SUBSCRIPTION&lt;/code&gt; to listen to changes
to this topic:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gcloud beta pubsub subscriptions create &lt;span style=&#34;color:#000&#34;&gt;$SUBSCRIPTION&lt;/span&gt; --topic &lt;span style=&#34;color:#000&#34;&gt;$TOPIC&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To understand the format that GCS will publish messages in, please read the

&lt;a href=&#34;https://cloud.google.com/storage/docs/pubsub-notifications&#34; target=&#34;_blank&#34;&gt;reference
material&lt;/a&gt;
.&lt;/p&gt;
&lt;h3 id=&#34;receiving-messages-from-google-container-registry-gcr&#34;&gt;Receiving messages from Google Container Registry (GCR)&lt;/h3&gt;


&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;
The GCR message type extracts the image digest by default, but Google App Engine doesn’t support deploying from a digest. So if you’re using artifacts from GCR messages to trigger a GAE deployment, you need to use a custom message template. The template must copy the image’s tag into the artifact’s reference and version fields.
&lt;/div&gt;

&lt;p&gt;First, record the fact that your &lt;code&gt;$MESSAGE_FORMAT&lt;/code&gt; is &lt;code&gt;GCR&lt;/code&gt;, this will be
needed later.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;MESSAGE_FORMAT&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;GCR
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Given a project name &lt;code&gt;$PROJECT&lt;/code&gt;, GCR will always try to publish messages to a
topic named &lt;code&gt;projects/${PROJECT}/topics/gcr&lt;/code&gt; for any repositories in
&lt;code&gt;$PROJECT&lt;/code&gt;. To ensure that GCR has a valid topic to publish to, try to create
the following topic:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gcloud beta pubsub topics create projects/&lt;span style=&#34;color:#4e9a06&#34;&gt;${&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;PROJECT&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;}&lt;/span&gt;/topics/gcr
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If the command fails with &amp;ldquo;Resource already exists in the project&amp;rdquo;, then the
topic already exists (which is OK).&lt;/p&gt;
&lt;p&gt;Finally, create a pull subscription named &lt;code&gt;$SUBSCRIPTION&lt;/code&gt; to listen to changes
to this topic:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gcloud beta pubsub subscriptions create &lt;span style=&#34;color:#000&#34;&gt;$SUBSCRIPTION&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;  --topic projects/&lt;span style=&#34;color:#4e9a06&#34;&gt;${&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;PROJECT&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;}&lt;/span&gt;/topics/gcr
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To understand the format that GCR will publish messages in, please read the

&lt;a href=&#34;https://cloud.google.com/container-registry/docs/configuring-notifications&#34; target=&#34;_blank&#34;&gt;reference
material&lt;/a&gt;
.&lt;/p&gt;
&lt;h2 id=&#34;credentials&#34;&gt;Credentials&lt;/h2&gt;
&lt;p&gt;Spinnaker needs a 
&lt;a href=&#34;https://cloud.google.com/compute/docs/access/service-accounts&#34; target=&#34;_blank&#34;&gt;service
account&lt;/a&gt;
 to
authenticate as against GCP, with the &lt;code&gt;roles/pubsub.subscriber&lt;/code&gt; role enabled. If
you don&amp;rsquo;t already have such a service account with the corresponding JSON key
downloaded, you can run the following commands to do so:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;SERVICE_ACCOUNT_NAME&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;spinnaker-pubsub-account
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;SERVICE_ACCOUNT_DEST&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;~/.gcp/pubsub-account.json
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gcloud iam service-accounts create &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#000&#34;&gt;$SERVICE_ACCOUNT_NAME&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;    --display-name &lt;span style=&#34;color:#000&#34;&gt;$SERVICE_ACCOUNT_NAME&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;SA_EMAIL&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;gcloud iam service-accounts list &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;    --filter&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;displayName:&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$SERVICE_ACCOUNT_NAME&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;    --format&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;value(email)&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;PROJECT&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;gcloud config get-value project&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gcloud projects add-iam-policy-binding &lt;span style=&#34;color:#000&#34;&gt;$PROJECT&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;    --role roles/pubsub.subscriber --member serviceAccount:&lt;span style=&#34;color:#000&#34;&gt;$SA_EMAIL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mkdir -p &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;dirname &lt;span style=&#34;color:#000&#34;&gt;$SERVICE_ACCOUNT_DEST&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;gcloud iam service-accounts keys create &lt;span style=&#34;color:#000&#34;&gt;$SERVICE_ACCOUNT_DEST&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;    --iam-account &lt;span style=&#34;color:#000&#34;&gt;$SA_EMAIL&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;div class=&#34;alert alert-warning&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;Warning&lt;/h4&gt;
&lt;p&gt;It&amp;rsquo;s possible to restrict access to a subscription by service
account in GCP. If this is how your subscription is configured, you may need
to grant &lt;code&gt;$SA_EMAIL&lt;/code&gt; additional permissions following the instructions on the
&lt;p&gt;&lt;a href=&#34;https://cloud.google.com/pubsub/docs/access_control&#34; target=&#34;_blank&#34;&gt;Pub/Sub IAM page&lt;/a&gt;&lt;/p&gt;
&lt;/p&gt;

&lt;/div&gt;

&lt;p&gt;Once you have run these commands, your GCS JSON key is sitting in a file
called &lt;code&gt;$SERVICE_ACCOUNT_DEST&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;editing-your-pubsub-settings&#34;&gt;Editing your Pub/Sub settings&lt;/h2&gt;
&lt;p&gt;All that&amp;rsquo;s required are the following values:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# See &amp;#39;Credentials&amp;#39; section above&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;SERVICE_ACCOUNT_DEST&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# See &amp;#39;A Pub/Sub Subscription&amp;#39; section above&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;MESSAGE_FORMAT&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;PROJECT&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;SUBSCRIPTION&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# You can pick this name, it&amp;#39;s meant to be human-readable&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;PUBSUB_NAME&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;my-google-pubsub
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;First, make sure that Google Pub/Sub support is enabled.  Add the following to &lt;code&gt;echo-local.yml&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yml&#34; data-lang=&#34;yml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;pubsub&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;enabled&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;google&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;enabled&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;pubsubType&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;GOOGLE&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;subscriptions&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;my-gcs-subscription&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;project&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;my-project&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;subscriptionName&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;my-gcs-subscription&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;jsonPath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;/path/to/my-gce-account.json&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;ackDeadlineSeconds&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;messageFormat&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;GCS&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;publishers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[]&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
      </description>
    </item>
    
  </channel>
</rss>
