From 6a5d9f3df7df9bdecbec128749a6188e69d48b9f Mon Sep 17 00:00:00 2001 From: Guillem Hernandez Sola Date: Sun, 29 Mar 2026 19:28:22 +0000 Subject: [PATCH] Revert Revert --- jenkins/fcbarcelonaTw | 138 ++++++++++-------------------------------- 1 file changed, 31 insertions(+), 107 deletions(-) diff --git a/jenkins/fcbarcelonaTw b/jenkins/fcbarcelonaTw index 2d503aa..5e4454b 100644 --- a/jenkins/fcbarcelonaTw +++ b/jenkins/fcbarcelonaTw @@ -2,133 +2,57 @@ pipeline { agent any triggers { - // Runs every 15 minutes to guarantee no tweets are missed - cron('H/15 * * * *') + // 'H' balances the load on Jenkins, running roughly every 30 minutes + cron('H/30 * * * *') } stages { - stage('Checkout & Setup') { + stage('Checkout Code') { steps { checkout scm + } + } + + stage('Setup Python & Install Dependencies') { + steps { sh ''' + # Create a virtual environment named 'venv' python3 -m venv venv + + # Activate it and install the required packages . venv/bin/activate - pip install atproto fastfeedparser beautifulsoup4 httpx arrow charset-normalizer + pip install -U atproto tweety-ns playwright httpx arrow python-dotenv -q + + # Install the local browser binaries for this specific environment + playwright install chromium ''' } } - stage('Execute 8 FCB Timelines in Parallel') { + stage('Run Script') { steps { - // 🔐 Fetch the MQUB credentials ONCE for all 8 executions + // Securely inject Jenkins credentials as environment variables withCredentials([ string(credentialsId: 'TWITTER_USERNAME', variable: 'TWITTER_USERNAME'), string(credentialsId: 'TWITTER_PASSWORD', variable: 'TWITTER_PASSWORD'), string(credentialsId: 'TWITTER_FCB_EMAIL', variable: 'TWITTER_FCB_EMAIL'), + string(credentialsId: 'TWITTER_FCB_HANDLE', variable: 'TWITTER_FCB_HANDLE'), string(credentialsId: 'BSKY_MQUB_HANDLE', variable: 'BSKY_MQUB_HANDLE'), string(credentialsId: 'BSKY_MQUB_PASSWORD', variable: 'BSKY_MQUB_PASSWORD') ]) { - // ⚡ 8 distinct, simultaneous executions - script { - parallel( - "FCB Hoquei": { - sh ''' - . venv/bin/activate - python3 twitter2bsky_daemon.py \ - --twitter-username "$TWITTER_USERNAME" \ - --twitter-password "$TWITTER_PASSWORD" \ - --twitter-email "$TWITTER_FCB_EMAIL" \ - --twitter-handle "$TWITTER_FCBHOQUEI_HANDLE" \ - --bsky-handle "$BSKY_MQUB_HANDLE" \ - --bsky-password "$BSKY_MQUB_PASSWORD" - ''' - }, - "FCB Handbol": { - sh ''' - . venv/bin/activate - python3 twitter2bsky_daemon.py \ - --twitter-username "$TWITTER_USERNAME" \ - --twitter-password "$TWITTER_PASSWORD" \ - --twitter-email "$TWITTER_FCB_EMAIL" \ - --twitter-handle "$TWITTER_FCBHANDBOL_HANDLE" \ - --bsky-handle "$BSKY_MQUB_HANDLE" \ - --bsky-password "$BSKY_MQUB_PASSWORD" - ''' - }, - "FCB Atletic": { - sh ''' - . venv/bin/activate - python3 twitter2bsky_daemon.py \ - --twitter-username "$TWITTER_USERNAME" \ - --twitter-password "$TWITTER_PASSWORD" \ - --twitter-email "$TWITTER_FCB_EMAIL" \ - --twitter-handle "$TWITTER_FCBATLETIC_HANDLE" \ - --bsky-handle "$BSKY_MQUB_HANDLE" \ - --bsky-password "$BSKY_MQUB_PASSWORD" - ''' - }, - "FCB Femeni": { - sh ''' - . venv/bin/activate - python3 twitter2bsky_daemon.py \ - --twitter-username "$TWITTER_USERNAME" \ - --twitter-password "$TWITTER_PASSWORD" \ - --twitter-email "$TWITTER_FCB_EMAIL" \ - --twitter-handle "$TWITTER_FCBFEMENI_HANDLE" \ - --bsky-handle "$BSKY_MQUB_HANDLE" \ - --bsky-password "$BSKY_MQUB_PASSWORD" - ''' - }, - "FCB Barcelona": { - sh ''' - . venv/bin/activate - python3 twitter2bsky_daemon.py \ - --twitter-username "$TWITTER_USERNAME" \ - --twitter-password "$TWITTER_PASSWORD" \ - --twitter-email "$TWITTER_FCB_EMAIL" \ - --twitter-handle "$TWITTER_FCB_HANDLE" \ - --bsky-handle "$BSKY_MQUB_HANDLE" \ - --bsky-password "$BSKY_MQUB_PASSWORD" - ''' - }, - "FCB Masia": { - sh ''' - . venv/bin/activate - python3 twitter2bsky_daemon.py \ - --twitter-username "$TWITTER_USERNAME" \ - --twitter-password "$TWITTER_PASSWORD" \ - --twitter-email "$TWITTER_FCB_EMAIL" \ - --twitter-handle "$TWITTER_FCBMASIA_HANDLE" \ - --bsky-handle "$BSKY_MQUB_HANDLE" \ - --bsky-password "$BSKY_MQUB_PASSWORD" - ''' - }, - "FCB Basket": { - sh ''' - . venv/bin/activate - python3 twitter2bsky_daemon.py \ - --twitter-username "$TWITTER_USERNAME" \ - --twitter-password "$TWITTER_PASSWORD" \ - --twitter-email "$TWITTER_FCB_EMAIL" \ - --twitter-handle "$TWITTER_FCBBASKET_HANDLE" \ - --bsky-handle "$BSKY_MQUB_HANDLE" \ - --bsky-password "$BSKY_MQUB_PASSWORD" - ''' - }, - "FCB Futbol Sala": { - sh ''' - . venv/bin/activate - python3 twitter2bsky_daemon.py \ - --twitter-username "$TWITTER_USERNAME" \ - --twitter-password "$TWITTER_PASSWORD" \ - --twitter-email "$TWITTER_FCB_EMAIL" \ - --twitter-handle "$TWITTER_FCBFUTBOLSALA_HANDLE" \ - --bsky-handle "$BSKY_MQUB_HANDLE" \ - --bsky-password "$BSKY_MQUB_PASSWORD" - ''' - } - ) - } + sh ''' + # Activate the exact same virtual environment so Python finds Playwright and Arrow + . venv/bin/activate + + # Run the daemon with the injected credentials + python3 twitter2bsky_daemon.py \ + --twitter-username "$TWITTER_USERNAME" \ + --twitter-password "$TWITTER_PASSWORD" \ + --twitter-email "$TWITTER_FCB_EMAIL" \ + --twitter-handle "$TWITTER_FCB_HANDLE" \ + --bsky-handle "$BSKY_MQUB_HANDLE" \ + --bsky-password "$BSKY_MQUB_PASSWORD" + ''' } } }