Задать вопрос
Ответы пользователя по тегу Python
  • Как передать код возврата из Python 3.X?

    @lnl Автор вопроса
    Вопрос решен, косяк Jenkins... Python выдает правильный код возврата, а вот Jenkins напрочь отказывается его воспринимать. Решил вопрос присвоением переменной значения 0/1 из временного файла, который впоследствии затирается. Если 1, то exit 1, иначе exit 0
    Ответ написан
    Комментировать
  • Какой формат дат на python использовался?

    @lnl Автор вопроса
    Сделал сам, всем спасибо! Вот код, если кому интересно:
    from datetime import datetime, timedelta
    import re
    
    #Текущая дата
    NowDate = datetime.date(datetime.now())
    
    #Полученная дата в текст, обрезаем лишние символы, добавляем три часа, так как полученное время было GMT +0 и оставляем только дату
    JenkinsDate = str(LastSuccessDate) #LastSuccessDate - переменная, получающая циклом дату вида: 2015-05-31 23:24:59+00:00
    JenkinsDate = JenkinsDate[0:-6]
    JenkinsDate = datetime.strptime(JenkinsDate, '%Y-%m-%d %H:%M:%S')
    JenkinsDate = JenkinsDate + timedelta(hours=3)
    JenkinsDate = datetime.date(JenkinsDate )
    
    #Разница дат
    DateDelta = str(NowDate -JenkinsDate)
    
    if re.search('day,', DateDelta):
        DateDelta=DateDelta[0:-13]
    elif re.search('days,', DateDelta):
        DateDelta=DateDelta[0:-14]
    else:
        DateDelta='0'            
    
    print('Последний успех: '+ str(DateDelta) + ' дня(-ей) назад')
    Ответ написан
  • Как объединить в группы элементы в генерируемом отчете на html скриптом на питон?

    @lnl Автор вопроса
    Собственно мудрено сделал, но работает, разбираться пока лень, но работает...
    MainAdded=0
    StableAdded=0
    AddingGroup=True
    CountSuccess=0
    CountFail=0
    CountAbortedProceed=0
    CountSuccessMain = 0
    CountSuccessStable = 0
    CountFailMain = 0
    CountFailStable = 0
    CountAbortedProceedMain = 0
    CountAbortedProceedStable = 0
    
    #код ниже находится в цикле
    if BuildStatusRus == 'Протестировано успешно':
        CountSuccess=CountSuccess+1
        if not re.search('OutPlain', CurrentNameJobGood):
            CountSuccessMain = CountSuccessMain + 1
        else:
            CountSuccessStable = CountSuccessStable + 1
    elif BuildStatusRus == 'Протестировано с ошибками':
        CountFail=CountFail+1
        if not re.search('OutPlain', CurrentNameJobGood):
            CountFailMain = CountFailMain + 1
        else:
            CountFailStable = CountFailStable + 1
    else:
        CountAbortedProceed=CountAbortedProceed+1
        if not re.search('OutPlain', CurrentNameJobGood):
            CountAbortedProceedMain = CountAbortedProceedMain + 1
        else:
            CountAbortedProceedStable = CountAbortedProceedStable + 1
    CountAll=CountSuccess+CountFail+CountAbortedProceed
    CountAllMain=CountSuccessMain+CountFailMain+CountAbortedProceedMain
    CountAllStable=CountSuccessStable+CountFailStable+CountAbortedProceedStable
    
    if not re.search('OutPlain', CurrentNameJobGood):
        if MainAdded==1:
            AddingGroup = False
        else:
            MainAdded=1
            StableAdded=0
            AddingGroup = True
    else:
        if StableAdded==1:            
            AddingGroup = False
        else:
            StableAdded=1
            MainAdded=0
            AddingGroup = True
    
    Tr2 = """<tr bgcolor = "#00BFFF">
    <td colspan="3"><b>Группа проектов: </b>{ProjectGroup}</td>
    </tr>"""
    
    if AddingGroup==True and MainAdded==1:
        NewTr2 = Tr2.format(ProjectGroup='<b>Main (Основное хранилище)</b>',AllCountTmpl=CountAllMain,CountSuccessTmpl=CountSuccessMain,CountFailTmpl=CountFailMain)#, из них успешных: <br>' + CountSuccessMain + '</b>, провалившихся: <b>' + CountFailMain + '</b>')
        AddingGroup = False
    elif AddingGroup==True and StableAdded==1:
        NewTr2 = Tr2.format(ProjectGroup='<b>Stable (Внеплановое хранилище)</b>',AllCountTmpl=CountAllStable,CountSuccessTmpl=CountSuccessStable,CountFailTmpl=CountFailStable)#, из них успешных: <br>' + CountSuccessStable + '</b>, провалившихся: <b>' + CountFailStable + '</b>')
        AddingGroup = False
    else:
        NewTr2 = """"""

    Можно было сделать и проще, но в лом уже, есть небольшие недочеты, типа создание еще одной группы если после Stable есть еще проекты.
    Ответ написан
    Комментировать
  • Как отправить на почту отчет сформированный скриптом Python 3.4 в системе Jenkins?

    @lnl Автор вопроса
    Вопрос решен. Дописал скрипт, что бы еще копия файла создавалась со статичным именем report.htm в папке проекта, затем в настройках проекта в Jenkins кинул прямую ссылку на файл в Default Content.
    Ответ написан
    Комментировать
  • Как получить поля заданий из системы CI Jenkins скриптом на Python 3.4?

    @lnl Автор вопроса
    Проблему удалось решить своими силами, всем спасибо. Самый нормальный API для Jenkins это jenkinsapi
    Ставим его через
    pip install jenkinsapi
    или любым другим способом, который нравится.
    Код для проверки:
    #Необходимые библиотеки
    import jenkinsapi
    from jenkinsapi.jenkins import Jenkins
    jenkinsci = Jenkins('http://localhost:8080') #путь к Jenkins
    print(jenkinsci.version) #Проверяем версию

    Страничка библиотеки jenkinsapi и документация по ней.
    Ответ написан
    Комментировать
  • Как выгрузить определенные поля таблицы из DB Oracle 11G в файл скриптом, написанным на Python 3.4?

    @lnl Автор вопроса
    Сделал как-то так пока:
    connection = cx_Oracle.connect('scott/tiger@oradb')
    db_cursor=connection.cursor()
    db_cursor.execute("""
    SELECT USER_NAME, USER_DEPT
    FROM USERS
    ORDER BY USER_NAME""")

    Помогите скорректировать что бы "это" работало? И как это потом выгрузить в файл? Что записывать в переменную - курсор?
    Ответ написан
    Комментировать