Пример #1
0
    def notify(self, app_name, version, description=None, changelog=None):
        if not self._token:
            logging.debug('No New Relic api key configured for %s', app_name)
            return

        if not app_name:
            logging.debug('No New Relic app name configured, app is most likely not on NewRelic')
            return

        logging.debug("Sending deployment notification to New Relic: %s %s %s %s", app_name, version, description,
                      changelog)

        try:
            headers = {
                'x-api-key': self._token
            }

            data = {
                'deployment[app_name]': app_name,
                'deployment[revision]': version,
                'deployment[description]': description,
                'deployment[changelog]': changelog,
                'deployment[user]': 'Lighter'
            }

            return util.xmlRequest(self._url, method='POST', data=data, headers=headers, contentType='application/x-www-form-urlencoded')

        except urllib2.URLError as e:
            logging.warn(str(e))
            print traceback.format_exc()
            return {}
Пример #2
0
    def resolve(self, expression):
        # If it's not a valid version range expression, assume it's a specific version
        if not VersionRange.isExpression(expression):
            return expression

        # Fetch the available versions for this artifact
        metadata = util.xmlRequest('{0}/{1}/{2}/maven-metadata.xml'.format(self._url, self._groupid.replace('.', '/'), self._artifactid))
        versions = util.toList(util.rget(metadata, 'versioning', 'versions', 'version'))
        logging.debug('%s:%s candidate versions %s', self._groupid, self._artifactid, versions)

        # Select the version that best matches the version range expression
        return self.selectVersion(expression, versions)
Пример #3
0
    def fetch(self, version):
        if not version.endswith('-SNAPSHOT'):
            return self._fetch(version)

        # Try to resolve unique/timestamped snapshot versions from maven-metadata.xml
        logging.debug('Trying to resolve %s to a unique timestamp-buildnumber version', version)
        url = '{0}/{1}/{2}/{3}/maven-metadata.xml'.format(self._url, self._groupid.replace('.', '/'), self._artifactid, version)
        metadata = {}

        try:
            metadata = util.xmlRequest(url)
        except urllib2.URLError, e:
            logging.debug('Failed to fetch %s', url)
Пример #4
0
    def testGetXml(self):
        url = 'file:./src/resources/repository/com/meltwater/myservice-snapshot/1.1.1-SNAPSHOT/maven-metadata.xml'
        actual = util.xmlRequest(url)
        expected = {
            'versioning': {
                'snapshot': {
                    'timestamp': '20151102.035053',
                    'buildNumber': '8'
                },
                'lastUpdated': '20151102035120'
            }
        }

        self.assertEquals(actual, expected)
Пример #5
0
    def testGetXml(self):
        url = 'file:./src/resources/repository/com/meltwater/myservice-snapshot/1.1.1-SNAPSHOT/maven-metadata.xml'
        actual = util.xmlRequest(url)
        expected = {
            'versioning': {
                'snapshot': {
                    'timestamp': '20151102.035053',
                    'buildNumber': '8'
                },
                'lastUpdated': '20151102035120'
            }
        }

        self.assertEquals(actual, expected)
Пример #6
0
    def fetch(self, version):
        trailer = '-SNAPSHOT'
        if not version.endswith(trailer):
            return self._fetch(version)

        # Try to resolve unique/timestamped snapshot versions from maven-metadata.xml
        logging.debug('Trying to resolve %s to a unique timestamp-buildnumber version', version)
        url = '{0}/{1}/{2}/{3}/maven-metadata.xml'.format(self._url, self._groupid.replace('.', '/'), self._artifactid, version)
        metadata = {}

        try:
            metadata = util.xmlRequest(url)
        except urllib2.URLError:
            logging.debug('Failed to fetch %s', url)

        # Find a matching snapshot version (Gradle doesn't create <snapshotVersions> but Maven does)
        timestamp = util.rget(metadata, 'versioning', 'snapshot', 'timestamp')
        buildNumber = util.rget(metadata, 'versioning', 'snapshot', 'buildNumber')
        snapshot = '-'.join(filter(bool, [version[0:len(version) - len(trailer)], timestamp, buildNumber])
                            ) if (timestamp is not None and buildNumber is not None) else None
        return self._fetch(version, snapshot, metadata)
Пример #7
0
 def resolve(self, expression):
     metadata = util.xmlRequest('{0}/{1}/{2}/maven-metadata.xml'.format(self._url, self._groupid.replace('.', '/'), self._artifactid))
     versions = util.toList(util.rget(metadata,'versioning','versions','version'))
     logging.debug('%s:%s candidate versions %s', self._groupid, self._artifactid, versions)
     return self.selectVersion(expression, versions)