介绍
许多现代的DevOps团队正在围绕聊天室设置越来越多的基础设施,有很多聊天室可用,从商业选项(如HipChat和Slack)到 DIY选项(如IRC或Jabber/XMPP)。
本文将概述如何安装 bot Lita,它受GitHub的Hubot的启发。Lita完全用Ruby编写,并在许多类型的聊天室中工作,如HipChat,Campfire和IRC。
在本教程中,我们将通过安装Lita在自己的Ubuntu服务器上的步骤进行步骤,将其连接到IRC频道,并开始安装插件。
前提条件
要遵循本教程,您将需要:
- 一个 Ubuntu 14.04 Droplet.
- 一个 sudo 非根用户,您可以通过遵循 本教程来设置。
- 因为我们将设置Lita用于IRC,您还需要自己连接到IRC并加入一个频道。
您可以 設定自己的 IRC 伺服器,但如果您只是嘗試 Lita out,使用公共伺服器(如 freenode、IRCnet 或 EFnet)更容易。
Freenode 特别有一种简单的 web chat,这样你就可以连接,而无需下载 IRC 客户端。 要使用它,请选择一个独特的号和频道名称,然后点击 Connect 。
步骤 1 - 安装 Lita
在此步骤中,我们将安装Lita及其依赖。
虽然Ruby包含在默认Ubuntu存储库中,但在14.04中可用的Ruby版本对于Lita来说太老了。
因此,首先加载具有更新的版本的个人包存档(PPA)。
1sudo apt-add-repository ppa:brightbox/ruby-ng
然后在您的服务器上更新包。
1sudo apt-get update
接下来,安装 Ruby 和一些 Lita 需要的额外依赖。
1sudo apt-get install ruby2.2 ruby2.2-dev build-essential libssl-dev redis-server
最后,我们将使用 RubyGems 安装 Lita,它是 Ruby 的包管理器(类似于 APT 是 Ubuntu 的包管理器)。
安装 Lita 和 Lita IRC 适配器。
1sudo gem install lita
2sudo gem install lita-irc
步骤 2 – 配置 Lita
Lita 的软件现在已安装,所以在这个步骤中,我们将创建一个机器人,并将其设置为连接到我们的 IRC 频道。
下列命令将创建一个新的机器人. 用你的机器人独特的口号代替your_bot_name
。
1lita new your_bot_name
该命令还会在您的 homedir 中创建一个目录, ~/your_bot_name
,其中包含两个文件: Gemfile
和 lita_config.rb
. Gemfile
告诉 Ruby 要加载哪个插件。 lita_config.rb
是存储所有插件配置设置的地方。
在我们可以启动Lita之前,我们需要编辑这些配置文件,以便您的机器人知道如何连接到IRC。
1cd ~/your_bot_name/
打开Gemfile
以使用 nano 或您最喜欢的文本编辑器进行编辑。
1nano Gemfile
查找字符串#
宝石lita-irc
,并在字符串开始时删除#
字符串,该字符串不发表评论。
1[label Gemfile modified excerpt]
2. . .
3
4# Uncomment to use the IRC adapter
5gem "lita-irc"
6
7. . .
然后保存并关闭文件。
接下来,打开lita_config.rb
文件。
1nano lita_config.rb
将config.robot.name
参数从Lita
更改为您的机器人的号。
1[label lita_config.rb modified excerpt]
2Lita.configure do |config|
3 # The name your robot will use.
4 config.robot.name = "your_bot_name"
5
6. . .
下面稍微更进一步,将config.robot.adapter
参数从:shell
更改为:irc
。
1[label lita_config.rb modified excerpt]
2. . .
3
4 # The adapter you want to connect with. Make sure you've added the
5 # appropriate gem to the Gemfile.
6 config.robot.adapter = :irc
7
8. . .
然后,在文件的底部,在最后一行之前,添加下面的行(下方突出)结尾
。
请确保您正确地复制入口,并将config.adapters.irc.channels
和config.adapters.irc.user
行中的位置变量替换为您的频道名称和机器人名称。
1[label lita_config.rb modified excerpt]
2. . .
3
4 ## Example: Set configuration for any loaded handlers. See the handler's
5 ## documentation for options.
6 # config.handlers.some_handler.some_config_key = "value"
7
8 config.adapters.irc.server = "irc.freenode.net"
9 config.adapters.irc.channels = ["#your_channel_name"]
10 config.adapters.irc.user = "your_bot_name"
11 config.adapters.irc.cinch = lambda do |cinch_config|
12 cinch_config.max_reconnect_delay = 123
13 end
14
15end
保存并关闭文件。
有关哪些选项可以转移到lita-irc
插件的完整列表,请参阅 lita-irc插件的GitHub页面。
步骤 3 – 连接到一个频道
在此步骤中,我们将启动机器人并设置一个管理员。
确保您使用您所选择的 IRC 客户端或 Web 客户端连接到 IRC,并在您希望 Lita 加入的渠道中。
1lita start
过了一会儿,你会看到你的机器人加入你指定的IRC频道。
在这一点上,我们没有告诉我们的机器人如何做任何事情,所以它还不太有用。在我们添加一些额外的功能之前,让我们将我们的用户定义为管理员。
1your_bot_name users find your_irc_nickname
你的机器人会用这样的东西回应:
1[label Lita's response in IRC]
2your_irc_nickname<(ID: ff97cx41-b7fd-4x9b-x76d-e76xf443c65x, Mention name: your_irc_nickname)
复制ID,然后通过在服务器的终端中输入CTRL+C
来停止Lita。
重新打开lita_config.rb
文件。
1nano lita_config.rb
在文件末尾,在最后的结尾
之前,添加下面的行. 用您复制的 ID 替换此处的 ID。
1[label Gemfile modified excerpt]
2...
3
4 config.adapters.irc.cinch = lambda do |cinch_config|
5 cinch_config.max_reconnect_delay = 123
6 end
7
8 config.robot.admins = ["f97cx41-b7fd-4x9b-x76d-e76xf443c65x"]
9
10end
保存并关闭文件。
步骤4:添加插件
在此时,您的机器人可以连接到IRC,但这几乎是它所能做的所有事情,在此步骤中,我们将安装一个示例插件来添加一些有用的功能。
虽然你可以在Ruby中编写自己的插件,但有数以百计的(https://www.lita.io/plugins)预备插件可供选择。
首先,让我们安装lita-dig
插件。
1sudo gem install lita-dig
接下来,打开Gemfile
再次编辑。
1nano Gemfile
添加下列行到文件的尽头。
1gem "lita-dig"
保存并关闭文件,然后重新启动机器人。
1lita start
当您的机器人重新连接时,请将下列行发送到IRC频道。
1your_bot_name dig digitalocean.com
机器人会用几行来响应,从类似的字样开始,即;从 8.8.8.8:53 (114 字节)收到回复
。
步骤5 - 写一个Upstart脚本
在迄今为止的每个步骤中,我们都必须手动启动机器人. 这对测试来说是好的,但有一个更好的解决方案. 在这个步骤中,我们将创建一个Upstart脚本来管理机器人,使其易于启动,停止和重新启动。
首先,创建一个名为lita-your_bot_name.conf
的文件在/etc/init
中。
1sudo nano /etc/init/lita-your_bot_name.conf
将以下内容粘贴到文件中,将your_username
替换为您服务器上的 sudo 非 root 用户的用户名。
1[label /etc/init/lita-your_bot_name.conf]
2
3start on runlevel [2345]
4stop on runlevel [^2345]
5
6chdir /home/your_username/your_bot_name
7env HOME=/home/your_username
8setuid your_username
9setgid your_username
10
11respawn
12respawn limit 10 5
13
14exec lita start
这里有一个快速的解释这个脚本做什么:
启动
和停止
的行告诉Ubuntu何时启动和停止机器人,chdir
的行告诉Upstart执行exec
命令时应该在哪个目录,实际上启动机器人。
env
行是必要的,所以 Ruby 应用程序知道其设置文件所在地。 setuid
和 setgid
告诉 Upstart 作为特定用户启动机器人;如果这些行被省略,Upstart 将将机器人启动为根。
respawn
线告诉Upstart如果 bot 被中断或崩溃时重新启动,而respawn limit
则阻止Upstart如果 bot 在 5 秒内崩溃 10 次,这表明有更大的问题。
我们可以通过使用内置的 linter 来检查本脚本中的语法是否正确,这是一个语法检查程序,使用以下命令。
1sudo init-checkconf /etc/init/lita-your_bot_name.conf
如果语法正确,你应该看到下面的输出。
1[label Correct linter output]
2File /etc/init/lita-your\_bot\_name.conf: syntax ok.
一旦您检查了 config 文件的语法,请通过输入以下命令来启动 bot 使用 Upstart 脚本。
1sudo start lita-your_bot_name
你应该看到一个看起来像这样的线条:
1[label Upstart output]
2lita-your_bot_name start/running, process 1234
您的机器人应该很快加入IRC频道;您现在可以退出服务器,机器人将继续运行。
结论
在本教程中,我们安装并配置了Lita与插件和Upstart脚本. 凭借独特的机器人名称和Upstart脚本,您甚至可以在不同的聊天室中运行多个机器人,使用不同的插件。
从自定义链接到流行的CI构建服务,如Jenkins到控制您的GitLabs存储库,使用聊天机器人可以简化,简化和自动化您的工作。