kind: pipeline type: docker # All steps will run in Docker containers. name: update-and-restart-discord-bot # A descriptive name for the pipeline. when: - branch: main # This pipeline triggers on pushes to the 'main' branch. event: push steps: - name: pull-latest-source # Step 1: Pull the latest code from Gitea. image: alpine/git # A lightweight image that includes the 'git' command. volumes: # Mount your bot's source code directory with read-write permissions. # This is crucial for 'git pull' to update the files on your host machine. - /home/gary/Discord/Acrybot:/app:rw # ':rw' ensures read-write access. commands: - echo "--- Pulling latest source code from Git ---" - cd /app # Navigate to the mounted project directory. # Configure Git to trust the mounted directory to avoid 'unsafe repository' warnings. - git config --global --add safe.directory /app - git pull # Pull the latest changes from the 'main' branch. - echo "Source code updated." - ls -la /app # Verify files were updated. - name: manage-bot-containers # Step 2: Manage your bot's Docker containers. image: docker # This image provides the 'docker compose' CLI. volumes: # Mount the Docker socket from the host to allow control over host Docker daemon. - /var/run/docker.sock:/var/run/docker.sock # Mount your Docker Compose project directory into the container. - /home/gary/Discord/Acrybot:/app environment: # IMPORTANT: Explicitly set the Docker Compose project name. # This ensures containers are managed with the 'Acrybot' prefix, # matching your existing containers. # If your actual project name (from 'docker inspect ') # is different, replace 'Acrybot' here. COMPOSE_PROJECT_NAME: acrybot commands: - echo "--- Managing Docker Compose services ---" - cd /app # Navigate to the mounted project directory. # Stop the specific Discord bot service. # Replace 'your_bot_service_name' with the EXACT service name from your docker-compose.yml. - echo "--- Stopping Discord bot service your_bot_service_name ---" - docker compose stop python-app # Bring the specific Discord bot service back up. # '--build' is essential if your docker-compose.yml uses 'build: .' to create the image, # as it ensures the image is rebuilt with the newly pulled source code. - echo "--- Bringing Discord bot service up your_bot_service_name ---" - docker compose up -d your_bot_service_name --build - echo "--- Verification after actions ---" - docker compose ps -a # Show all services in this project again. # Directly grep for the expected container name to confirm. - docker ps -a | grep Acrybot-python-app