##// END OF EJS Templates
auth: don't break hashing in case of user with empty password....
auth: don't break hashing in case of user with empty password. In some cases such as LDAP user created via external scripts users might set the passwords to empty. The hashing uses the md5(password_hash) to store reference to detect password changes and forbid using the same password. In case of pure LDAP users this is not valid, and we shouldn't raise Errors in such case. This change makes it work for empty passwords now.

File last commit:

r552:9a0f45b0 default
r2203:8a18c3c3 default
Show More
int-slack.rst
151 lines | 5.1 KiB | text/x-rst | RstLexer

Integrate Slack

To integrate |RCE| and Slack, you need to configure some things on the Slack side of the integration, and some things on the |RCE| side.

On the Slack side you need to allow incoming webhooks, see their documentation on this, Slack Webhooks. You will also need to get an Authorization Token from Slack that will allow |RCE| to post to your account.

On the |RCE| side, this is an overview of what you need to do:

  1. Configure the built-in Slack extensions to post to the correct Slack URL.
  2. Set your Slack authentication details in the |RCX| :file:`__init.py__` file.
  3. Configure the different hooks in the :file:`__init.py__` file to extract whatever information you want from |RCE|, and then using the Slack extensions post that information to your Slack channel.

Hint

The below examples should help you to get started. Once you have your integration up and running, there is a more detailed Slack integration in the :ref:`int-full-blown` section.

Configure Built-in Extensions

|RCE| comes with 3 Slack extensions: slack_message.py, slack_push_notify.py, and slack.py. The default location is :file:`/home/{user}/.rccontrol/{instance-id}/rcextensions`.

To enable these to post to your Slack account, configure each of these files with the following Slack details.

BASE_URL = 'https://your.slack.com/api/link'
INCOMING_WEBHOOK_URL = 'https://hooks.slack.com/services/your/hook/link'
API_VERSION = 1

Configure |RCE| to Post to Slack

In the |RCX| :file:`__init.py__` file, configure your Slack authentication details. The default location is :file:`/home/{user}/.rccontrol/{instance-id}/rcextensions`

CONFIG = DotDict(
    slack=DotDict(
        api_key='api-key',
        api_url='slack-incoming-hook-url',
        default_room='#slack-channel',
        default_plugin_config={},
    ),
)

# slack conf
CONFIG.slack.default_plugin_config = {
    'INCOMING_WEBHOOK_URL': CONFIG.slack.api_url,
    'SLACK_TOKEN': CONFIG.slack.api_key,
    'SLACK_ROOM': CONFIG.slack.default_room,
    'SLACK_FROM': 'RhodeCode',
    'SLACK_FROM_ICON_EMOJI': ':rhodecode:',
}

Add Push Notifications to Slack

To add notification to Slack when someone pushes to |RCE|, configure the push hook to extract the commits pushed, and then call the built-in slack_push_notify.py extension to post them into your chosen Slack channel. To do this, add the following code to the push hook section of the :file:`__init.py__` file

Add Pull Request Notifications to Slack

To add |pr| notifications to Slack, use the following example. This example shows a merged |pr| notification. You can add similar notifications to the following hooks in the :file:`__init.py__` file, and for those examples see the :ref:`int-full-blown` section:

  • _create_pull_request_hook
  • _review_pull_request_hook
  • _update_pull_request_hook
  • _close_pull_request_hook