import logging import os import jenkins from tadas.platform import config logger = logging.getLogger(__name__) def get_server(): logger.info('Getting Jenkins instance') jenkins_url = os.environ['JENKINS_URL'] jenkins_username = os.environ['JENKINS_USERNAME'] jenkins_api_token = os.environ['JENKINS_API_TOKEN'] logger.info(f'Jenkins URL: {jenkins_url}, user: {jenkins_username}') return jenkins.Jenkins( jenkins_url, username=jenkins_username, password=jenkins_api_token, ) def trigger_jenkins_job(server: jenkins.Jenkins, job_name, params): try: queue_id = server.build_job(job_name, params) except jenkins.EmptyResponseException: logger.warning('Got empty response from build_job. The job might have been triggered successfully.') return None job_url = f'{server.server}job/{job_name}/' logger.info(f'{job_name} was triggered with queue ID {queue_id}. Check the job status at {job_url}') return queue_id def trigger_dbt_metrics(): job_name = 'dbt-scheduler-analytics-parametrized-pipeline' params = { 'ENVIRONMENT': config.get('ENVIRONMENT'), 'MODELS': 'METRICS_TADAS_DBT', 'WAREHOUSE': os.getenv('SNOWFLAKE_WAREHOUSE'), 'CLEAR_CACHE': False, } logger.info(f'Trigger DBT Jenkins job: "{job_name}" with {params=}') jenkins_server = get_server() trigger_jenkins_job( server=jenkins_server, job_name=job_name, params=params, ) logger.info('Jenkins job triggered')