cloud-build-notifiers icon indicating copy to clipboard operation
cloud-build-notifiers copied to clipboard

[enhancement]Customize Slack Notification message

Open daisuke-fukuda opened this issue 4 years ago • 18 comments

I want custom notification message.

Now it is very simple message, I can't specify which trigger was pushed when using multiple CloudBuild settings.

If there are these option , It will be very useful.

  • CloudBuild trigger name
  • linked repository, branch, commit hash
  • trigger event

daisuke-fukuda avatar Jul 07 '20 03:07 daisuke-fukuda

I vouch for this feature! It would be very useful because the message that are displayed now are very generic.

victuos avatar Jul 08 '20 14:07 victuos

I agree. Having more details will be useful in slack notifications. We have multiple triggers and today in slack we don't know which one triggered the build.

akomarovsky avatar Aug 03 '20 08:08 akomarovsky

Hi all, we on the Cloud Build team are definitely aware of this FR and are working on short-term and long-term plans! Please stay tuned...

LOZORD avatar Aug 10 '20 13:08 LOZORD

hi @LOZORD so maybe I should close the #63?

mn7z avatar Aug 10 '20 19:08 mn7z

Sure, but I really do appreciate for your contribution 😄 Would using Golang templates satisfy your use case? Do you have any preference between that templating language and Mustache for example? We are considering a few different options for templating.

LOZORD avatar Aug 10 '20 20:08 LOZORD

Personally I don't have preference as the goal is pretty simple. The PR used go templates because it was convenient and in stdlib ;)

mn7z avatar Aug 11 '20 06:08 mn7z

Hi all, we on the Cloud Build team are definitely aware of this FR and are working on short-term and long-term plans! Please stay tuned...

@LOZORD Hi, I've been waiting for this feature for quite some time, any progress?

daisuke-fukuda avatar Dec 02 '20 05:12 daisuke-fukuda

If the GCP version of this will not be available soon, I propose just merging https://github.com/GoogleCloudPlatform/cloud-build-notifiers/pull/91. It's a simple enough PR that it probably wouldn't be difficult for the GCP team to make their implementation compatible or at least make it fail gracefully if the implementation changes.

mikesoule avatar Jan 18 '21 07:01 mikesoule

Any updates on something like this?

NotNoah avatar Mar 22 '21 19:03 NotNoah

Hi (Not) Noah, We are working on a public requirements doc for templating and bindings in #95 . If there's anything that you'd like beyond what's suggested there, please feel free to comment. I can't comment on the timeline of this yet. Thanks, Leo

LOZORD avatar Mar 22 '21 20:03 LOZORD

Hi (Not) Noah, We are working on a public requirements doc for templating and bindings in #95 . If there's anything that you'd like beyond what's suggested there, please feel free to comment. I can't comment on the timeline of this yet. Thanks, Leo

Thanks for the update! 😃 this will be very useful once released!

NotNoah avatar Mar 23 '21 00:03 NotNoah

It seems that the request is indeed fulfilled. However, the latest code changes are not yet deployed, as you can see here the last image was uploaded in March.

However, you can checkout the latest code and build your own image and push that in your repository or whatever.

From the code, the configuration looks like it should be this:

apiVersion: cloud-build-notifiers/v1
kind: SlackNotifier
metadata:
  name: cloud-build-slack-notifier
spec:
  notification:
    template:
      type: golang
      uri: gs://foo/bar
    filter: ...
    delivery:
      webhookUrl:
        secretRef: webhook-url
  secrets:
  - name: webhook-url
    value: ....

The template.type is required and the only allowed value is golang. The template.uri is the object uri. There is also the template.content which takes raw template.

fragoulis avatar Jun 10 '22 12:06 fragoulis

Hi @jfragoulis ,

Could you let me know the example value for template.uri ?

weiztech avatar Jun 14 '22 15:06 weiztech

@weiztech

gs://bucketname/message-template.json

fragoulis avatar Jun 14 '22 15:06 fragoulis

However, you can checkout the latest code and build your own image and push that in your repository or whatever.

Building an updated image solved my problem. Thank you for pointing it out.

bascheibler avatar Jul 20 '22 04:07 bascheibler

Not sure if it's because I asked on Slack or another reason, but got built today: https://console.cloud.google.com/artifacts/docker/gcb-release/us-east1/cloud-build-notifiers/slack/sha256:3f94609560920a327fefd1f153560ec21c8dfa0f97916305c144518348e73e20

wyardley avatar Aug 09 '22 22:08 wyardley

Even though it got built today, the Slack color issue mentioned in #139 and #137 caused it to not work 100%.

@jfragoulis: we were able to use our own build of a fork of the upstream repo along with your changes from #139, and it works perfectly; it would be great to see this fix incorporated and built so that we don't have to, so hopefully someone from the team that manages this project will review it soon.

I'll let @deriegle comment with an example of a working template, as there were some bits of getting it to work that were a little non-obvious.

Other question: is source: an empty data structure in the pub/sub message because we're using GH? we seem to have to use the substitutions instead to get the repo name.

wyardley avatar Aug 10 '22 05:08 wyardley

As @wyardley mentioned, we were able to get this working with the changes from PR #139. This is our template file. Make sure to change {orgName} to your org name. We just have it static inside the JSON. You want this JSON file to return an array of blocks to send to Slack. The color bar attachment gets handled from within the Go code.

[
  {
    "type": "section",
    "text": {
      "type": "mrkdwn",
      "text": "*Status:* {{.Build.Status}}\n*Repo:* <https://github.com/{orgName}/{{.Build.Substitutions.REPO_NAME}}|{{.Build.Substitutions.REPO_NAME}}>\n*Commit:* <https://github.com/{orgName}/{{.Build.Substitutions.REPO_NAME}}/commit/{{.Build.Substitutions.COMMIT_SHA}}|{{.Build.Substitutions.SHORT_SHA}}>"
    },
    "accessory": {
      "type": "button",
      "text": {
        "type": "plain_text",
        "text": "View Job"
      },
      "value": "click_me_123",
      "url": "{{.Build.LogUrl}}",
      "action_id": "button-action"
    }
  }
]

Example configuration:

spec:
  notification:
    template:
      type: golang
      uri: gs://my-bucket/my-slack-template.json

image image image

deriegle avatar Aug 10 '22 16:08 deriegle

The updates have now also been published / built. Thinking maybe this request can be closed now?

wyardley avatar Feb 22 '23 01:02 wyardley