-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge main into owlbotv2 branch to backport dockerization work and un…
…ify entrypoints
- Loading branch information
Showing
13 changed files
with
186 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,4 @@ | ||
OWLBOT_SECRET= | ||
OP_START_CHANNEL_ID= | ||
GUILD_ID= | ||
INTERVIEWER_ROLE_ID= | ||
WELCOME_CHANNEL_ID= | ||
WELCOME_CHANNEL_ID= |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
name: Build Owlbot DEV Docker image | ||
|
||
on: | ||
push: | ||
branches: [ "dockerize", "dev" ] | ||
|
||
jobs: | ||
|
||
build: | ||
|
||
runs-on: ubuntu-latest | ||
environment: dev | ||
|
||
steps: | ||
- | ||
name: Checkout repository | ||
uses: actions/checkout@v4 | ||
with: | ||
path: 'discord-owlbot' | ||
- | ||
name: Build the Docker image | ||
working-directory: discord-owlbot | ||
run: docker build . --file Dockerfile --tag cntoarma/owlbot:dev | ||
- | ||
name: Authenticate to CNTO DockerHub | ||
uses: docker/login-action@v3 | ||
with: | ||
username: ${{ secrets.DOCKERHUB_USERNAME }} | ||
password: ${{ secrets.DOCKERHUB_TOKEN }} | ||
- | ||
name: Publish image to DockerHub | ||
run: docker image push cntoarma/owlbot:dev |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
name: Build Owlbot Docker image | ||
|
||
on: | ||
push: | ||
branches: [ "main" ] | ||
|
||
jobs: | ||
|
||
build: | ||
|
||
runs-on: ubuntu-latest | ||
environment: stable | ||
|
||
steps: | ||
- | ||
name: Checkout repository | ||
uses: actions/checkout@v4 | ||
- | ||
name: Build the Docker image | ||
run: docker build . --file Dockerfile --tag cntoarma/owlbot:latest | ||
- | ||
name: Authenticate to CNTO DockerHub | ||
uses: docker/login-action@v3 | ||
with: | ||
username: ${{ secrets.DOCKERHUB_USERNAME }} | ||
password: ${{ secrets.DOCKERHUB_TOKEN }} | ||
- | ||
name: Publish image to DockerHub | ||
run: docker image push cntoarma/owlbot:latest |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
FROM alpine:3.19 | ||
|
||
ADD . /owlbot | ||
WORKDIR /owlbot | ||
|
||
RUN apk add --no-cache python3 py3-pip | ||
RUN pip install --break-system-packages -r requirements.txt | ||
RUN crontab crontab.txt | ||
|
||
# Install tzdata to switch timezone on deployment | ||
RUN apk add --no-cache tzdata | ||
|
||
CMD ["crond", "-f"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
# CNTO Owlbot | ||
|
||
## What is the Owlbot | ||
|
||
Owlbot is CNTO's omnipresent assistant. It is currently implemented as a TeamSpeak user for populating our `stats` pages, and on Discord for automated member pings before our operations begin. R&D has plans to expand the Discord presence to enable staff members to carry out their tasks directly from our Discord, but this is a WIP. | ||
|
||
## Installation guide | ||
|
||
Owlbot is available as [a Docker image](https://hub.docker.com/repository/docker/cntoarma/owlbot/general), published on CNTO's DockerHub registry. Two versions are currently maintained: `dev` for development environments and `latest` for production environments. | ||
|
||
### 1. Create a Discord application from the Discord Developer Portal | ||
|
||
You can follow [this guide](https://discordpy.readthedocs.io/en/stable/discord.html) to create a bot application. CNTO has two versions of the Owlbot managed by R&D: OWL and OWL Dev. The key takeaway from this step is to obtain the bot's secret, used to authenticate the bot against Discord's API. | ||
|
||
### 2. Gather the required parameters | ||
|
||
Within CNTO, the Owlbot is deployed on the `Tools Server`. It requires two parameters to run. | ||
|
||
1. Discord channel id to post event reminders, this makes use of `.env` file (find a template in the `.env.template` file) | ||
2. Discord bot token to authenticate, this is passed using [docker-compose secrets](https://docs.docker.com/compose/use-secrets/). A plain text file named `discord-token.txt` should be placed in the same directory as `docker-compose.yml`, reference `discord-token.txt.template` for an example. | ||
|
||
The `.env` parameters can be passed to Owlbot in two different ways: | ||
|
||
|
||
1. As system environment variables, for example `export OWLBOT_SECRET=1234` | ||
2. As `.env` file in the same directory as the `.env.template` | ||
|
||
Owlbot will try to load from a `.env` file, falling back to system variables. If both are present, system variables are used. | ||
|
||
**Note** if you use the Owlbot Docker image from our public registry, the `.env` file is not yet created by the build process so you need to rely on environment variables. The `.env` file mechanism is supported for local development environments. We do not plan on adding `.env` file support for staging / production environments. | ||
|
||
### 3. Run the Docker image | ||
|
||
Start the container through `docker-compose` to ensure proper parameters and secrets loading. | ||
|
||
```bash | ||
docker-compose up -d | ||
``` | ||
|
||
Is the only command you need to get Owlbot up and running. | ||
|
||
### Updating the crontab file | ||
|
||
By default, the Owlbot will send join reminders 10 minutes before our events start (19:35 CET / CEST). This is configured in the `crontab.txt` file that gets installed inside the Owlbot container upon image build. Changing the `crontab.txt` file content and restarting the container or `docker-compose` execution will have no impact on the actual cron entry installed. | ||
|
||
If you need to change the cron entry for debugging purposes without triggering an image rebuild, get access to a shell within the container (only `/bin/sh` since it's based on an `alpine` image) and edit the crontab manually, for example with `crontab -e`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
NOTIFICATION_CHANNEL_ID=342739973923143680 | ||
WELCOME_CHANNEL_ID=814513168772628540 | ||
GUILD_ID=154907081256730624 | ||
INTERVIEWER_ROLE_ID=331492014883602433 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
NOTIFICATION_CHANNEL_ID=1101131950745464842 | ||
WELCOME_CHANNEL_ID=1101087724007587930 | ||
GUILD_ID=1101050893526388758 | ||
INTERVIEWER_ROLE_ID=1101061472391536660 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
35 19 * * 2,5 sh /owlbot/op-reminder.sh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
DISCORD_TOKEN_HERE |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
version: "3" | ||
services: | ||
owlbot: | ||
container_name: owlbot | ||
# restart: unless-stopped | ||
env_file: ./config | ||
image: cntoarma/owlbot:dev | ||
secrets: | ||
- discord_token | ||
environment: | ||
- "TZ=Europe/Stockholm" | ||
|
||
secrets: | ||
discord_token: | ||
file: ./discord-token.txt |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters