# coding=utf-8 import os from atlassian import Bamboo BAMBOO_URL = os.environ.get("BAMBOO_URL", "http://localhost:8085") ATLASSIAN_USER = os.environ.get("ATLASSIAN_USER", "admin") ATLASSIAN_PASSWORD = os.environ.get("ATLASSIAN_PASSWORD", "admin") bamboo = Bamboo(url=BAMBOO_URL, username=ATLASSIAN_USER, password=ATLASSIAN_PASSWORD) # Delete entire plan bamboo.delete_plan("PLAN-TODELETE") # Delete single result bamboo.delete_build_result("PLAN-TODELETE-7")
OLDER_DAYS = 60 def get_all_projects(): return [x['key'] for x in bamboo.projects(max_results=10000)] def get_plans_from_project(project_key): return [ x['key'] for x in bamboo.project_plans(project_key, max_results=1000) ] if __name__ == '__main__': bamboo = Bamboo(url=BAMBOO_URL, username=BAMBOO_LOGIN, password=BAMBOO_PASSWORD, timeout=180) projects = get_all_projects() print("Start analyzing the {} projects".format(len(projects))) for project in projects: print("Inspecting {} project".format(project)) plans = get_plans_from_project(project) print("Start analyzing the {} plans".format(len(plans))) for plan in plans: print("Inspecting {} plan".format(plan)) build_results = [ x for x in bamboo.results(plan_key=plan, label=LABEL, max_results=100, include_all_states=True) ]
plan_key = arguments[0] branch = arguments[1] build_number = arguments[2] packages = arguments[3:] channel_id = data["channel"] thread_ts = data["ts"] user = data["user"] resp = start_build(branch, build_number, packages) text = f"Build has been started: <{bamboo.url}/browse/{resp}|{branch}>" if isinstance( resp, str) else f"Build has not been started. Response: {resp}" web_client.chat_postMessage(channel=channel_id, text=text, thread_ts=thread_ts) if __name__ == "__main__": log = logging.basicConfig(level=logging.DEBUG) dotenv_path = os.path.join(os.path.dirname(__file__), ".env") env = load_dotenv(dotenv_path) BAMBOO_URL = os.environ.get("BAMBOO_URL") BAMBOO_USERNAME = os.environ.get("BAMBOO_USERNAME") BAMBOO_PASSWORD = os.environ.get("BAMBOO_PASSWORD") bamboo = Bamboo(url=BAMBOO_URL, username=BAMBOO_USERNAME, password=BAMBOO_PASSWORD, advanced_mode=True) slack_token = os.environ.get("SLACK_BOT_USER_TOKEN") client = RTMClient(token=slack_token) client.start()
def test_init_bamboo(self): Bamboo(url=BAMBOO_URL, username=ATLASSIAN_USER, password=ATLASSIAN_PASSWORD)
REDDIT_CLIENT_ID = getenv('REDDIT_CLIENT_ID') REDDIT_CLIENT_SECRET = getenv('REDDIT_CLIENT_SECRET') REDDIT_USER_AGENT = getenv('REDDIT_USER_AGENT') BAMBOO_URL = getenv('BAMBOO_URL') BAMBOO_USERNAME = getenv('BAMBOO_USERNAME') BAMBOO_PASSWORD = getenv('BAMBOO_PASSWORD') BAMBOO_PROJECT = getenv('BAMBOO_PROJECT') BAMBOO_PLAN = getenv('BAMBOO_PLAN') BAMBOO_ARTIFACT = getenv('BAMBOO_ARTIFACT') reddit = praw.Reddit(client_id=REDDIT_CLIENT_ID, client_secret=REDDIT_CLIENT_SECRET, user_agent=REDDIT_USER_AGENT) bamboo = Bamboo(url=BAMBOO_URL, username=BAMBOO_USERNAME, password=BAMBOO_PASSWORD) async def greeting(member): logging.info(f'{member} has joined.') await member.create_dm() await member.dm_channel.send( f'Üdv a BloodTracken, {member.name}!\nRemélem, jól érzed majd magad nálunk :)' ) async def fun_pic(message): try: submission = reddit.subreddit('ProgrammerHumor+memes').random() await message.channel.send(submission.url)
# coding=utf-8 import argparse import logging from os import environ from atlassian import Bamboo """ To set up variables, use: export BAMBOO_URL=https://your-url BAMBOO_PASSWORD=your_pass BAMBOO_USERNAME=your_username You also can use .env files, check the awesome python-dotenv module: https://github.com/theskumar/python-dotenv """ bamboo = Bamboo( url=environ.get("BAMBOO_URL"), username=environ.get("BAMBOO_USERNAME"), password=environ.get("BAMBOO_PASSWORD"), advanced_mode= True, # In this app I use an advanced_mode flag to handle responses. ) def execute_build(build_key, params): """ build_key: str params: dict """ started_build = bamboo.execute_build(build_key, **params) logging.info("Build execution status: {}".format( started_build.status_code)) if started_build.status_code == 200: logging.info("Build key: {}".format(
def __init__(self, clone=None, dock=None, media=None, sqlimport=None, copy=None, sqlexport=None, flush=None, path=None, bam=None, action=None, rok=None): for i in range(0, 101): if i % self._progressEveryPercent == 0: self._progressDict[str(i)] = "" if os.getenv("GIT_USER") and os.getenv("GIT_PASS") and os.getenv( "SSH_USER") and os.getenv("SSH_PASS"): # click.echo(click.style('All rigthooo !', fg='green')) self._credentials.get("atlassian")["user"] = os.getenv( "ATLASSIAN_USER") self._credentials.get("atlassian")["pass"] = os.getenv( "ATLASSIAN_PASS") self._credentials.get("rok")["api"] = os.getenv("ROK_API") self._credentials.get("git")["user"] = os.getenv("GIT_USER") self._credentials.get("git")["pass"] = os.getenv("GIT_PASS") self._credentials.get("git_bucket")["user"] = os.getenv( "GIT_BUCKET_USER") self._credentials.get("git_bucket")["pass"] = os.getenv( "GIT_BUCKET_PASS") self._credentials.get("ssh")["user"] = os.getenv("SSH_USER") self._credentials.get("ssh")["pass"] = os.getenv("SSH_PASS") self._repos = { "flow": { "main": "http://%s:%[email protected]:7990/scm/fb/flowbusiness_co.git" % (self._credentials.get("git")["user"], self._credentials.get("git")["pass"]), "bb": "http://%s:%[email protected]:7990/scm/fb/sites_flowbusiness_bb.git" % (self._credentials.get("git")["user"], self._credentials.get("git")["pass"]), "panama": "http://%s:%[email protected]:7990/scm/fb/sites_masmovilpanama_negocios.git" % (self._credentials.get("git")["user"], self._credentials.get("git")["pass"]), "trinidad": "http://%s:%[email protected]:7990/scm/fb/sites_flowbusiness_tt.git" % (self._credentials.get("git")["user"], self._credentials.get("git")["pass"]), "jamaica": "http://%s:%[email protected]:7990/scm/fb/sites_flowbusiness_jm.git" % (self._credentials.get("git")["user"], self._credentials.get("git")["pass"]), "flow": "https://%s:%[email protected]/scm/fb/flow-business.git" % (self._credentials.get("git_bucket")["user"], self._credentials.get("git_bucket")["pass"]) }, "cw": { "net": "http://%s:%[email protected]:7990/scm/cwnet/core.git" % (self._credentials.get("git")["user"], self._credentials.get("git")["pass"]), "bus": "http://%s:%[email protected]:7990/scm/cwcbus/core.git" % (self._credentials.get("git")["user"], self._credentials.get("git")["pass"]), } } if bam: bamboo = Bamboo( url=self._credentials.get("atlassian")["url"], username=self._credentials.get("atlassian")["user"], password=self._credentials.get("atlassian")["pass"], advanced_mode=True) if bam == "panama": if action == 'build': plan = bamboo.get_plan('CMS-SITCWPNEG') the_build = bamboo.execute_build( plan_key=plan.json().get('key')) click.echo( click.style('Build execution status: {}'.format( the_build.status_code), fg='green')) if the_build.status_code == 200: click.echo( click.style("Build key: {}".format( the_build.json().get("buildResultKey")), fg='green')) click.echo( click.style(the_build.json().get( "link", {}).get('href'), fg='green')) else: click.echo( click.style("Execution failed!", fg='red')) click.echo( click.style(the_build.json().get("message"), fg='red')) elif action == 'deploy': res = requests.get( 'https://bamboo-qa.cwc-apps.com/rest/api/latest/deploy/project/all', auth=(self._credentials.get("atlassian")["user"], self._credentials.get("atlassian")["pass"])) resDep = requests.get( 'https://bamboo-qa.cwc-apps.com/rest/api/latest/deploy/project/9797640/versions', auth=(self._credentials.get("atlassian")["user"], self._credentials.get("atlassian")["pass"])) releaseName = 'release-{}'.format( int(resDep.json()['versions'][0]['name'].replace( 'release-', '')) + 1) planResultNum = resDep.json()['versions'][0]['items'][ 0]['planResultKey']['resultNumber'] + 1 planResultKey = '{}-{}'.format( resDep.json()['versions'][0]['items'][0] ['planResultKey']['entityKey']['key'], planResultNum) job = requests.post( 'https://bamboo-qa.cwc-apps.com/rest/api/latest/deploy/project/9797640/version', auth=(self._credentials.get("atlassian")["user"], self._credentials.get("atlassian")["pass"]), json={ "planResultKey": planResultKey, "name": releaseName }, headers={ "Content-Type": "application/json", "Accepts": "application/json" }) for item in res.json(): if 'planKey' in item: # Name: CW Panama Negocios - QAT key: 9797635 # Name: CW Panama Negocios - STG key: 9797638 # Name: CW Panama Negocios - PRD key: 9797640 # IN THIS CASE I WANT TO USE PROD if item['planKey'][ 'key'] == 'CMS-SITCWPNEG' and item[ 'key']['key'] == '9797640': for env in item['environments']: releaseJob = requests.post( 'https://bamboo-qa.cwc-apps.com/rest/api/latest/queue/deployment/?environmentId={}&versionId={}' .format(env['id'], job.json()['id']), auth=(self._credentials.get( "atlassian")["user"], self._credentials.get( "atlassian")["pass"]), headers={ "Accepts": "application/json" }) print(releaseJob.text) click.echo( click.style( "ENVIRONMENT RELEASED: {}". format(env['name']), fg='green')) if clone: click.echo(click.style('Cloning %s' % (clone), fg='green')) if clone == "panama": url = self._repos.get("flow")[clone] path = "%s/sites/negocios.masmovilpanama.com" % ( self._cloneDirs.get("flow")) click.echo(click.style('clone url %s' % (url), fg='green')) self.gitClone(url, path) elif clone == "main": url = self._repos.get("flow")[clone] path = "%s" % (self._cloneDirs.get("flow")) click.echo(click.style('clone url %s' % (url), fg='green')) self.gitClone(url, path) elif clone == "bb": url = self._repos.get("flow")[clone] path = "%s/sites/flowbusiness.co.barbados" % ( self._cloneDirs.get("flow")) click.echo(click.style('clone url %s' % (url), fg='green')) self.gitClone(url, path) elif clone == "trinidad": url = self._repos.get("flow")[clone] path = "%s/sites/flowbusiness.co.trinidad-and-tobago" % ( self._cloneDirs.get("flow")) click.echo(click.style('clone url %s' % (url), fg='green')) self.gitClone(url, path) elif clone == "jamaica": url = self._repos.get("flow")[clone] path = "%s/sites/flowbusiness.co.jamaica" % ( self._cloneDirs.get("flow")) click.echo(click.style('clone url %s' % (url), fg='green')) self.gitClone(url, path) elif clone == "net": url = self._repos.get("cw")[clone] path = "%s" % (self._cloneDirs.get("cwnet")) click.echo(click.style('clone url %s' % (url), fg='green')) self.gitClone(url, path) elif clone == "bus": url = self._repos.get("cw")[clone] path = "%s" % (self._cloneDirs.get("flow")) click.echo(click.style('clone url %s' % (url), fg='green')) self.gitClone(url, path) elif clone == "flow": url = self._repos.get("flow")[clone] path = "%s" % (self._cloneDirs.get("flowb")) click.echo(click.style('clone url %s' % (url), fg='green')) self.gitClone(url, path) if dock: if dock == "php": subprocess.run([ "docker-compose", "-f", "../liberty_docker/php/docker-compose.yaml", "up", "-d", "--build" ]) click.echo(click.style('Done Docker', fg='green')) elif dock == "mysql": subprocess.run([ "docker-compose", "-f", "../liberty_docker/mysql/docker-compose.yaml", "up", "-d", "--build" ]) click.echo(click.style('Done Docker', fg='green')) elif dock == "apache": subprocess.run([ "docker-compose", "-f", "../liberty_docker/apache/docker-compose.yaml", "up", "-d", "--build" ]) click.echo(click.style('Done Docker', fg='green')) elif dock == "composer": subprocess.run([ "docker-compose", "-f", "../liberty_docker/php/docker-compose.yaml", "run", "--rm", "cw-php", "composer", "install" ]) click.echo(click.style('Done Docker', fg='green')) if sqlimport: if sqlimport == "panama": self.sqlImport("c_", "negocios_masmovilpanama_com") if sqlimport == "vlocity": self.sqlImport("g_", "masmovilpanama_velocity") if sqlimport == "flow": self.sqlImport("f_", "flowbusiness_co") elif sqlimport == "trinidad": self.sqlImport("e_", "flowbusiness_tt") elif sqlimport == "barbados": self.sqlImport("b_", "flowbusiness_bb") elif sqlimport == "bus": self.sqlImport("d_", "cwcbusin_wp") elif sqlimport == "curacao": self.sqlImport("i_", "flowbusiness_cw") elif sqlimport == "init_curacao": self.sqlImport("i_a_", "init") elif sqlimport == "eastern": self.sqlImport("j_", "flowbusiness_ec") elif sqlimport == "init_eastern": self.sqlImport("j_a_", "init") if sqlexport: if sqlexport == "panama": self.sqlExport("c_", "negocios_masmovilpanama_com") if sqlexport == "vlocity": self.sqlExport("g_", "masmovilpanama_velocity") elif sqlexport == "bus": self.sqlExport("d_", "cwcbusin_wp") elif sqlexport == "trinidad": self.sqlExport("e_", "flowbusiness_tt") elif sqlexport == "bb": self.sqlExport("b_", "flowbusiness_bb") elif sqlexport == "jamaica": self.sqlExport("h_", "flowbusiness_jm") elif sqlexport == "curacao": self.sqlExport("i_", "flowbusiness_cw") elif sqlexport == "eastern": self.sqlExport("i_", "flowbusiness_ec") if media: if media == "panama": if path is None: path = "files" print('path') print(path) self.downloadDir( "/var/www/html/flowbusiness.co/sites/negocios.masmovilpanama.com", os.path.join(self._cloneDirs.get("flowb"), "web", "sites", "negocios.masmovilpanama.com"), "10.255.229.14", path) elif media == "trinidad": if path is None: path = "files" print("ptah", path) print( os.path.join(self._cloneDirs.get("flow"), "sites", "flowbusiness.co.trinidad-and-tobago")) self.downloadDir( "/var/www/html/flowbusiness.co/sites/flowbusiness.co.trinidad-and-tobago", os.path.join(self._cloneDirs.get("flowb"), "web", "sites", "flowbusiness.co.trinidad-and-tobago"), "10.255.229.14", path) elif media == "jamaica": if path is None: path = "files" print("ptah", path) print( os.path.join(self._cloneDirs.get("flow"), "sites", "flowbusiness.co.jamaica")) self.downloadDir( "/var/www/html/flowbusiness.co/sites/flowbusiness.co.jamaica", os.path.join(self._cloneDirs.get("flowb"), "web", "sites", "flowbusiness.co.jamaica"), "10.255.229.14", path) elif media == "curacao": if path is None: path = "files" print("ptah", path) print( os.path.join(self._cloneDirs.get("flow"), "sites", "flowbusiness.co.curacao")) self.downloadDir( "/var/www/html/flowbusiness.co/sites/flowbusiness.co.curacao", os.path.join(self._cloneDirs.get("flowb"), "web", "sites", "flowbusiness.co.curacao"), "10.255.229.14", path) elif media == "eastern": if path is None: path = "files" print("ptah", path) print( os.path.join(self._cloneDirs.get("flow"), "sites", "flowbusiness.co.eastern-caribbean")) self.downloadDir( "/var/www/html/flowbusiness.co/sites/flowbusiness.co.eastern-caribbean", os.path.join(self._cloneDirs.get("flowb"), "web", "sites", "flowbusiness.co.eastern-caribbean"), "10.255.229.14", path) elif media == "bus": if path is None: path = "uploads" print(path) self.downloadDir( "/var/www/html/cwcbusiness/wp-content", os.path.join(self._cloneDirs.get("bus"), "wp-content"), "10.255.229.17", path) if rok: if rok != None: ngrok.set_auth_token(self._credentials.get("rok")["api"]) http_tunnel = ngrok.connect() ngrok_process = ngrok.get_ngrok_process() try: # Block until CTRL-C or some other terminating event click.echo( click.style('Summoning server !', fg='yellow')) tunnels = ngrok.get_tunnels() with open(r'./drupal-source/sites.yml', encoding="utf-8") as file: data = yaml.load(file, Loader=yaml.FullLoader) f = open("./flow-business/web/sites/sites.php", "w") f.write("<?php\n") f.write("$sites = array(\n") for key in data["sites"]: f.write("'{}' => '{}',\n".format( key, data["sites"][key])) route = None if rok == "panama": route = "negocios.masmovilpanama.com" elif rok == "trinidad": route = "flowbusiness.co.trinidad-and-tobago" elif rok == "jamaica": route = "flowbusiness.co.jamaica" elif rok == "barbados": route = "flowbusiness.co.barbados" if route != None: f.write("'{}' => '{}',\n".format( tunnels[0].public_url.replace("https://", ""), route)) f.write(");\n") f.close() click.echo( click.style('Ready to rock !', blink=True, fg='green')) click.echo( click.style('Live on: {}'.format( tunnels[0].public_url), fg='green')) ngrok_process.proc.wait() except KeyboardInterrupt: click.echo(click.style('Server KILLED !', fg='red')) ngrok.kill() if copy: flowDir = self._cloneDirs.get("flowb") if copy == "sites": with open(r'./drupal-source/sites.yml', encoding="utf-8") as file: data = yaml.load(file, Loader=yaml.FullLoader) f = open("./flow-business/web/sites/sites.php", "w") f.write("<?php\n") f.write("$sites = array(\n") for key in data["sites"]: f.write("'{}' => '{}',\n".format( key, data["sites"][key])) f.write(");\n") f.close() elif copy == "panama": # shutil.copy("./drupal-source/%s/settings.php" % (copy), os.path.join(flowDir, "web", "sites", "negocios.masmovilpanama.com", "settings.php")) shutil.copy( "./drupal-source/services.yml", os.path.join(flowDir, "web", "sites", "negocios.masmovilpanama.com", "services.yml")) elif copy == "trinidad": # shutil.copy("./drupal-source/%s/settings.php" % (copy), os.path.join(flowDir, "web", "sites", "flowbusiness.co.trinidad-and-tobago", "settings.php")) shutil.copy( "./drupal-source/services.yml", os.path.join(flowDir, "web", "sites", "flowbusiness.co.trinidad-and-tobago", "services.yml")) elif copy == "jamaica": # shutil.copy("./drupal-source/%s/settings.php" % (copy), os.path.join(flowDir, "sites", "flowbusiness.co.jamaica", "settings.php")) shutil.copy( "./drupal-source/services.yml", os.path.join(flowDir, "web", "sites", "flowbusiness.co.jamaica", "services.yml")) elif copy == "barbados": # shutil.copy("./drupal-source/%s/settings.php" % (copy), os.path.join(flowDir, "web", "sites", "flowbusiness.co.barbados", "settings.php")) shutil.copy( "./drupal-source/services.yml", os.path.join(flowDir, "web", "sites", "flowbusiness.co.barbados", "services.yml")) elif copy == "bus": shutil.copy( "./wp-source/business/.htaccess", os.path.join(self._cloneDirs.get("bus"), ".htaccess")) shutil.copy( "./wp-source/business/wp-config.php", os.path.join(self._cloneDirs.get("bus"), "wp-config.php")) elif copy == "net": shutil.copy( "./wp-source/net/.htaccess", os.path.join(self._cloneDirs.get("cwnet"), ".htaccess")) shutil.copy( "./wp-source/net/wp-config.php", os.path.join(self._cloneDirs.get("cwnet"), "wp-config.php")) if flush: print('flush') if flush == "panama": # docker-compose -f ../liberty_docker/php/docker-compose.yaml run --rm cw-php vendor/bin/drush --uri=flowpanama.com cache-rebuild -vvv subprocess.run([ "docker-compose", "-f", "../liberty_docker/php/docker-compose.yaml", "run", "--rm", "cw-php", "vendor/bin/drush", "--uri=flowpanama.com", "cache-rebuild", "-vvv" ]) click.echo(click.style('Done Flush in panama', fg='green')) elif flush == "trinidad": subprocess.run([ "docker-compose", "-f", "../liberty_docker/php/docker-compose.yaml", "run", "--rm", "cw-php", "vendor/bin/drush", "--uri=flowbusiness.co.trinidad-and-tobago", "cache-rebuild", "-vvv" ]) click.echo(click.style('Done Flush in panama', fg='green')) elif flush == "barbados": subprocess.run([ "docker-compose", "-f", "../liberty_docker/php/docker-compose.yaml", "run", "--rm", "cw-php", "vendor/bin/drush", "--uri=flowbusiness.co.barbados", "cache-rebuild", "-vvv" ]) click.echo(click.style('Done Flush in panama', fg='green')) elif flush == "jamaica": subprocess.run([ "docker-compose", "-f", "../liberty_docker/php/docker-compose.yaml", "run", "--rm", "cw-php", "vendor/bin/drush", "--uri=flowbusiness.co.jamaica", "cache-rebuild", "-vvv" ]) click.echo(click.style('Done Flush in panama', fg='green')) elif flush == "install": subprocess.run([ "docker-compose", "-f", "../liberty_docker/php/docker-compose.yaml", "run", "--rm", "cw-php", "composer require drush/drush" ]) click.echo(click.style('Done Flush in panama', fg='green')) else: click.echo( click.style( 'Environment variables not found. Check your .env file', fg='red'))
from atlassian import Bamboo import argparse bamboo = Bamboo(url="https://", username="", password="") def create_plan_branch(plan, vcs_branch): bamboo_branch = vcs_branch.replace("/", "-") return bamboo.create_branch(plan, bamboo_branch, vcs_branch=vcs_branch, enabled=True) def main(): parser = argparse.ArgumentParser() parser.add_argument("--plan") parser.add_argument("--vcs_branch") args = parser.parse_args() branch = create_plan_branch(plan=args.plan, vcs_branch=args.vcs_branch) print(branch.get("key") or branch) if __name__ == "__main__": main()