Beispiel #1
0
    def test_shippable_instance(self):
        shippable_env = {
            "SHIPPABLE": "true",
            "COMMIT_MESSAGE": "foobar [qux]",
            "COMMIT": "98e984eacf4e3dfea431c8850c8c181a08e8cf3d",
            "BRANCH": "testing/5.6.5",
            "IS_GIT_TAG": "false",
            "IS_PULL_REQUEST": "false"
        }
        with tools.environment_append(shippable_env):
            manager = CIManager(self.printer)
            self.assertEquals(manager.get_branch(), shippable_env["BRANCH"])
            self.assertEquals(manager.get_commit_msg(),
                              shippable_env["COMMIT_MESSAGE"])
            self.assertEquals(manager.get_commit_id(), shippable_env["COMMIT"])
            self.assertEquals(manager.is_pull_request(), False)
            self.assertEquals(manager.is_tag(), False)

        shippable_env = {
            "SHIPPABLE": "true",
            "COMMIT_MESSAGE": "new tag",
            "COMMIT": "98e984eacf4e3dfea431c8850c8c181a08e8cf3d",
            "BRANCH": "release/5.6.5",
            "IS_GIT_TAG": "true",
            "IS_PULL_REQUEST": "true"
        }
        with tools.environment_append(shippable_env):
            manager = CIManager(self.printer)
            self.assertEquals(manager.get_branch(), shippable_env["BRANCH"])
            self.assertEquals(manager.get_commit_msg(),
                              shippable_env["COMMIT_MESSAGE"])
            self.assertEquals(manager.get_commit_id(), shippable_env["COMMIT"])
            self.assertEquals(manager.is_pull_request(), True)
            self.assertEquals(manager.is_tag(), True)
    def test_github_actions_instance(self):
        gha_env = {"GITHUB_ACTIONS": "true",
                   "GITHUB_SHA": "98e984eacf4e3dfea431c8850c8c181a08e8cf3d",
                   "GITHUB_REF": "testing/5.6.5",
                   "GITHUB_BASE_REF": "testing/5.6.5",
                   "GITHUB_EVENT_NAME": "push"}
        with tools.environment_append(gha_env):
            manager = CIManager(self.printer)
            self.assertEquals(manager.get_branch(), gha_env["GITHUB_REF"])
            self.assertEquals(manager.get_commit_id(), gha_env["GITHUB_SHA"])
            self.assertEquals(manager.is_pull_request(), False)

        gha_env = {"GITHUB_ACTIONS": "true",
                   "GITHUB_SHA": "98e984eacf4e3dfea431c8850c8c181a08e8cf3d",
                   "GITHUB_REF": "quick_fix",
                   "GITHUB_BASE_REF": "testing/5.6.5",
                   "GITHUB_EVENT_NAME": "pull_request"}
        with tools.environment_append(gha_env):
            manager = CIManager(self.printer)
            self.assertEquals(manager.get_branch(), gha_env["GITHUB_BASE_REF"])
            self.assertEquals(manager.get_commit_id(), gha_env["GITHUB_SHA"])
            self.assertEquals(manager.is_pull_request(), True)

        gha_env = {"GITHUB_ACTIONS": "true",
                   "GITHUB_REF": "refs/heads/testing",
                   "GITHUB_EVENT_NAME": "push"}
        with tools.environment_append(gha_env):
            manager = CIManager(self.printer)
            self.assertEquals(manager.get_branch(), "testing")
Beispiel #3
0
    def test_bamboo_env_vars(self):
        self.assertIsNone(os.getenv('CONAN_LOGIN_USERNAME'))

        with tools.environment_append({
                "bamboo_buildNumber": "xx",
                "bamboo_planRepository_branch": "mybranch",
                "bamboo_CONAN_LOGIN_USERNAME": "******",
                "bamboo_CONAN_USER_VAR": "bamboo",
                "CONAN_USER_VAR": "foobar"
        }):
            manager = CIManager(self.printer)
            self.assertEquals(manager.get_branch(),
                              "mybranch")  # checks that manager is Bamboo

            self.assertEquals(os.getenv('CONAN_LOGIN_USERNAME'), "bamboo")
            self.assertEquals(os.getenv('CONAN_USER_VAR'), "foobar")

        with tools.environment_append({
                "bamboo_buildNumber": "xx",
                "bamboo_planRepository_branch": "mybranch",
                "BAMBOO_CONAN_LOGIN_USERNAME": "******",
                "BAMBOO_CONAN_USER_VAR": "bamboo",
                "CONAN_USER_VAR": "foobar"
        }):
            manager = CIManager(self.printer)
            self.assertEquals(manager.get_branch(),
                              "mybranch")  # checks that manager is Bamboo

            self.assertEquals(os.getenv('CONAN_LOGIN_USERNAME'), "bamboo")
            self.assertEquals(os.getenv('CONAN_USER_VAR'), "foobar")
Beispiel #4
0
    def test_circleci_instance(self):
        with tools.environment_append({
                "CIRCLECI":
                "1",
                "CIRCLE_BRANCH":
                "mybranch",
                "CIRCLE_SHA1":
                "506c89117650bb12252db26d35b8c2385411f175",
        }):
            manager = CIManager(self.printer)
            self.assertEquals(manager.get_branch(), "mybranch")
            self.assertIsNotNone(manager.get_commit_msg())
            self.assertEquals(manager.get_commit_id(),
                              "506c89117650bb12252db26d35b8c2385411f175")
            self.assertEquals(manager.is_pull_request(), False)

        with tools.environment_append({
                "CIRCLECI":
                "1",
                "CIRCLE_BRANCH":
                "pull/35",
                "CIRCLE_SHA1":
                "506c89117650bb12252db26d35b8c2385411f175",
                "CIRCLE_PULL_REQUEST":
                "https://github.com/org/repo/pull/35"
        }):
            manager = CIManager(self.printer)
            self.assertIsNone(manager.get_branch())
            self.assertIsNotNone(manager.get_commit_msg())
            self.assertEquals(manager.get_commit_id(),
                              "506c89117650bb12252db26d35b8c2385411f175")
            self.assertEquals(manager.is_pull_request(), True)
    def test_appveyor_instance(self):
        with tools.environment_append({"APPVEYOR": "1",
                                       "APPVEYOR_REPO_COMMIT_MESSAGE": "msg",
                                       "APPVEYOR_REPO_COMMIT_MESSAGE_EXTENDED": "more",
                                       "APPVEYOR_REPO_BRANCH": "mybranch",
                                       "APPVEYOR_REPO_COMMIT": "506c89117650bb12252db26d35b8c2385411f175",
                                       }):
            manager = CIManager(self.printer)
            self.assertEquals(manager.get_branch(), "mybranch")
            self.assertEquals(manager.get_commit_msg(), "msg more")
            self.assertEquals(manager.get_commit_id(), "506c89117650bb12252db26d35b8c2385411f175")

        # Appveyor PULL REQUEST
        with tools.environment_append({"APPVEYOR": "1",
                                       "APPVEYOR_PULL_REQUEST_NUMBER": "1",
                                       "APPVEYOR_REPO_COMMIT_MESSAGE": "msg",
                                       "APPVEYOR_REPO_COMMIT_MESSAGE_EXTENDED": "more",
                                       "APPVEYOR_REPO_BRANCH": "mybranch",
                                       "APPVEYOR_REPO_COMMIT": "506c89117650bb12252db26d35b8c2385411f175",
                                       }):
            manager = CIManager(self.printer)
            self.assertIsNone(manager.get_branch())
            self.assertEquals(manager.get_commit_msg(), "msg more")
            self.assertEquals(manager.get_commit_id(), "506c89117650bb12252db26d35b8c2385411f175")

        # Appveyor no extended
        with tools.environment_append({"APPVEYOR": "1",
                                       "APPVEYOR_PULL_REQUEST_NUMBER": "1",
                                       "APPVEYOR_REPO_COMMIT_MESSAGE": "msg",
                                       "APPVEYOR_REPO_BRANCH": "mybranch",
                                       }):
            manager = CIManager(self.printer)
            self.assertIsNone(manager.get_branch())
            self.assertEquals(manager.get_commit_msg(), "msg")
Beispiel #6
0
    def login(self):
        if self.variables.docker_upload_only_when_stable:
            printer = Printer()
            ci_manager = CIManager(printer)
            if ci_manager.get_branch() != "master" or ci_manager.is_pull_request():
                logging.info("Skipped login, is not stable branch")
                return

        if not self.variables.docker_upload:
            logging.info("Skipped login, DOCKER_UPLOAD is not activated")
            return

        if not self.variables.docker_password:
            logging.warning("Skipped login, DOCKER_PASSWORD is missing!")
            return

        if not self.variables.docker_login_username:
            logging.warning("Skipped login, DOCKER_LOGIN_USERNAME is missing!")
            return

        logging.info("Login to Docker hub account")
        result = subprocess.call([
            "docker", "login", "-u", self.variables.docker_login_username, "-p",
            self.variables.docker_password
        ])
        if result != os.EX_OK:
            raise RuntimeError("Could not login username %s "
                               "to Docker hub." % self.variables.docker_login_username)

        logging.info("Logged in Docker hub account with success")
        self.loggedin = True
Beispiel #7
0
    def test_azure_instance(self):
        with tools.environment_append({
                "SYSTEM_TEAMFOUNDATIONCOLLECTIONURI": "https://dev.azure.com/",
                "BUILD_SOURCEVERSIONMESSAGE": "msg",
                "BUILD_SOURCEVERSION":
                "506c89117650bb12252db26d35b8c2385411f175",
                "BUILD_SOURCEBRANCH": "mybranch",
                "BUILD_REASON": "manual",
        }):
            manager = CIManager(self.printer)
            self.assertEquals(manager.get_branch(), "mybranch")
            self.assertEquals(manager.get_commit_msg(), "msg")
            self.assertEquals(manager.get_commit_id(),
                              "506c89117650bb12252db26d35b8c2385411f175")
            self.assertEquals(manager.is_pull_request(), False)

        with tools.environment_append({
                "SYSTEM_TEAMFOUNDATIONCOLLECTIONURI": "https://dev.azure.com/",
                "BUILD_SOURCEVERSIONMESSAGE": "msg",
                "BUILD_SOURCEVERSION":
                "506c89117650bb12252db26d35b8c2385411f175",
                "BUILD_SOURCEBRANCH": "refs/heads/testing/version",
                "BUILD_REASON": "PullRequest",
        }):
            manager = CIManager(self.printer)
            self.assertEquals(manager.get_branch(), "testing/version")
            self.assertEquals(manager.get_commit_msg(), "msg")
            self.assertEquals(manager.get_commit_id(),
                              "506c89117650bb12252db26d35b8c2385411f175")
            self.assertEquals(manager.is_pull_request(), True)

        with tools.environment_append({
                "SYSTEM_TEAMFOUNDATIONCOLLECTIONURI": "https://dev.azure.com/",
                "BUILD_SOURCEVERSIONMESSAGE": "msg",
                "BUILD_SOURCEVERSION":
                "506c89117650bb12252db26d35b8c2385411f175",
                "BUILD_SOURCEBRANCH": "refs/heads/stable/version",
                "BUILD_REASON": "IndividualCI",
        }):
            manager = CIManager(self.printer)
            self.assertEquals(manager.get_branch(), "stable/version")
            self.assertEquals(manager.get_commit_msg(), "msg")
            self.assertEquals(manager.get_commit_id(),
                              "506c89117650bb12252db26d35b8c2385411f175")
            self.assertEquals(manager.is_pull_request(), False)
 def test_jenkins_instance(self):
     with tools.environment_append({"JENKINS_URL": "1",
                                    "BRANCH_NAME": "mybranch",
                                    "GIT_COMMIT": "506c89117650bb12252db26d35b8c2385411f175",
                                    }):
         manager = CIManager(self.printer)
         self.assertEquals(manager.get_branch(), "mybranch")
         self.assertIsNotNone(manager.get_commit_msg())
         self.assertEquals(manager.get_commit_id(), "506c89117650bb12252db26d35b8c2385411f175")
 def test_travis_instance(self):
     with tools.environment_append({"TRAVIS": "1",
                                    "TRAVIS_COMMIT_MESSAGE": "msg",
                                    "TRAVIS_BRANCH": "mybranch",
                                    "TRAVIS_COMMIT": "506c89117650bb12252db26d35b8c2385411f175"
                                    }):
         manager = CIManager(self.printer)
         self.assertEquals(manager.get_branch(), "mybranch")
         self.assertEquals(manager.get_commit_msg(), "msg")
         self.assertEquals(manager.get_commit_id(), "506c89117650bb12252db26d35b8c2385411f175")
 def test_gitlab_instance(self):
     with tools.environment_append({"GITLAB_CI": "1",
                                    "CI_BUILD_REF_NAME": "mybranch",
                                    "CI_COMMIT_TITLE": "foo bar",
                                    "CI_COMMIT_SHA": "506c89117650bb12252db26d35b8c2385411f175",
                                    }):
         manager = CIManager(self.printer)
         self.assertEquals(manager.get_branch(), "mybranch")
         self.assertIsNotNone(manager.get_commit_msg())
         self.assertEquals(manager.get_commit_id(), "506c89117650bb12252db26d35b8c2385411f175")
Beispiel #11
0
 def test_bamboo_instance(self):
     with tools.environment_append({
             "bamboo_buildNumber":
             "xx",
             "bamboo_planRepository_branch":
             "mybranch"
     }):
         manager = CIManager(self.printer)
         self.assertEquals(manager.get_branch(), "mybranch")
         self.assertIsNotNone(manager.get_commit_msg())
 def test_circleci_instance(self):
     with tools.environment_append({
             "CIRCLECI":
             "1",
             "CIRCLE_BRANCH":
             "mybranch",
             "CIRCLE_SHA1":
             "506c89117650bb12252db26d35b8c2385411f175",
     }):
         manager = CIManager(self.printer)
         self.assertEquals(manager.get_branch(), "mybranch")
         self.assertIsNotNone(manager.get_commit_msg())
         self.assertEquals(manager.get_commit_id(),
                           "506c89117650bb12252db26d35b8c2385411f175")
Beispiel #13
0
def get_version_from_ci():
    printer = Printer(hidesensitive)
    ci_man = CIManager(printer)
    if ci_man.is_tag():
        try:
            version = subprocess.check_output(
                "git describe --exact-match --tags",
                shell=True).decode().strip()
        except Exception:
            return None
    else:
        version = ci_man.get_branch()
    version = re.sub("^refs/tags/", "", version)
    version = re.sub("^.*/v?", "", version)
    version = re.sub("^v?", "", version)

    return version
Beispiel #14
0
    def upload(self):
        """ Set taocpp repository to be used on upload.
            The upload server address could be customized by env var
            CONAN_UPLOAD. If not defined, the method will check the branch name.
            Only master or CONAN_STABLE_BRANCH_PATTERN will be accepted.
            The master branch will be pushed to testing channel, because it does
            not match the stable pattern. Otherwise it will upload to stable
            channel.
        """
        if os.getenv("CONAN_UPLOAD", None) is not None:
            return os.getenv("CONAN_UPLOAD")

        printer = Printer(None)
        ci_manager = CIManager(printer)
        branch = ci_manager.get_branch()

        patterns = [r"v?\d+\.\d+\.\d+-.*", self.stable_branch_pattern]
        for pattern in patterns:
            prog = re.compile(pattern)
            if branch and prog.match(branch):
                return "https://api.bintray.com/conan/taocpp/public-conan"
    def upload(self):
        """ Set taocpp repository to be used on upload.
            The upload server address could be customized by env var
            CONAN_UPLOAD. If not defined, the method will check the branch name.
            Only master or CONAN_STABLE_BRANCH_PATTERN will be accepted.
            The master branch will be pushed to testing channel, because it does
            not match the stable pattern. Otherwise it will upload to stable
            channel.
        """
        if os.getenv("CONAN_UPLOAD", None) is not None:
            return os.getenv("CONAN_UPLOAD")

        printer = Printer(None)
        ci_manager = CIManager(printer)
        branch = ci_manager.get_branch()

        patterns = [r"v?\d+\.\d+\.\d+-.*", self.stable_branch_pattern]
        for pattern in patterns:
            prog = re.compile(pattern)
            if branch and prog.match(branch):
                return "https://api.bintray.com/conan/taocpp/public-conan"
Beispiel #16
0

def _is_not_VS15MDonWindows(build):
    return not (build.settings["compiler.version"] == '15'
                and build.settings["compiler.runtime"] == 'MD')


if __name__ == "__main__":

    docker_entry_script = None
    if platform.system() == "Linux":
        docker_entry_script = "./.ci/entry.sh"

    printer = Printer(None)
    ci_manager = CIManager(printer)
    branch = ci_manager.get_branch()
    version = build_shared.get_version()
    recipe = build_shared.get_recipe_path(None)
    name = build_shared.get_name_from_recipe(recipe=recipe)
    username, version, kwargs = build_shared.get_conan_vars(recipe=recipe)
    print("Branch detected: ", branch)
    print("Version detected: ", build_shared.get_version())

    new_reference = None
    # for builds other than release create a separate channel
    if not branch.startswith("release"):
        new_reference = "{}/{}@{}/{}".format(name, version, username,
                                             branch.replace('/', '_'))
        print("Generated reference: ", new_reference)

    builder = build_template_default.get_builder(
Beispiel #17
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import requests
from cpt import ci_manager
from cpt.ci_manager import CIManager
from cpt.printer import Printer

if __name__ == "__main__":
    manager = CIManager(Printer())
    response = None
    if ci_manager.is_travis():
        if manager.get_branch() == "stable/3.6.1" and \
           not manager.is_pull_request() and \
           os.getenv("CONAN_CLANG_VERSIONS") == "6.0" and \
           os.getenv("CONAN_ARCHS") == "x86_64" and \
           os.getenv("TRAVIS_TOKEN"):
            json_data = {"request": {"branch": "release/3.6.1"}}
            headers = {
                "Authorization": "token %s" % os.getenv("TRAVIS_TOKEN"),
                "Travis-API-Version": "3"
            }
            response = requests.post(
                url=
                "https://api.travis-ci.com/repo/bincrafters%2Fprotobuf-integration-test/requests",
                json=json_data,
                headers=headers)
        else:
            print("Travis CI job does not match:")
            print("BRANCH: %s" % manager.get_branch())
            print("PULL REQUEST: %s" % manager.is_pull_request())
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import requests
from cpt import ci_manager
from cpt.ci_manager import CIManager
from cpt.printer import Printer

if __name__ == "__main__":
    manager = CIManager(Printer())
    response = None
    if manager.get_branch() == "stable/3.6.1" and not manager.is_pull_request(
    ) and os.getenv("ARCH") == "x86":
        if ci_manager.is_travis():
            json_data = {"request": {"branch": "release/3.6.1"}}
            headers = {
                "Authorization": "token %s" % os.getenv("TRAVIS_TOKEN"),
                "Travis-API-Version": "3"
            }
            response = requests.post(
                url=
                "https://api.travis-ci.com/repo/bincrafters%2Fprotobuf-integration-test/requests",
                json=json_data,
                headers=headers)
        elif ci_manager.is_appveyor():
            json_data = {
                "accountName": "BinCrafters",
                "projectSlug": "protobuf-integration-test",
                "branch": "release/3.6.1"
            }
            headers = {
Beispiel #19
0
 def _branch(self):
     """ Get branch name from CI manager
     """
     printer = Printer(None)
     ci_manager = CIManager(printer)
     return ci_manager.get_branch()
    def test_instance_correct(self):
        # Bamboo
        with tools.environment_append({
                "bamboo_buildNumber":
                "xx",
                "bamboo_planRepository_branch":
                "mybranch"
        }):
            manager = CIManager(self.printer)
            self.assertEquals(manager.get_branch(), "mybranch")
            self.assertIsNotNone(manager.get_commit_msg())

        # Travis
        with tools.environment_append({
                "TRAVIS": "1",
                "TRAVIS_COMMIT_MESSAGE": "msg",
                "TRAVIS_BRANCH": "mybranch",
        }):
            manager = CIManager(self.printer)
            self.assertEquals(manager.get_branch(), "mybranch")
            self.assertEquals(manager.get_commit_msg(), "msg")

        # Appveyor
        with tools.environment_append({
                "APPVEYOR": "1",
                "APPVEYOR_REPO_COMMIT_MESSAGE": "msg",
                "APPVEYOR_REPO_COMMIT_MESSAGE_EXTENDED": "more",
                "APPVEYOR_REPO_BRANCH": "mybranch",
        }):
            manager = CIManager(self.printer)
            self.assertEquals(manager.get_branch(), "mybranch")
            self.assertEquals(manager.get_commit_msg(), "msg more")

        # Appveyor PULL REQUEST
        with tools.environment_append({
                "APPVEYOR": "1",
                "APPVEYOR_PULL_REQUEST_NUMBER": "1",
                "APPVEYOR_REPO_COMMIT_MESSAGE": "msg",
                "APPVEYOR_REPO_COMMIT_MESSAGE_EXTENDED": "more",
                "APPVEYOR_REPO_BRANCH": "mybranch",
        }):
            manager = CIManager(self.printer)
            self.assertIsNone(manager.get_branch())
            self.assertEquals(manager.get_commit_msg(), "msg more")

        # Appveyor no extended
        with tools.environment_append({
                "APPVEYOR": "1",
                "APPVEYOR_PULL_REQUEST_NUMBER": "1",
                "APPVEYOR_REPO_COMMIT_MESSAGE": "msg",
                "APPVEYOR_REPO_BRANCH": "mybranch",
        }):
            manager = CIManager(self.printer)
            self.assertIsNone(manager.get_branch())
            self.assertEquals(manager.get_commit_msg(), "msg")

        # Circle CI
        with tools.environment_append({
                "CIRCLECI": "1",
                "CIRCLE_BRANCH": "mybranch",
        }):
            manager = CIManager(self.printer)
            self.assertEquals(manager.get_branch(), "mybranch")
            self.assertIsNotNone(manager.get_commit_msg())

        # Gitlab
        with tools.environment_append({
                "GITLAB_CI": "1",
                "CI_BUILD_REF_NAME": "mybranch",
        }):
            manager = CIManager(self.printer)
            self.assertEquals(manager.get_branch(), "mybranch")
            self.assertIsNotNone(manager.get_commit_msg())

        # Jenkins
        with tools.environment_append({
                "JENKINS_URL": "1",
                "BRANCH_NAME": "mybranch",
        }):
            manager = CIManager(self.printer)
            self.assertEquals(manager.get_branch(), "mybranch")
            self.assertIsNotNone(manager.get_commit_msg())
Beispiel #21
0
 def branch(self):
     """ Get branch name
     """
     printer = Printer(None)
     ci_manager = CIManager(printer)
     return ci_manager.get_branch()