OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Воскресенье, 16 Декабрь, 2018 11:49

Часовой пояс: UTC + 3 часа


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему  [ Сообщений: 17 ] 
Автор Сообщение
 Заголовок сообщения: Автоматизация сборки БлэкБокс
СообщениеДобавлено: Среда, 16 Июль, 2014 19:16 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
Моё представление автоматической сборки сводится к следующему:
  1. скомпилировать все модули текущей версией компилятора
  2. прогнать тесты, выявив ошибки
  3. в случае неудачи записать всё в журнал для дальнейшего анализа и доложить о результатах
  4. если все тесты пройдены успешно
    1. собрать новую версию
    2. подготовить документацию
    3. подготовить установщиком новую версию
    4. доложить об успехе

Имеем консольную версию компилятора для Windows, Linux, BSD. Требуется лишь разработать сценарий сборки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматизация сборки БлэкБокс
СообщениеДобавлено: Четверг, 17 Июль, 2014 13:51 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
я писал(а):
Опять же, на веб-сервере не нужно выполнять процесс автоматизированной сборки. У веб-сервера другие задачи. Тем более, он ограничен по ресурсам.
Для этого я бы создал инфраструктуру на машине разработчика или специальном CI сервере.

И ещё ссылка: Continuous Integration для самых маленьких


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматизация сборки БлэкБокс
СообщениеДобавлено: Понедельник, 21 Июль, 2014 18:23 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2235
Вот, таки настроил автосборку установочников!

Вот тут лежат результаты:
http://blackboxframework.org/dev

Тут больше деталей:
http://redmine.blackboxframework.org/issues/3#note-6


Получился вот такой файл примерно, это некий начальный вариант, который предполагается улучшать. Ваши предложения приветствуются!

Код:
#!/usr/bin/python

from subprocess import Popen, PIPE
import sys, datetime

# this files contains hashes of last commits in master and development branches
DEVHASH = open("/var/www/tribiq/build/devHash", "r+")
STABLEHASH = open("/var/www/tribiq/build/stableHash", "r+")

process1 = Popen("cd /home/git/bbcb.git && git log", stdout=PIPE, stderr=PIPE, shell=True)
(stdout1, stderr1) = process1.communicate()
if stderr1 == "":
   hash1 = stdout1.split("\n")[0].split(" ")[1]
   if STABLEHASH.readline().strip() == hash1:
      rebuildStable = False
      #print "No new commits in 'master'<br>"
   else:
      rebuildStable = True
      #print "New commit in 'master', need to run build pipeline<br>"
else:
   print stderr1

process2 = Popen("cd /home/git/bbcb.git && git log development", stdout=PIPE, stderr=PIPE, shell=True)
(stdout2, stderr2) = process2.communicate()
if stderr2 == "":
   hash2 = stdout2.split("\n")[0].split(" ")[1]
   if DEVHASH.readline().strip() == hash2:
      rebuildDev = False
      #print "No new commits in 'developent'<br>"
   else:
      rebuildDev = True
      #print "New commit in 'development', need to run build pipeline<br>"
else:
   print stderr2


def log(out, err):
   if out != "":   
      for line1 in out.split("\n"):
         print line1 + "<br>"
   if err != "":
      for line2 in err.split("\n"):
         print line2 + "<br>"

#### BUILDING STABLE


if rebuildStable:
   print "Building from 'master' at " + datetime.datetime.now().isoformat() + "<br>"
   print "The build pipeline for 'master' brunch is not developed..."
   # STABLEHASH.seek(0)
   # STABLEHASH.write(hash1)
   # STABLEHASH.truncate()

#### BUILDING DEVELOPMENT
if rebuildDev:

   print "<br><b>Building from 'development' at " + datetime.datetime.now().isoformat() + "</b><br>"
   print "Trying to check repository state...<br>"
   try:
       f = open('/home/git/bbcb.git.lock', 'r')
   except IOError:
       print "Repository is not locked. Continuing.<br>"
   else:
       print "Repository is locked (possibly because of sync process).<br>Aborting.<br>"
       f.close()
       sys.exit()

   print "Trying to clone repository into temporary folder...<br>"

   process1 = Popen("cd /var/www/tribiq/build && git clone /home/git/bbcb.git bb", stdout=PIPE, stderr=PIPE, shell=True)
   (stdout1, stderr1) = process1.communicate()
   log(stdout1, stderr1)

   print "Checking out development...<br>"
   process2 = Popen("cd /var/www/tribiq/build/bb && git checkout development", stdout=PIPE, stderr=PIPE, shell=True)
   (stdout2, stderr2) = process2.communicate()
   log(stdout2, stderr2)

   print "Building BlackBox...<br>"
   process3 = Popen("cd /var/www/tribiq/build/bb && /usr/local/bin/wine dev0.exe < build.txt 2>&1", stdout=PIPE, stderr=PIPE, shell=True)
   (stdout3, stderr3) = process3.communicate()
   log(stdout3, stderr3)

   print "Building Setup File...<br>"
   process4 = Popen("cd /var/www/tribiq/build/bb && mv Code System/ && mv Sym System/ && cd appbuild && /usr/local/bin/iscc - < ./BlackBox.iss", stdout=PIPE, stderr=PIPE, shell=True)
   (stdout4, stderr4) = process4.communicate()
   log(stdout4, stderr4)

   IN = open("/var/www/tribiq/build/bb/appbuild/BlackBox.iss")

   for line in IN:
      if line.split("=")[0] == "AppVersion":
         version =  line.split("=")[1].strip()
   print "The version of build: " + version + "<br>"

   print "Moving Setup File to dev folder...<br>"
   process5 = Popen("mv /var/www/tribiq/build/bb/appbuild/Output/setup.exe /var/www/tribiq/dev/blackbox-" + version + "-setup.exe", stdout=PIPE, stderr=PIPE, shell=True)
   (stdout5, stderr5) = process5.communicate()
   log(stdout5, stderr5)

   if stderr5 == "":
      print "Hash for 'development' brunch updated<br>"
      DEVHASH.seek(0)
      DEVHASH.write(hash2)
      DEVHASH.truncate()

   print "Cleaning...<br>"
   process6 = Popen("cd /var/www/tribiq/build && rm bb -R", stdout=PIPE, stderr=PIPE, shell=True)
   (stdout6, stderr6) = process6.communicate()
   log(stdout6, stderr6)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматизация сборки БлэкБокс
СообщениеДобавлено: Вторник, 22 Июль, 2014 06:40 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7932
Откуда: Троицк, Москва
Вся эта ... материя, она действительно нужна?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматизация сборки БлэкБокс
СообщениеДобавлено: Вторник, 22 Июль, 2014 08:12 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2235
Info21 писал(а):
Вся эта ... материя, она действительно нужна?

Время покажет, это идея Джозефа, но я с ним в итоге согласился, глядя на сообщество. Многим лень разбираться с репозиториями, а чтобы «быть в теме», надо всегда иметь возможность поставить на комп последнюю «горячую» версию. К тому-же, тот факт, что среда каждый раз компилируется из исходников — это своеобразный тест и гарантия, что исходники соответствуют машинным кодам.

Наличие горячих сборок снижает порог для любопытствующих поглядеть как там дела с разработкой. Еще стоит добавить упаковку в архив, чтобы не было необходимости устанавливать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматизация сборки БлэкБокс
СообщениеДобавлено: Среда, 23 Июль, 2014 00:10 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7932
Откуда: Троицк, Москва
Репозиторий тут (в этой ... материи) как-то виноват?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматизация сборки БлэкБокс
СообщениеДобавлено: Среда, 23 Июль, 2014 05:04 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2235
Info21 писал(а):
Репозиторий тут (в этой ... материи) как-то виноват?

Я не совсем понимаю вопрос :)

История такая. Центр таки решился, что нужно иметь некое хранилище в сети, был выбран GitHub. А дальше есть два варианта:

1. Хранить там всю среду целиком
2. Хранить в хранилище исходный код

Я всегда пользовался первым методом для простоты, но второй метод более грамотный и имеет ряд преимуществ. Однако создаются сложности для разработчика, ведь эти исходные коды нужно собирать самой актуальной версией компилятора. Для этого я использовал наработки Александра Ширяева с консольным компилятором, добавил DevComDebug и убрал размещение консоли WinApi.AllocConsole. В таком виде этот компилятор может собирать среду из исходных кодов хранилища и на стороне сервера при создании файлов установки.

Если ведется доработка компилятора, то сам консольный компилятор рекурсивно должен быть пересобран новым вариантом компилятора из GUI среды и обновлен в хранилище. Все инструменты для этого уже сейчас в хранилище.

Вот такая история.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматизация сборки БлэкБокс
СообщениеДобавлено: Среда, 23 Июль, 2014 20:29 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7932
Откуда: Троицк, Москва
Иван Денисов писал(а):
Info21 писал(а):
Репозиторий тут (в этой ... материи) как-то виноват?

Я не совсем понимаю вопрос :)
...
Вот такая история.
Спасибо:

Имеет место преодоление чужеродности репозитория и ББ (или Оберонов вообще?).

Это правильно?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматизация сборки БлэкБокс
СообщениеДобавлено: Среда, 23 Июль, 2014 21:23 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2235
Info21 писал(а):
Имеет место преодоление чужеродности репозитория и ББ (или Оберонов вообще?).

Если говорить про то, что хранилища предполагают плоский текст, а исходники Блэкбокса в бинарном формате, то частично эту проблему решили ранее. Был применен известный конвертер "odcread" как предварительный конвертер бинарных файлов для многих операций с плоским текстом системы контроля версий Git. Поэтому простая синхронизация любого Git хранилища со специально настроенным сервером решает эту проблему в вебе, а локально нужно лишь установить "odcread" и поправить два конфигурационных файла проекта.

Сейчас была решена скорее другая задача.
Дано: исходники компилятора, необходимость их распространять потенциальным разработчикам и автоматически компилировать на Debian сервере без GUI актуальной версией компилятора для создания программ установки среды.
Найти: техническое решение, которое позволило бы иметь идентичный Блэкбокс при ручном развертывании исходников и при автоматической компиляции на сервере.
Решение: хранение вместе с исходными кодами самого актуального консольного варианта компилятора, собранного из этих-же исходников. Автоматизированный алгоритм сборки Блэкбокса на сервере в виде программы для установки с использованием этого консольного компилятора.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматизация сборки БлэкБокс
СообщениеДобавлено: Четверг, 24 Июль, 2014 10:58 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7932
Откуда: Троицк, Москва
Спасибо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматизация сборки БлэкБокс
СообщениеДобавлено: Четверг, 24 Июль, 2014 12:48 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
Иван Денисов писал(а):
Вот, таки настроил автосборку установочников!

Вот тут лежат результаты:
http://blackboxframework.org/dev

Тут больше деталей:
http://redmine.blackboxframework.org/issues/3#note-6


Получился вот такой файл примерно, это некий начальный вариант, который предполагается улучшать. Ваши предложения приветствуются!

Код:
...

В качестве демонстрации возможностей подойдёт, однако вшитые пути и команды программ нужно отделить в первую очередь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматизация сборки БлэкБокс
СообщениеДобавлено: Четверг, 24 Июль, 2014 14:26 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2235
Роман М. писал(а):
В качестве демонстрации возможностей подойдёт, однако вшитые пути и команды программ нужно отделить в первую очередь.


Да, согласен, что это сейчас на время, показать, что работает. Надо будет завести переменные под все пути и программы для начала. Скрипт будет удобнее отлаживать, когда хоть какое-то движение в коде начнутся :) Пока у меня перерыв в направлении Центра, надо другую работу доделать, которой накопилось в огромном количестве. Если Роман ты причешешь скрипт, будет замечательно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматизация сборки БлэкБокс
СообщениеДобавлено: Вторник, 29 Июль, 2014 11:18 

Зарегистрирован: Суббота, 06 Июнь, 2009 07:52
Сообщения: 329
Info21 писал(а):
Имеет место преодоление чужеродности репозитория и ББ (или Оберонов вообще?).

Это правильно?

Эволюция программиста :D Уровень Master Programmer следует за Seasoned professional, где платят построчно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматизация сборки БлэкБокс
СообщениеДобавлено: Пятница, 01 Август, 2014 00:29 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2235
Вот новый скрипт, теперь он еще пакует в ZIP и номер сборки делает инкриментом, прописывая его в скрипт сборки установочника.

Код:
#!/usr/bin/python

from subprocess import Popen, PIPE
import sys, datetime, fileinput

buildDir = "/var/www/tribiq/build"
localRepository = "/var/www/git/bbcb.git"
devDir = "/var/www/tribiq/dev"
stableDir = "/var/www/tribiq/stable"
wine = "/usr/local/bin/wine"
iscc = "/usr/local/bin/iscc"


# this files contains hashes of last commits in master and development branches
DEVHASH = open(buildDir + "/devHash", "r+")
STABLEHASH = open(buildDir + "/stableHash", "r+")

process1 = Popen("cd " + localRepository + " && git log", stdout=PIPE, stderr=PIPE, shell=True)
(stdout1, stderr1) = process1.communicate()
if stderr1 == "":
   hash1 = stdout1.split("\n")[0].split(" ")[1]
   if STABLEHASH.readline().strip() == hash1:
      rebuildStable = False
      #print "No new commits in 'master'<br>"
   else:
      rebuildStable = True
      print "New commit in 'master', need to run build pipeline<br>"
else:
   print stderr1

process2 = Popen("cd " + localRepository + " && git log development", stdout=PIPE, stderr=PIPE, shell=True)
(stdout2, stderr2) = process2.communicate()
if stderr2 == "":
   hash2 = stdout2.split("\n")[0].split(" ")[1]
   if DEVHASH.readline().strip() == hash2:
      rebuildDev = False
      # print "No new commits in 'developent'<br>"
   else:
      rebuildDev = True
      print "New commit in 'development', need to run build pipeline<br>"
else:
   print stderr2


def log(out, err):
   if out != "":   
      for line1 in out.split("\n"):
         print line1 + "<br>"
   if err != "":
      for line2 in err.split("\n"):
         print line2 + "<br>"

#### BUILDING STABLE
if rebuildStable:
   print "Building from 'master' at " + datetime.datetime.now().isoformat() + "<br>"
   print "The build pipeline for 'master' branch is not developed..."
   # STABLEHASH.seek(0)
   # STABLEHASH.write(hash1)
   # STABLEHASH.truncate()


#### BUILDING DEVELOPMENT
if rebuildDev:

   print "<br><b>Building from 'development' at " + datetime.datetime.now().isoformat() + "</b><br>"
   print "Trying to check repository state...<br>"
   try:
       f = open(localRepository + ".lock", "r")
   except IOError:
       print "Repository is not locked. Continuing.<br>"
   else:
       print "Repository is locked (possibly because of sync process).<br>Aborting.<br>"
       f.close()
       sys.exit()

   print "Trying to clone repository into temporary folder...<br>"

   process1 = Popen("cd " + buildDir + " && git clone " + localRepository + " bb", stdout=PIPE, stderr=PIPE, shell=True)
   (stdout1, stderr1) = process1.communicate()
   log(stdout1, stderr1)

   print "Checking out development...<br>"
   process2 = Popen("cd " + buildDir + "/bb && git checkout development", stdout=PIPE, stderr=PIPE, shell=True)
   (stdout2, stderr2) = process2.communicate()
   log(stdout2, stderr2)

   print "Building BlackBox...<br>"
   process3 = Popen("cd " + buildDir + "/bb && " + wine + " dev0.exe < build.txt 2>&1", stdout=PIPE, stderr=PIPE, shell=True)
   (stdout3, stderr3) = process3.communicate()
   log(stdout3, stderr3)

   NUMBER = open("number", "r+")
   buildNum = int(NUMBER.readline().strip())
   IN = open("bb/appbuild/BlackBox.iss", "r")
   lines = IN.readlines()
   IN.close()
   OUT = open("bb/appbuild/BlackBox.iss", "w")
   n = 0
   for line in lines:
      if n == 1:
         version = line.split('"')[1]
      n = n + 1
      if line[:18] == "VersionInfoVersion":
         print >> OUT, line.strip() + str(buildNum).zfill(3)
      else:
         print >> OUT, line,
   OUT.close()
   

   version = version + "." + str(buildNum).zfill(3)

   print "The version of build: " + version + "<br>"

   print "Building Setup File...<br>"
   process4 = Popen("cd " + buildDir + "/bb && mv Code System/ && mv Sym System/ && cd appbuild && " + iscc + " - < ./BlackBox.iss", stdout=PIPE, stderr=PIPE, shell=True)
   (stdout4, stderr4) = process4.communicate()
   log(stdout4, stderr4)


   print "Moving Setup File to dev folder...<br>"
   process5 = Popen("mv " + buildDir + "/bb/appbuild/Output/setup.exe " + devDir + "/blackbox-" + version + "-setup.exe", stdout=PIPE, stderr=PIPE, shell=True)
   (stdout5, stderr5) = process5.communicate()
   log(stdout5, stderr5)

   if stderr5 == "":
      print "Hash for 'development' branch updated<br>"
      DEVHASH.seek(0)
      DEVHASH.write(hash2)
      DEVHASH.truncate()
      print "Build number updated to " + str(buildNum + 1) + "<br>"
      NUMBER.seek(0)
      NUMBER.write(str(buildNum+1))
      NUMBER.truncate()



   print "Zipping...<br>"
   process6 = Popen("cd " + buildDir + "/bb && rm -R *.txt appbuild dev0.exe && zip -r ../../dev/blackbox-" + version + ".zip *", stdout=PIPE, stderr=PIPE, shell=True)
   (stdout6, stderr6) = process6.communicate()
   log(stdout6, stderr6)



   print "Cleaning...<br>"
        process7 = Popen("cd " + buildDir + " && rm bb -R", stdout=PIPE, stderr=PIPE, shell=True)
        (stdout7, stderr7) = process7.communicate()
        log(stdout6, stderr7)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматизация сборки БлэкБокс
СообщениеДобавлено: Пятница, 01 Август, 2014 06:08 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2235
На свежую голову утром нашел еще несколько косяков, поправил.

Скрипт каждые пять минут запускается с помощью Cron:
Код:
*/5 * * * * www-data /var/www/tribiq/build/build.py >> /var/www/tribiq/dev/buildlog.html 2>&1


Результат работы скрипта тут: http://blackboxframework.org/dev/ (см. версию 006)

Код:
#!/usr/bin/python

from subprocess import Popen, PIPE
import sys, datetime, fileinput

buildDir = "/var/www/tribiq/build"
localRepository = "/var/www/git/bbcb.git"
devDir = "/var/www/tribiq/dev"
stableDir = "/var/www/tribiq/stable"
wine = "/usr/local/bin/wine"
iscc = "/usr/local/bin/iscc"


# this files contains hashes of last commits in master and development branches
DEVHASH = open(buildDir + "/devHash", "r+")
STABLEHASH = open(buildDir + "/stableHash", "r+")

process1 = Popen("cd " + localRepository + " && git log", stdout=PIPE, stderr=PIPE, shell=True)
(stdout1, stderr1) = process1.communicate()
if stderr1 == "":
   hash1 = stdout1.split("\n")[0].split(" ")[1]
   if STABLEHASH.readline().strip() == hash1:
      rebuildStable = False
      #print "No new commits in 'master'<br>"
   else:
      rebuildStable = True
      print "New commit in 'master', need to run build pipeline<br>"
else:
   print stderr1

process2 = Popen("cd " + localRepository + " && git log development", stdout=PIPE, stderr=PIPE, shell=True)
(stdout2, stderr2) = process2.communicate()
if stderr2 == "":
   hash2 = stdout2.split("\n")[0].split(" ")[1]
   if DEVHASH.readline().strip() == hash2:
      rebuildDev = False
      # print "No new commits in 'developent'<br>"
   else:
      rebuildDev = True
      print "New commit in 'development', need to run build pipeline<br>"
else:
   print stderr2


def log(out, err):
   if out != "":   
      for line1 in out.split("\n"):
         print line1 + "<br>"
   if err != "":
      for line2 in err.split("\n"):
         print line2 + "<br>"

#### BUILDING STABLE
if rebuildStable:
   print "Building from 'master' at " + datetime.datetime.now().isoformat() + "<br>"
   print "The build pipeline for 'master' branch is not developed..."
   # STABLEHASH.seek(0)
   # STABLEHASH.write(hash1)
   # STABLEHASH.truncate()


#### BUILDING DEVELOPMENT
if rebuildDev:

   print "<br><br><b>Building from 'development' at " + datetime.datetime.now().isoformat() + "</b><br>"
   print "Trying to check repository state...<br>"
   try:
      f = open(localRepository + ".lock", "r")
   except IOError:
      print "Repository is not locked. Continuing.<br>"
   else:
      print "Repository is locked (possibly because of sync process).<br>Aborting.<br>"
      f.close()
      sys.exit()

   print "Trying to clone repository into temporary folder...<br>"

   process1 = Popen("cd " + buildDir + " && git clone " + localRepository + " bb", stdout=PIPE, stderr=PIPE, shell=True)
   (stdout1, stderr1) = process1.communicate()
   log(stdout1, stderr1)

   print "Checking out development...<br>"
   process2 = Popen("cd " + buildDir + "/bb && git checkout development", stdout=PIPE, stderr=PIPE, shell=True)
   (stdout2, stderr2) = process2.communicate()
   log(stdout2, stderr2)

   print "Building BlackBox...<br>"
   process3 = Popen("cd " + buildDir + "/bb && " + wine + " dev0.exe < build.txt 2>&1", stdout=PIPE, stderr=PIPE, shell=True)
   (stdout3, stderr3) = process3.communicate()
   log(stdout3, stderr3)

   NUMBER = open(buildDir + "/number", "r+")
   buildNum = int(NUMBER.readline().strip())
   IN = open(buildDir + "/bb/appbuild/BlackBox.iss", "r")
   lines = IN.readlines()
   IN.close()
   OUT = open(buildDir + "/bb/appbuild/BlackBox.iss", "w")
   n = 0
   for line in lines:
      if n == 1:
         version = line.split('"')[1]
      n = n + 1
      if line[:18] == "VersionInfoVersion":
         print >> OUT, line.strip() + str(buildNum).zfill(3)
      else:
         print >> OUT, line,
   OUT.close()
   

   version = version + "." + str(buildNum).zfill(3)

   print "The version of build: " + version + "<br>"

   print "Building Setup File...<br>"
   process4 = Popen("cd " + buildDir + "/bb && mv Code System/ && mv Sym System/ && cd appbuild && " + iscc + " - < ./BlackBox.iss", stdout=PIPE, stderr=PIPE, shell=True)
   (stdout4, stderr4) = process4.communicate()
   log(stdout4, stderr4)


   print "Moving Setup File to dev folder...<br>"
   process5 = Popen("mv " + buildDir + "/bb/appbuild/Output/setup.exe " + devDir + "/blackbox-" + version + "-setup.exe", stdout=PIPE, stderr=PIPE, shell=True)
   (stdout5, stderr5) = process5.communicate()
   log(stdout5, stderr5)

   if stderr5 == "":
      print "Hash for 'development' branch updated<br>"
      DEVHASH.seek(0)
      DEVHASH.write(hash2)
      DEVHASH.truncate()
      print "Build number updated to " + str(buildNum + 1) + "<br>"
      NUMBER.seek(0)
      NUMBER.write(str(buildNum+1))
      NUMBER.truncate()


   print "Zipping...<br>"
   process6 = Popen("cd " + buildDir + "/bb && rm -R *.txt appbuild dev0.exe && zip -r ../../dev/blackbox-" + version + ".zip *", stdout=PIPE, stderr=PIPE, shell=True)
   (stdout6, stderr6) = process6.communicate()
   log(stdout6, stderr6)


   print "Cleaning...<br><br><br>"
   process7 = Popen("cd " + buildDir + " && rm bb -R", stdout=PIPE, stderr=PIPE, shell=True)
   (stdout7, stderr7) = process7.communicate()
   log(stdout7, stderr7)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматизация сборки БлэкБокс
СообщениеДобавлено: Среда, 06 Август, 2014 23:30 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 7932
Откуда: Троицк, Москва
Не верю (с)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Автоматизация сборки БлэкБокс
СообщениеДобавлено: Четверг, 07 Август, 2014 00:26 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2235
Info21 писал(а):
Не верю (с)

В общем, щепки летят. Я пустил Джозефа на сервер, сейчас он там все переделает малость. У него новая мысль, что собирать надо из главной ветки, 'development' удалить, а изменения предлагать и тестировать в тематических ветках.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2018, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB