diff --git a/Dockerfile b/Dockerfile index 65c00a5..827024d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,7 +14,7 @@ WORKDIR /src COPY requirements.txt . # Install all dependencies. -RUN pip install --only-binary all --no-cache-dir -r requirements.txt +RUN pip install --no-cache-dir -r requirements.txt # Copy PlexBot over to src. COPY PlexBot/ PlexBot diff --git a/Jenkinsfile b/Jenkinsfile index b08e77a..e844538 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -49,18 +49,19 @@ pipeline { steps { sh ''' source /var/lib/jenkins/miniconda3/etc/profile.d/conda.sh conda activate ${BUILD_TAG} - python deploy/build.py + ./deploy/build.sh ''' } - post { - always { - // Archive unit tests for the future - archiveArtifacts (allowEmptyArchive: true, - artifacts: 'dist/*whl', - fingerprint: true) - sh 'python deploy/push.py' + } + stage('Push Image') { + when { + expression { + currentBuild.result == 'SUCCESS' } } + steps { + sh './deploy/push.sh' + } } } diff --git a/PlexBot/__init__.py b/PlexBot/__init__.py index 9faccea..bfc5f1e 100644 --- a/PlexBot/__init__.py +++ b/PlexBot/__init__.py @@ -1,8 +1,8 @@ -"""Plex music bot for discord. - - Do not import this module, it is intended to be - used exclusively within a docker environment. +""" +Plex music bot for discord. +Do not import this module, it is intended to be +used exclusively within a docker environment. """ import logging import sys diff --git a/PlexBot/__main__.py b/PlexBot/__main__.py index 7079a38..8dfae5e 100644 --- a/PlexBot/__main__.py +++ b/PlexBot/__main__.py @@ -1,7 +1,6 @@ -"""Main entrypoint for bot - - Sets up loggers and initiates bot. - +""" +Main entrypoint script. +Sets up loggers and initiates bot. """ import logging diff --git a/PlexBot/__version__.py b/PlexBot/__version__.py index e2acb55..f06a6d3 100644 --- a/PlexBot/__version__.py +++ b/PlexBot/__version__.py @@ -1,2 +1,5 @@ -"""Track version number of package""" -VERSION = "0.0.6" +"""Track version number of package.""" +VERSION = "1.0.0" + +if __name__ == "__main__": + print(VERSION) diff --git a/PlexBot/bot.py b/PlexBot/bot.py index 616daa8..4436f62 100644 --- a/PlexBot/bot.py +++ b/PlexBot/bot.py @@ -1,4 +1,4 @@ -""" All discord bot and Plex api interactions""" +"""All discord bot and Plex api interactions.""" import asyncio import io import logging diff --git a/README.md b/README.md index 4caba35..8580acf 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![GPLv3 license](https://img.shields.io/badge/License-GPLv3-blue.svg)](http://perso.crans.org/besson/LICENSE.html) ![docker pulls](https://img.shields.io/docker/pulls/jarulsamy/plex-bot) ![docker img size](https://img.shields.io/docker/image-size/jarulsamy/plex-bot) -Code style: black +![black badge](https://img.shields.io/badge/code%20style-black-000000.svg) A Python-based Plex music bot for discord. @@ -13,106 +13,105 @@ A Python-based Plex music bot for discord. Plex-Bot runs entirely in a Docker container. Ensure you have Docker and docker-compose installed according to the official Docker [documentation](https://docs.docker.com/get-docker/). -1. Create a new folder and `cd` into it: +1. Create a new folder and `cd` into it: -``` -$ mkdir Plex-Bot -$ cd Plex-Bot -``` + ```bash + mkdir Plex-Bot + cd Plex-Bot + ``` -2. Make a `docker-compose.yml` file or use this sample: +2. Make a `docker-compose.yml` file or use this sample: -```yml -version: "3" -services: - plex-bot: - container_name: "PlexBot" - image: jarulsamy/plex-bot:latest - environment: - - PUID=1000 - - PGID=1000 - - TZ=America/Denver - # Required dir for configuration files - volumes: - - "./config:/config:ro" - restart: "unless-stopped" -``` + ```yml + version: "3" + services: + plex-bot: + container_name: "PlexBot" + image: jarulsamy/plex-bot:latest + environment: + - PUID=1000 + - PGID=1000 + - TZ=America/Denver + # Required dir for configuration files + volumes: + - "./config:/config:ro" + restart: "unless-stopped" + ``` -3. Create a configuration folder: +3. Create a new `config` folder and create a config file like this:: -Create a new `config` folder and create a config file like this: + ```bash + mkdir config + cd config + touch config.yaml + ``` -``` -$ mkdir config -$ cd config -``` + ```yml + # Create a file called config.yaml with the following contents -```yml -# Create a file called config.yaml with the following contents + root: + log_level: "info" -root: - log_level: "info" + discord: + prefix: "?" + token: "" + log_level: "debug" -discord: - prefix: "?" - token: "" - log_level: "debug" + plex: + base_url: "" + token: "" + library_name: "" + log_level: "debug" + ``` -plex: - base_url: "" - token: "" - library_name: "" - log_level: "debug" -``` +4. Create a Discord bot application: -4. Create a Discord bot application: + 1. Go to the Discord developer portal, [here](https://discord.com/developers/applications). - * Go to the Discord developer portal, [here](https://discord.com/developers/applications). + 2. Log in or create an account - * Log in or create an account + 3. Click New App - * Click New App + 4. Fill in App Name and anything else you'd like to include - * Fill in App Name and anything else you'd like to include - - * Click Create App + 5. Click Create App This will provide you with your Client ID and Client Secret - * Click Create Bot User + 6. Click Create Bot User This will provide you with your bot Username and Token - * Fill in the bot token in `config/config.yaml` + 7. Fill in the bot token in `config/config.yaml` -5. Get your plex token: +5. Get your plex token: * Refer to the official [plex documentation](https://support.plex.tv/articles/204059436-finding-an-authentication-token-x-plex-token/). * Add it to `config/config.yaml` in the appropiate spot. -6. Customize remaining settings +6. Customize remaining settings Set any remaining settings in the config file that you would like. Such as music library, and base url of the Plex server. 7. Start the service: -``` -$ docker-compose up -d -``` + ```bash + docker-compose up -d + ``` ## Logs You can view the logs with the following command -``` -$ docker-compose logs -f CONTAINER_NAME_OR_ID +```bash +docker-compose logs -f CONTAINER_NAME_OR_ID # For example -$ docker-compose logs -f PlexBot +docker-compose logs -f PlexBot ``` ## Usage -``` +```text General: kill - Stop the bot. Plex: @@ -129,11 +128,4 @@ Type ?help command for more info on a command. You can also type ?help category for more info on a category. ``` -## Support - -Reach out to me at one of the following places! - -- Email (Best) at joshua.gf.arul@gmail.com -- Twitter at `@jarulsamy_` - * * * diff --git a/deploy/build.py b/deploy/build.py deleted file mode 100644 index 78c9326..0000000 --- a/deploy/build.py +++ /dev/null @@ -1,8 +0,0 @@ -import os -import sys - -sys.path.append("PlexBot") - -from __version__ import VERSION - -sys.exit(os.system(f"docker build -t jarulsamy/plex-bot:{VERSION} .")) diff --git a/deploy/build.sh b/deploy/build.sh new file mode 100755 index 0000000..9fe1c36 --- /dev/null +++ b/deploy/build.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +VERSION=$(python PlexBot/__version__.py) + +docker build -t "jarulsamy/plex-bot:$VERSION" . + +if [ $? -eq 0 ] +then + echo "Successfully build docker image." + exit 0 +else + echo "Failed to build docker image." >&2 + exit 1 +fi diff --git a/deploy/push.py b/deploy/push.py deleted file mode 100755 index 98fc956..0000000 --- a/deploy/push.py +++ /dev/null @@ -1,8 +0,0 @@ -import os -import sys - -sys.path.append("PlexBot") - -from __version__ import VERSION - -sys.exit(os.system(f"docker push jarulsamy/plex-bot:{VERSION}")) diff --git a/deploy/push.sh b/deploy/push.sh new file mode 100755 index 0000000..ce37735 --- /dev/null +++ b/deploy/push.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +VERSION=$(python PlexBot/__version__.py) + +docker push "jarulsamy/plex-bot:$VERSION" + +if [ $? -eq 0 ] +then + echo "Successfully pushed docker image." + exit 0 +else + echo "Failed to push docker image." >&2 + exit 1 +fi