Twitch Bot CI/CD Pipeline #17
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
name: Twitch Bot CI/CD Pipeline | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
workflow_dispatch: | |
jobs: | |
build: | |
runs-on: self-hosted # Runs directly on your Raspberry Pi | |
steps: | |
# 1. Checkout Repository | |
- name: Checkout Repository | |
uses: actions/checkout@v3 | |
# 2. Create and Activate Virtual Environment, then Install Dependencies | |
- name: Set up Python Virtual Environment and Install Dependencies | |
run: | | |
# Create a virtual environment in the revbot directory | |
python3.11 -m venv venv # Adjust if using Python 3.10 | |
# Activate the virtual environment | |
source venv/bin/activate | |
# Upgrade pip inside the virtual environment | |
python -m pip install --upgrade pip | |
# Install the required dependencies inside the virtual environment | |
pip install -r requirements.txt | |
# 3. Run Black Formatter Check | |
- name: Run Black Formatter Check | |
run: | | |
# Activate the virtual environment | |
source venv/bin/activate | |
# Run Black with the necessary options | |
python -m black --check --diff --line-length 120 . | |
# 4. Deploy to Raspberry Pi | |
- name: Deploy to Raspberry Pi | |
run: | | |
REVUBOT_DIR=~/revbot | |
REPO_URL=https://github.com/Revulate/revbot.git | |
# Create revbot directory if it doesn't exist | |
mkdir -p $REVUBOT_DIR | |
cd $REVUBOT_DIR | |
# If .git exists, pull; else, clone the repository | |
if [ -d ".git" ]; then | |
git fetch origin | |
git checkout main | |
git pull origin main | |
else | |
git clone --branch main $REPO_URL . | |
fi | |
# Use the existing virtual environment or create one if necessary | |
if [ ! -d "venv" ]; then | |
python3.11 -m venv venv # Adjust to python3.10 if necessary | |
fi | |
# Activate the virtual environment | |
source venv/bin/activate | |
# Install dependencies within the virtual environment | |
pip install -r requirements.txt | |
# Create or update the .env file | |
cat <<EOF > .env | |
TWITCH_CLIENT_ID=${{ secrets.TWITCH_CLIENT_ID }} | |
TWITCH_CLIENT_SECRET=${{ secrets.TWITCH_CLIENT_SECRET }} | |
ACCESS_TOKEN=${{ secrets.ACCESS_TOKEN }} | |
EOF | |
# Restart the Twitch bot service without needing a password | |
sudo systemctl restart twitch-bot.service | |
sudo systemctl restart twitch-bot.service |