GithubHelp home page GithubHelp logo

szyn / digdag-slack Goto Github PK

View Code? Open in Web Editor NEW
52.0 52.0 17.0 280 KB

digdag-slack is a plugin sending messages to slack :tada: https://www.digdag.io/

License: Apache License 2.0

Java 92.67% Shell 7.33%
digdag plugin

digdag-slack's Issues

Supporting http proxy

I use digdag behind a http proxy at server mode runtime.

env http_proxy=http://<proxy url>:<proxy port>

In such case(even if not server mode), this plugin doesn't work because of not supporting http proxy.

error: Unknown task type: slack (config)

slack.dig

_export:
  plugin:
    repositories:
      - https://jitpack.io
    dependencies:
      - com.github.szyn:digdag-slack:0.1.2
  webhook_url: https://hooks.slack.com/services/X/X/X
  ENV: develop

template.yml

---
username: digdag
channel: "XXX"
icon_url: https://XXX
attachments:
- fallback: '[FAILED] ${env_name} ${task_name}'
  color: "danger"
  text: '*[FAILED]* ${env_name} `${task_name}`'
  mrkdwn_in:
  - text
  - pretext
  - fields
  fields:
  - title: Error Message
    value: "`${error.message}`"
    short: false
  - title: Error Stacktrace
    value: "```${error.stacktrace}```"
    short: false
  - title: Session Local Time
    value: "${session_local_time}"
    short: true
  - title: Env
    value: "${env_name}"
    short: true

execute.yml

timezone: Asia/Tokyo

!include : 'slack.dig'

# schedule:
#  cron>: 0 */2 * * *

_export:
  target: XXX


+create-job:
  sh>: "curl -s ${target} | run -"

+check-job:
  sh>: "./check-job.sh - ${target}"
  _error:
    sh>: "curl -s ${target} | drop -"

+delete-job:
  sh>: "curl -s ${target} | drop -"

_error:
  slack>: template.yml

But was,,,

2018-05-20 10:30:02.292 +0000 [INFO] (416979@[0:]+execute^error) io.digdag.core.agent.OperatorManager: slack>: template.yml
2018-05-20 10:30:02.292 +0000 [ERROR] (416979@[0:]+execute^error) io.digdag.core.agent.OperatorManager: Configuration error at task +execute^error: Unknown task type: slack (config)

Failed to read artifact descriptor for com.github.szyn:digdag-slack:jar:0.1.4

I am getting the following error when i tried to run through dig dag UI. The same project i tried to execute locally it seems to be working fine.

2020-04-03 03:45:12.150 +0000 [INFO] (0686@[0:main]+main+step1-2) io.digdag.core.agent.OperatorManager: slack>: include/good-template.yml
2020-04-03 03:45:12.181 +0000 [ERROR] (0686@[0:main]+main+step1-2) io.digdag.core.agent.OperatorManager: Task failed with unexpected error: org.eclipse.aether.resolution.DependencyResolutionException: Failed to read artifact descriptor for com.github.szyn:digdag-slack:jar:0.1.4

Do you have any plans to support parameter like ignore_failure?

If the task of digdag-slack fails, subsequent tasks are not executed as follows.

$ cat sample.dig
_export:
  plugin:
    repositories:
      - https://jitpack.io
    dependencies:
      - com.github.szyn:digdag-slack:0.1.4
  webhook_url: mistake_url
  workflow_name: slack
  ENV: develop

+first_task:
  echo>: "run first task!"
  _check:
    slack>: templates/success.yml

+second_task:
  echo>: "run other tasks!"

$ digdag run -a sample.dig
2017-11-30 05:39:29 +0000: Digdag v0.9.21
2017-11-30 05:39:32 +0000 [WARN] (main): Reusing the last session time 2017-11-30T00:00:00+00:00.
2017-11-30 05:39:32 +0000 [INFO] (main): Using session /root/digdag-slack/.circleci/.digdag/status/20171130T000000+0000.
2017-11-30 05:39:32 +0000 [INFO] (main): Starting a new session project id=1 workflow name=sample session_time=2017-11-30T00:00:00+00:00
2017-11-30 05:39:34 +0000 [INFO] (0016@[0:default]+sample+first_task): echo>: run first task!
run first task!
2017-11-30 05:39:36 +0000 [INFO] (0016@[0:default]+sample+first_task^check): slack>: templates/success.yml
2017-11-30 05:39:37 +0000 [ERROR] (0016@[0:default]+sample+first_task^check): Task failed with unexpected error: unexpected url: mistake_url
java.lang.IllegalArgumentException: unexpected url: mistake_url
	at okhttp3.Request$Builder.url(Request.java:143)
	at io.digdag.plugin.slack.SlackOperatorFactory$SlackOperator.postToSlack(SlackOperatorFactory.java:81)
	at io.digdag.plugin.slack.SlackOperatorFactory$SlackOperator.runTask(SlackOperatorFactory.java:69)
	at io.digdag.util.BaseOperator.run(BaseOperator.java:35)
	at io.digdag.core.agent.OperatorManager.callExecutor(OperatorManager.java:312)
	at io.digdag.cli.Run$OperatorManagerWithSkip.callExecutor(Run.java:694)
	at io.digdag.core.agent.OperatorManager.runWithWorkspace(OperatorManager.java:254)
	at io.digdag.core.agent.OperatorManager.lambda$runWithHeartbeat$2(OperatorManager.java:137)
	at io.digdag.core.agent.LocalWorkspaceManager.withExtractedArchive(LocalWorkspaceManager.java:25)
	at io.digdag.core.agent.OperatorManager.runWithHeartbeat(OperatorManager.java:135)
	at io.digdag.core.agent.OperatorManager.run(OperatorManager.java:119)
	at io.digdag.cli.Run$OperatorManagerWithSkip.run(Run.java:676)
	at io.digdag.core.agent.MultiThreadAgent.lambda$null$0(MultiThreadAgent.java:127)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
2017-11-30 05:39:39 +0000 [INFO] (0016@[0:default]+sample^failure-alert): type: notify
error:
  * +sample+first_task^check:
    unexpected url: mistake_url (illegal argument)

Task state is saved at /root/digdag-slack/.circleci/.digdag/status/20171130T000000+0000 directory.
  * Use --session <daily | hourly | "yyyy-MM-dd[ HH:mm:ss]"> to not reuse the last session time.
  * Use --rerun, --start +NAME, or --goal +NAME argument to rerun skipped tasks.

I would like to allow subsequent tasks to be executed even If the task of digdag-slack fails.
Do you have any plans to support parameter like ignore_failure ?

Slack's payload validation not implemented

The template for slack's payload was wrong and failed to execute workflow as follows.

$ cat sample.dig
_export:
  plugin:
    repositories:
      - https://jitpack.io
    dependencies:
      - com.github.szyn:digdag-slack:0.1.4
  webhook_url: https://hooks.slack.com/services/xxx
  workflow_name: slack
  ENV: develop

+first_task:
  echo>: "run first task!"
  _check:
    slack>: templates/success.yml

+second_task:
  echo>: "run other tasks!"

$ cat templates/success.yml
---
username: Digdag
icon_emoji: ':blush:'
channel: '#digdag-slack-test'
typo_attachments: <----------------------------------- typo :(
- fallback: '[SUCCESS] ${workflow_name} workflow'
  color: "good"
  text: '*[SUCCESS]* `${workflow_name}` Workflow'
  mrkdwn_in:
  - text
  - pretext
  - fields
  fields:
  - title: Task Name
    value: "${task_name}"
    short: false
  - title: Session Date
    value: "${session_date}"
    short: true
  - title: Environment
    value: "${ENV}"
    short: true

$ digdag run -a sample.dig
2017-11-30 05:47:58 +0000: Digdag v0.9.21
2017-11-30 05:48:01 +0000 [WARN] (main): Reusing the last session time 2017-11-30T00:00:00+00:00.
2017-11-30 05:48:01 +0000 [INFO] (main): Using session /root/digdag-slack/.circleci/.digdag/status/20171130T000000+0000.
2017-11-30 05:48:01 +0000 [INFO] (main): Starting a new session project id=1 workflow name=sample session_time=2017-11-30T00:00:00+00:00
2017-11-30 05:48:04 +0000 [INFO] (0016@[0:default]+sample+first_task): echo>: run first task!
run first task!
2017-11-30 05:48:06 +0000 [INFO] (0016@[0:default]+sample+first_task^check): slack>: templates/success.yml
java.io.IOException: posting to slack failed
	at io.digdag.plugin.slack.SlackOperatorFactory$SlackOperator.postToSlack(SlackOperatorFactory.java:89)
	at io.digdag.plugin.slack.SlackOperatorFactory$SlackOperator.runTask(SlackOperatorFactory.java:69)
	at io.digdag.util.BaseOperator.run(BaseOperator.java:35)
	at io.digdag.core.agent.OperatorManager.callExecutor(OperatorManager.java:312)
	at io.digdag.cli.Run$OperatorManagerWithSkip.callExecutor(Run.java:694)
	at io.digdag.core.agent.OperatorManager.runWithWorkspace(OperatorManager.java:254)
	at io.digdag.core.agent.OperatorManager.lambda$runWithHeartbeat$2(OperatorManager.java:137)
	at io.digdag.core.agent.LocalWorkspaceManager.withExtractedArchive(LocalWorkspaceManager.java:25)
	at io.digdag.core.agent.OperatorManager.runWithHeartbeat(OperatorManager.java:135)
	at io.digdag.core.agent.OperatorManager.run(OperatorManager.java:119)
	at io.digdag.cli.Run$OperatorManagerWithSkip.run(Run.java:676)
	at io.digdag.core.agent.MultiThreadAgent.lambda$null$0(MultiThreadAgent.java:127)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
2017-11-30 05:48:10 +0000 [INFO] (0016@[0:default]+sample+second_task): echo>: run other tasks!
run other tasks!
Success. Task state is saved at /root/digdag-slack/.circleci/.digdag/status/20171130T000000+0000 directory.
  * Use --session <daily | hourly | "yyyy-MM-dd[ HH:mm:ss]"> to not reuse the last session time.
  * Use --rerun, --start +NAME, or --goal +NAME argument to rerun skipped tasks.

I tried to find typo, but it was difficult to notice typo.
Do you have any plans to implement slack's payload validation according to slack's official format?
https://api.slack.com/docs/messages/builder

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.