diff --git a/buildbot/master/commands/coveralls.py b/buildbot/master/commands/coveralls.py new file mode 100644 index 0000000..c17f289 --- /dev/null +++ b/buildbot/master/commands/coveralls.py @@ -0,0 +1,11 @@ +import re +from buildbot.steps.shell import ShellCommand + +class CoverallsCommand(ShellCommand): + command = ["coveralls", "-E", "'/usr/.*'", "-E", "'./CMakeFiles/.*'", "-e", "deps", "-e", "tests"] + + def createSummary(self, log): + match = re.search(r"https://coveralls.io/jobs/([0-9]+)", log.getText(), re.MULTILINE) + if match: + self.addURL("coverage", match.group()) + diff --git a/buildbot/master/master.cfg b/buildbot/master/master.cfg new file mode 100644 index 0000000..98fce47 --- /dev/null +++ b/buildbot/master/master.cfg @@ -0,0 +1,668 @@ +# -*- python -*- +# ex: set syntax=python: + +import json +from buildbot.changes.filter import ChangeFilter +from buildbot.plugins import * + +c = BuildmasterConfig = {} + +# BUILDSLAVES + +secrets = json.load(open('secrets.json')) + +c['slaves'] = [ + buildslave.BuildSlave('linux-amd64', secrets['linux-amd64'], + max_builds=1, + properties={'platform': 'linux-amd64'}), + buildslave.BuildSlave('linux-i386', secrets['linux-i386'], + max_builds=1, + properties={'platform': 'linux-i686'}), + buildslave.BuildSlave('freebsd64', secrets['freebsd64'], + max_builds=1, + properties={'platform': 'freebsd-amd64'}), + buildslave.BuildSlave('arm7', secrets['arm7'], + max_builds=1, + properties={'platform': 'linux-armv7'}), + buildslave.BuildSlave('arm8', secrets['arm8'], + max_builds=1, + properties={'platform': 'linux-armv8'}), + buildslave.BuildSlave('win32', secrets['win32'], + max_builds=1, + properties={'platform': 'win32'}), + buildslave.BuildSlave('win64', secrets['win64'], + max_builds=1, + properties={'platform': 'win64'}), + buildslave.BuildSlave('osx-10.10', secrets['osx-10.10'], + max_builds=1, + properties={'platform': 'osx-10.10'}), + buildslave.BuildSlave('osx-10.11', secrets['osx-10.11'], + max_builds=1, + properties={'platform': 'osx-10.11'}), + buildslave.BuildSlave('osx-10.12', secrets['osx-10.12'], + max_builds=1, + properties={'platform': 'osx-10.12'}), +] + +c['protocols'] = {'pb': {'port': 9989}} + +# CHANGESOURCES + +c['change_source'] = [] +c['change_source'].append(changes.GitPoller( + 'https://github.com/monero-project/monero.git', + workdir='gitpoller-workdir', branch='master', + pollinterval=400)) + +c['change_source'].append(changes.GitPoller( + 'https://github.com/monero-project/monero-core.git', + workdir='gitpoller-workdir', branch='master', + pollinterval=600)) + +c['change_source'].append(changes.GitPoller( + 'https://github.com/monero-project/kovri.git', + workdir='gitpoller-workdir', branch='master', + pollinterval=400)) + +####### SCHEDULERS + +# Configure the Schedulers, which decide how to react to incoming changes. + +c['schedulers'] = [] +from buildbot.plugins import schedulers + +c['schedulers'].append(schedulers.ForceScheduler( + name='force', + builderNames=['monero-tests-ubuntu-16.04-i686','monero-tests-windows-10-i686','monero-tests-freebsd-10.3-amd64','monero-tests-ubuntu-16.04-amd64','monero-tests-osx-10.11','monero-tests-osx-10.10','monero-tests-osx-10.12','monero-tests-ubuntu-16.04-armv7','monero-tests-debian-armv8','monero-tests-windows-10-amd64','monero-core-win32','monero-core-win64','monero-core-freebsd','monero-core-ubuntu-arm7','monero-core-debian-armv8','kovri-all-freebsd64','kovri-all-osx-10.12','kovri-all-osx-10.10','kovri-all-osx-10.11','kovri-all-ubuntu-arm7','kovri-all-ubuntu-i686','kovri-all-win32','kovri-all-win64','kovri-all-debian-arm8','kovri-all-ubuntu-amd64','monero-core-osx-10.12','monero-core-osx-10.11','monero-core-ubuntu-amd64','monero-core-ubuntu-i686','monero-static-osx-10.10','monero-static-osx-10.11','monero-static-win32','monero-static-win64','monero-static-ubuntu-amd64','monero-static-freebsd64','monero-static-ubuntu-arm7','monero-static-debian-armv8','monero-static-ubuntu-i686','monero-static-osx-10.12'])) + +c['schedulers'].append(schedulers.SingleBranchScheduler( + name='monero PR builder', + builderNames=['monero-static-win32','monero-static-win64','monero-static-osx-10.10','monero-static-osx-10.11','monero-static-osx-10.12','monero-static-freebsd64','monero-static-debian-armv8','monero-static-ubuntu-arm7','monero-static-ubuntu-amd64','monero-static-ubuntu-i686'], + change_filter=util.ChangeFilter(repository='https://github.com/monero-project/monero.git') + )) + +c['schedulers'].append(schedulers.SingleBranchScheduler( + name='monero-core PR builder', + builderNames=['monero-core-osx-10.12','monero-core-osx-10.11','monero-core-ubuntu-i686','monero-core-ubuntu-amd64','monero-core-win32','monero-core-win64','monero-core-ubuntu-arm7'], + change_filter=util.ChangeFilter(repository='https://github.com/monero-project/monero-core.git') + )) + +c['schedulers'].append(schedulers.SingleBranchScheduler( + name='kovri PR builder', + builderNames=['kovri-all-win32','kovri-all-win64','kovri-all-freebsd64','kovri-all-osx-10.12','kovri-all-osx-10.10','kovri-all-osx-10.11','kovri-all-ubuntu-amd64','kovri-all-ubuntu-i686','kovri-all-ubuntu-arm7','kovri-all-debian-arm8'], + change_filter=util.ChangeFilter(repository='https://github.com/monero-project/kovri.git') + )) + +c['schedulers'].append(schedulers.Nightly( + name='Tests', + branch='master', + builderNames=['monero-tests-ubuntu-16.04-i686','monero-tests-windows-10-amd64','monero-tests-ubuntu-16.04-armv7','monero-tests-windows-10-i686','monero-tests-freebsd-10.3-amd64','monero-tests-ubuntu-16.04-amd64','monero-tests-osx-10.11','monero-tests-osx-10.10','monero-tests-osx-10.12'], + hour=5, + minute=0, + change_filter=util.ChangeFilter(repository='https://github.com/monero-project/monero.git'), + onlyIfChanged=True)) + +# thanks m-labs https://github.com/m-labs/buildbot-config/blob/master/master.cfg +def addCoverallsUploadSteps(factory, repo_token): + factory.addStep( + CoverallsCommand( + name = 'coveralls', + description = 'uploading', + descriptionDone = 'upload', + descriptionSuffix = 'coveralls', + flunkOnFailure = False, + warnOnFailure = True, + env = { 'COVERALLS_REPO_TOKEN': repo_token }, + # Don't dump env variables potentially containing secret tokens + logEnviron = False + )) + +import re +from commands import CoverallsCommand +from buildbot.steps.shell import ShellCommand +from buildbot.process.properties import WithProperties +from buildbot.status.results import FAILURE, SUCCESS + +# BUILD FACTORIES + +noTestsFactory = util.BuildFactory() +noTestsFactory.addStep(steps.Git(repourl='https://github.com/monero-project/monero.git', mode='full')) +noTestsFactory.addStep(steps.Compile(command = ['make', 'release-static'])) + +noCoretestsFactory = util.BuildFactory() +noCoretestsFactory.addStep(steps.Git(repourl='https://github.com/monero-project/monero.git', mode='full')) +noCoretestsFactory.addStep(steps.Compile(command = ['make', 'release-static'])) +noCoretestsFactory.addStep(steps.Test(command = ['make', 'release-test'], timeout=None, env={'ARGS': " -E 'coretests|libwallet_api_tests' "}, logfiles={'LastTest': 'build/release/Testing/Temporary/LastTest.log','CTestCostData.txt': 'build/release/Testing/Temporary/CTestCostData.txt'})) +noCoretestsFactory.addStep(steps.SetPropertyFromCommand(name = "set version", command = ["git", "rev-parse", "--short", "HEAD"], property = 'gitversion')) +noCoretestsFactory.addStep(steps.ShellCommand(name = "zip", command = ["tar", "-zcvf", WithProperties("monero-%(gitversion)s-%(platform)s.tar.gz"), "build/release/bin"] )) +noCoretestsFactory.addStep(steps.FileUpload(slavesrc=WithProperties("monero-%(gitversion)s-%(platform)s.tar.gz"), masterdest=WithProperties("/home/buildbot/master/public_html/downloads/monero-%(gitversion)s-%(platform)s.tar.gz"), url=WithProperties("https://build.getmonero.org/downloads/monero-%(gitversion)s-%(platform)s.tar.gz"))) + +ispHijackedFactory = util.BuildFactory() +ispHijackedFactory.addStep(steps.Git(repourl='https://github.com/monero-project/monero.git', mode='full')) +ispHijackedFactory.addStep(steps.Compile(command = ['make', 'release-static'])) +ispHijackedFactory.addStep(steps.Test(command = ['make', 'release-test'], timeout=None, env={'ARGS': " -E 'coretests|libwallet_api_tests' ", 'GTEST_FILTER': '-DNSResolver.IPv4Failure'}, logfiles={'LastTest': 'build/release/Testing/Temporary/LastTest.log','CTestCostData.txt': 'build/release/Testing/Temporary/CTestCostData.txt'})) +ispHijackedFactory.addStep(steps.SetPropertyFromCommand(name = "set version", command = ["git", "rev-parse", "--short", "HEAD"], property = 'gitversion')) +ispHijackedFactory.addStep(steps.ShellCommand(name = "zip", command = ["tar", "-zcvf", WithProperties("monero-%(gitversion)s-%(platform)s.tar.gz"), "build/release/bin"] )) +ispHijackedFactory.addStep(steps.FileUpload(slavesrc=WithProperties("monero-%(gitversion)s-%(platform)s.tar.gz"), masterdest=WithProperties("/home/buildbot/master/public_html/downloads/monero-%(gitversion)s-%(platform)s.tar.gz"), url=WithProperties("https://build.getmonero.org/downloads/monero-%(gitversion)s-%(platform)s.tar.gz"))) + +osxTestsFactory = util.BuildFactory() +osxTestsFactory.addStep(steps.Git(repourl='https://github.com/monero-project/monero.git', mode='incremental')) +osxTestsFactory.addStep(steps.Test(command = ['make', 'release-test'], timeout=None, logfiles={'LastTest.log': 'build/debug/Testing/Temporary/LastTest.log','CTestCostData.txt': 'build/debug/Testing/Temporary/CTestCostData.txt','coretests.log': 'build/debug/tests/core_tests/coretests.log'})) + +armv8Factory = util.BuildFactory() +armv8Factory.addStep(steps.Git(repourl='https://github.com/monero-project/monero.git', mode='full')) +armv8Factory.addStep(steps.Compile(command = ['make', 'release-static-armv8'])) +armv8Factory.addStep(steps.SetPropertyFromCommand(name = "set version", command = ["git", "rev-parse", "--short", "HEAD"], property = 'gitversion')) +armv8Factory.addStep(steps.ShellCommand(name = "zip", command = ["tar", "-zcvf", WithProperties("monero-%(gitversion)s-%(platform)s.tar.gz"), "build/release/bin"] )) +armv8Factory.addStep(steps.FileUpload(slavesrc=WithProperties("monero-%(gitversion)s-%(platform)s.tar.gz"), masterdest=WithProperties("/home/buildbot/master/public_html/downloads/monero-%(gitversion)s-%(platform)s.tar.gz"), url=WithProperties("https://build.getmonero.org/downloads/monero-%(gitversion)s-%(platform)s.tar.gz"))) + +armv7Factory = util.BuildFactory() +armv7Factory.addStep(steps.Git(repourl='https://github.com/monero-project/monero.git', mode='incremental')) +armv7Factory.addStep(steps.Compile(command = ['ccache', 'make', 'release-static-armv7'], timeout=None)) +armv7Factory.addStep(steps.SetPropertyFromCommand(name = "set version", command = ["git", "rev-parse", "--short", "HEAD"], property = 'gitversion')) +armv7Factory.addStep(steps.ShellCommand(name = "zip", command = ["tar", "-zcvf", WithProperties("monero-%(gitversion)s-%(platform)s.tar.gz"), "build/release/bin"] )) +armv7Factory.addStep(steps.FileUpload(slavesrc=WithProperties("monero-%(gitversion)s-%(platform)s.tar.gz"), masterdest=WithProperties("/home/buildbot/master/public_html/downloads/monero-%(gitversion)s-%(platform)s.tar.gz"), url=WithProperties("https://build.getmonero.org/downloads/monero-%(gitversion)s-%(platform)s.tar.gz"))) + +static32Factory = util.BuildFactory() +static32Factory.addStep(steps.Git(repourl='https://github.com/monero-project/monero.git', mode='full')) +static32Factory.addStep(steps.Compile(command = ['make', 'release-static-32'])) +static32Factory.addStep(steps.Test(command = ['make', 'release-test'], timeout=None, env={'ARGS': " -E 'coretests|libwallet_api_tests' "}, logfiles={"LastTest": "build/release/Testing/Temporary/LastTest.log","CTestCostData.txt": "build/release/Testing/Temporary/CTestCostData.txt"})) +static32Factory.addStep(steps.SetPropertyFromCommand(name = "set version", command = ["git", "rev-parse", "--short", "HEAD"], property = 'gitversion')) +static32Factory.addStep(steps.ShellCommand(name = "zip", command = ["tar", "-zcvf", WithProperties("monero-%(gitversion)s-%(platform)s.tar.gz"), "build/release/bin"] )) +static32Factory.addStep(steps.FileUpload(slavesrc=WithProperties("monero-%(gitversion)s-%(platform)s.tar.gz"), masterdest=WithProperties("/home/buildbot/master/public_html/downloads/monero-%(gitversion)s-%(platform)s.tar.gz"), url=WithProperties("https://build.getmonero.org/downloads/monero-%(gitversion)s-%(platform)s.tar.gz"))) + +win32ReleaseFactory = util.BuildFactory() +win32ReleaseFactory.addStep(steps.Git(repourl='https://github.com/monero-project/monero.git', mode='full')) +win32ReleaseFactory.addStep(steps.Compile(command = ["make", "release-static-win32"])) +win32ReleaseFactory.addStep(steps.Test(command = ["make", "release-test"], env={'ARGS': " -E 'coretests|libwallet_api_tests' "}, logfiles={"LastTest": "build/release/Testing/Temporary/LastTest.log","CTestCostData.txt": "build/release/Testing/Temporary/CTestCostData.txt"})) + +win64ReleaseFactory = util.BuildFactory() +win64ReleaseFactory.addStep(steps.Git(repourl='https://github.com/monero-project/monero.git', mode='full')) +win64ReleaseFactory.addStep(steps.Compile(command = ["make", "release-static-win64"])) +win64ReleaseFactory.addStep(steps.Test(command = ["make", "release-test"], env={'ARGS': " -E 'coretests|libwallet_api_tests' "}, logfiles={"LastTest": "build/release/Testing/Temporary/LastTest.log","CTestCostData.txt": "build/release/Testing/Temporary/CTestCostData.txt"})) +win64ReleaseFactory.addStep(steps.SetPropertyFromCommand(name = "set version", command = ["git", "rev-parse", "--short", "HEAD"], property = 'gitversion')) +win64ReleaseFactory.addStep(steps.ShellCommand(name = "zip", command = ["tar", "-zcvf", WithProperties("monero-%(gitversion)s-%(platform)s.tar.gz"), "build/release/bin"] )) +win64ReleaseFactory.addStep(steps.FileUpload(slavesrc=WithProperties("monero-%(gitversion)s-%(platform)s.tar.gz"), masterdest=WithProperties("/home/buildbot/master/public_html/downloads/monero-%(gitversion)s-%(platform)s.tar.gz"), url=WithProperties("https://build.getmonero.org/downloads/monero-%(gitversion)s-%(platform)s.tar.gz"))) + +coreFactory = util.BuildFactory() +coreFactory.addStep(steps.Git(repourl='https://github.com/monero-project/monero-core.git', mode='full')) +coreFactory.addStep(steps.Compile(command = ["bash", "-ex", "build.sh"])) + +coreOsxFactory = util.BuildFactory() +coreOsxFactory.addStep(steps.Git(repourl='https://github.com/monero-project/monero-core.git', mode='full')) +coreOsxFactory.addStep(steps.Compile(command = ["bash", "-ex", "./build.sh"])) + +coreFreebsdFactory = util.BuildFactory() +coreFreebsdFactory.addStep(steps.Git(repourl='https://github.com/monero-project/monero-core.git', mode='incremental')) +coreFreebsdFactory.addStep(steps.Compile(command = ["bash", "-ex", "build.sh"],env={'SHELL': '/usr/local/bin/bash', 'PATH': '/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/home/vagrant/bin:/usr/local/lib/qt5/bin'})) + +coreMingw32Factory = util.BuildFactory() +coreMingw32Factory.addStep(steps.RemoveDirectory(dir='monero')) +coreMingw32Factory.addStep(steps.Git(repourl='https://github.com/monero-project/monero-core.git', mode='full', method='clobber')) +coreMingw32Factory.addStep(steps.Compile(command = ['/msys32/usr/bin/bash.exe', '-ex', './build.sh'],env={'MSYSTEM': 'MINGW32', 'PATH': '/c/Windows/system32;/c/Windows;/c/Windows/System32/WindowsPowerShell/v1.0;/c/Qt/Qt5.7.0/Tools/mingw530_32/bin;/c/Qt/Qt5.7.0/Tools/mingw530_32/boost/lib;/c/Qt/Qt5.7.0/5.7/mingw53_32/bin;/c/python27/lib/site-packages/pywin32_system32;/c/msys32/mingw32/bin;/c/msys32/usr/bin'})) +coreMingw32Factory.addStep(steps.Compile(name='deploy', description='deploying', descriptionDone='deploy', command = ['make', 'deploy'], workdir='build/build', env={'MSYSTEM': 'MINGW32', 'PATH': '/c/Python27;/c/Python27/Scripts;/c/Windows/system32;/c/Windows;/c/Qt/Qt5.7.0/Tools/mingw530_32/bin;/c/Qt/Qt5.7.0/Tools/mingw530_32/boost/lib;/c/Qt/Qt5.7.0/5.7/mingw53_32/bin;/c/python27/lib/site-packages/pywin32_system32;/c/msys32/mingw32/bin;/msys32/usr/bin'})) +coreMingw32Factory.addStep(steps.SetPropertyFromCommand(name = "set version", command = ["git", "rev-parse", "--short", "HEAD"], property = 'gitversion')) +coreMingw32Factory.addStep(steps.ShellCommand(name = "zip", command = ["zip", "-r", WithProperties("monero-core-%(gitversion)s-%(platform)s.zip"), "build/release/bin"] )) +coreMingw32Factory.addStep(steps.FileUpload(slavesrc=WithProperties("monero-core-%(gitversion)s-%(platform)s.zip"), masterdest=WithProperties("/home/buildbot/master/public_html/downloads/monero-core-%(gitversion)s-%(platform)s.zip"), url=WithProperties("https://build.getmonero.org/downloads/monero-core-%(gitversion)s-%(platform)s.zip"))) + +coreMingw64Factory = util.BuildFactory() +coreMingw64Factory.addStep(steps.Git(repourl='https://github.com/monero-project/monero-core.git', mode='full', method="clobber")) +coreMingw64Factory.addStep(steps.Compile(command = ["/msys64/usr/bin/bash.exe","-ex","./build.sh"],env={'MSYSTEM': "MINGW64"})) + +kovriAllFactory = util.BuildFactory() +kovriAllFactory.addStep(steps.Git(repourl='https://github.com/monero-project/kovri.git', mode='full', submodules=True)) +kovriAllFactory.addStep(steps.Compile(command=["make", "all-options"])) +kovriAllFactory.addStep(steps.Compile(name="compile tests", command=["make", "tests"])) + +kovriArmFactory = util.BuildFactory() +kovriArmFactory.addStep(steps.Git(repourl='https://github.com/monero-project/kovri.git', mode='full', submodules=True)) +kovriArmFactory.addStep(steps.Compile(command=["make", "all-options"], env={'CC': 'clang35', 'CXX': 'clang++35'})) +kovriArmFactory.addStep(steps.Compile(name="compile tests", command=["make", "tests"], env={'CC': 'clang35', 'CXX': 'clang++35'})) + +kovriUbuntu64Factory = util.BuildFactory() +kovriUbuntu64Factory.addStep(steps.Git(repourl='https://github.com/monero-project/kovri.git', mode='full', submodules=True)) +kovriUbuntu64Factory.addStep(steps.Compile(command=["make", "coverage"])) +kovriUbuntu64Factory.addStep(steps.Compile(name="compile tests", command=["make", "coverage-tests"])) +kovriUbuntu64Factory.addStep(steps.Test(command=["./build/kovri-tests"])) +addCoverallsUploadSteps(kovriUbuntu64Factory,repo_token=secrets['coveralls_token']) + +kovriFreebsdFactory = util.BuildFactory() +kovriFreebsdFactory.addStep(steps.Git(repourl='https://github.com/monero-project/kovri.git', mode='full', submodules=True)) +kovriFreebsdFactory.addStep(steps.Compile(command=["gmake", "all-options"], env={'CC': 'clang36', 'CXX': 'clang++36'})) +kovriFreebsdFactory.addStep(steps.Compile(name="compile tests", command=["gmake", "tests"], env={'CC': 'clang36', 'CXX': 'clang++36'})) +kovriFreebsdFactory.addStep(steps.Test(command=["./build/kovri-tests"])) + +kovriMingw32Factory = util.BuildFactory() +kovriMingw32Factory.addStep(steps.Git(repourl='https://github.com/monero-project/kovri.git', mode='full', submodules=True)) +kovriMingw32Factory.addStep(steps.Compile(command=["/msys32/usr/bin/bash.exe","-c", "make", "all-options"],env={'MSYSTEM': "MINGW32"})) +kovriMingw32Factory.addStep(steps.Compile(name="compile tests", command=["make", "tests"])) +kovriMingw32Factory.addStep(steps.Test(command=["kovri-tests.exe"], workdir="build/build")) + +kovriMingw64Factory = util.BuildFactory() +kovriMingw64Factory.addStep(steps.Git(repourl='https://github.com/monero-project/kovri.git', mode='full', submodules=True)) +kovriMingw64Factory.addStep(steps.Compile(command=["make", "all-options"],env={'MSYSTEM': "MINGW64"})) +kovriMingw64Factory.addStep(steps.Compile(name="compile tests", command=["make", "tests"])) +kovriMingw64Factory.addStep(steps.Test(command=["kovri-tests.exe"], workdir="build/build")) + +coreUbuntu64Factory = util.BuildFactory() +coreUbuntu64Factory.addStep(steps.Git(repourl='https://github.com/monero-project/monero-core.git', mode='full')) +coreUbuntu64Factory.addStep(steps.Compile(command = ["bash", "-ex", "./build.sh"])) +coreUbuntu64Factory.addStep(steps.SetPropertyFromCommand(name = "set version", command = ["git", "rev-parse", "--short", "HEAD"], property = 'gitversion')) +coreUbuntu64Factory.addStep(steps.FileUpload(slavesrc="build/release/bin/monero-core", masterdest=WithProperties("/home/buildbot/master/public_html/downloads/monero-core-%(gitversion)s-%(platform)s"), url=WithProperties("https://build.getmonero.org/downloads/monero-core-%(gitversion)s-%(platform)s"))) + +coreDebianFactory = util.BuildFactory() +coreDebianFactory.addStep(steps.Git(repourl='https://github.com/monero-project/monero-core.git', mode='full')) +coreDebianFactory.addStep(steps.Compile(command = ["bash", "-ex", "./build.sh"])) + +testsFactory = util.BuildFactory() +testsFactory.addStep(steps.Git(repourl='https://github.com/monero-project/monero.git', mode='incremental')) +testsFactory.addStep(steps.Compile(command = ["make", "debug"])) +testsFactory.addStep(steps.Test(command = ["make", "debug-test"], timeout=None, logfiles={"LastTest.log": "build/debug/Testing/Temporary/LastTest.log","CTestCostData.txt": "build/debug/Testing/Temporary/CTestCostData.txt","coretests.log": "build/debug/tests/core_tests/coretests.log"})) + +testsFreebsdFactory = util.BuildFactory() +testsFreebsdFactory.addStep(steps.Git(repourl='https://github.com/monero-project/monero.git', mode='full', method="clobber")) +testsFreebsdFactory.addStep(steps.Compile(command = ["make", "release-static"])) +testsFreebsdFactory.addStep(steps.Test(command = ["make", "release-test"], timeout=None, logfiles={"LastTest.log": "build/release/Testing/Temporary/LastTest.log","CTestCostData.txt": "build/release/Testing/Temporary/CTestCostData.txt","coretests.log": "build/release/tests/core_tests/coretests.log"})) + +testsWin32Factory = util.BuildFactory() +testsWin32Factory.addStep(steps.Git(repourl='https://github.com/monero-project/monero.git', mode='full', method="clobber")) +testsWin32Factory.addStep(steps.Compile(command = ["make", "release-static-win32"])) +testsWin32Factory.addStep(steps.Test(command = ["make", "release-test"], timeout=None, logfiles={"LastTest.log": "build/release/Testing/Temporary/LastTest.log","CTestCostData.txt": "build/release/Testing/Temporary/CTestCostData.txt"})) + +testsWin64Factory = util.BuildFactory() +testsWin64Factory.addStep(steps.Git(repourl='https://github.com/monero-project/monero.git', mode='full', method="clobber")) +testsWin64Factory.addStep(steps.Compile(command = ["make", "release-static-win64"])) +testsWin64Factory.addStep(steps.Test(command = ["make", "release-test"], timeout=None, logfiles={"LastTest.log": "build/release/Testing/Temporary/LastTest.log","CTestCostData.txt": "build/release/Testing/Temporary/CTestCostData.txt"})) + +# BUILDERS +c['builders'] = [] + +c['builders'].append( + util.BuilderConfig(name="monero-tests-windows-10-i686", + slavenames=["win32"], + factory=testsWin32Factory)) + +c['builders'].append( + util.BuilderConfig(name="monero-tests-osx-10.12", + slavenames=["osx-10.12"], + factory=osxTestsFactory)) + +c['builders'].append( + util.BuilderConfig(name="monero-tests-osx-10.10", + slavenames=["osx-10.10"], + factory=testsFactory)) + +c['builders'].append( + util.BuilderConfig(name="monero-tests-osx-10.11", + slavenames=["osx-10.11"], + factory=testsFactory)) + +c['builders'].append( + util.BuilderConfig(name="monero-static-debian-armv8", + slavenames=["arm8"], + factory=armv8Factory, + mergeRequests=True, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "monero", + })) + +c['builders'].append( + util.BuilderConfig(name="monero-static-ubuntu-amd64", + slavenames=["linux-amd64"], + factory=noCoretestsFactory, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "monero", + })) + +c['builders'].append( + util.BuilderConfig(name="monero-static-ubuntu-i686", + slavenames=["linux-i386"], + factory=static32Factory, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "monero", + })) + +c['builders'].append( + util.BuilderConfig(name="monero-static-ubuntu-arm7", + slavenames=["arm7"], + factory=armv7Factory, + mergeRequests=True, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "monero", + })) + +c['builders'].append( + util.BuilderConfig(name="monero-static-freebsd64", + slavenames=["freebsd64"], + factory=noCoretestsFactory, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "monero", + })) + +c['builders'].append( + util.BuilderConfig(name="monero-static-osx-10.12", + slavenames=["osx-10.12"], + factory=noCoretestsFactory, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "monero", + })) + +c['builders'].append( + util.BuilderConfig(name="monero-static-osx-10.10", + slavenames=["osx-10.10"], + factory=noCoretestsFactory, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "monero", + })) + +c['builders'].append( + util.BuilderConfig(name="monero-static-osx-10.11", + slavenames=["osx-10.11"], + factory=ispHijackedFactory, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "monero", + })) + +c['builders'].append( + util.BuilderConfig(name="monero-static-win32", + slavenames=["win32"], + factory=win32ReleaseFactory, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "monero", + })) + +c['builders'].append( + util.BuilderConfig(name="monero-static-win64", + slavenames=["win64"], + factory=win64ReleaseFactory, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "monero", + })) + +c['builders'].append( + util.BuilderConfig(name="monero-core-win32", + slavenames=["win32"], + factory=coreMingw32Factory, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "monero-core", + })) + +c['builders'].append( + util.BuilderConfig(name="monero-core-win64", + slavenames=["win64"], + factory=coreMingw64Factory, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "monero-core", + })) + +c['builders'].append( + util.BuilderConfig(name="monero-core-freebsd", + slavenames=["freebsd64"], + factory=coreFreebsdFactory)) + +c['builders'].append( + util.BuilderConfig(name="monero-core-ubuntu-arm7", + slavenames=["arm7"], + factory=coreFactory, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "monero-core", + })) + +c['builders'].append( + util.BuilderConfig(name="monero-core-debian-armv8", + slavenames=["arm8"], + factory=coreFactory)) + +c['builders'].append( + util.BuilderConfig(name="monero-core-ubuntu-amd64", + slavenames=["linux-amd64"], + factory=coreUbuntu64Factory, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "monero-core", + })) + +c['builders'].append( + util.BuilderConfig(name="monero-core-ubuntu-i686", + slavenames=["linux-i386"], + factory=coreDebianFactory, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "monero-core", + })) + +c['builders'].append( + util.BuilderConfig(name="monero-core-osx-10.12", + slavenames=["osx-10.12"], + factory=coreOsxFactory, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "monero-core", + })) + +c['builders'].append( + util.BuilderConfig(name="monero-core-osx-10.11", + slavenames=["osx-10.11"], + factory=coreOsxFactory, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "monero-core", + })) + +c['builders'].append( + util.BuilderConfig(name="kovri-all-ubuntu-i686", + slavenames=["linux-i386"], + factory=kovriAllFactory, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "kovri", + })) + +c['builders'].append( + util.BuilderConfig(name="kovri-all-osx-10.12", + slavenames=["osx-10.12"], + factory=kovriAllFactory, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "kovri", + })) + +c['builders'].append( + util.BuilderConfig(name="kovri-all-osx-10.10", + slavenames=["osx-10.10"], + factory=kovriAllFactory, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "kovri", + })) + +c['builders'].append( + util.BuilderConfig(name="kovri-all-osx-10.11", + slavenames=["osx-10.11"], + factory=kovriAllFactory, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "kovri", + })) + +c['builders'].append( + util.BuilderConfig(name="kovri-all-ubuntu-amd64", + slavenames=["linux-amd64"], + factory=kovriUbuntu64Factory, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "kovri", + })) + +c['builders'].append( + util.BuilderConfig(name="kovri-all-ubuntu-arm7", + slavenames=["arm7"], + factory=kovriAllFactory, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "kovri", + })) + +c['builders'].append( + util.BuilderConfig(name="kovri-all-debian-arm8", + slavenames=["arm8"], + factory=kovriAllFactory, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "kovri", + })) + +c['builders'].append( + util.BuilderConfig(name="kovri-all-freebsd64", + slavenames=["freebsd64"], + factory=kovriFreebsdFactory, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "kovri", + })) + +c['builders'].append( + util.BuilderConfig(name="kovri-all-win32", + slavenames=["win32"], + factory=kovriMingw32Factory, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "kovri", + })) + +c['builders'].append( + util.BuilderConfig(name="kovri-all-win64", + slavenames=["win64"], + factory=kovriMingw64Factory, + properties={ + "github_repo_owner": "monero-project", + "github_repo_name": "kovri", + })) + +c['builders'].append( + util.BuilderConfig(name="monero-tests-ubuntu-16.04-i686", + slavenames=["linux-i386"], + factory=testsFactory)) + +c['builders'].append( + util.BuilderConfig(name="monero-tests-ubuntu-16.04-amd64", + slavenames=["linux-amd64"], + factory=testsFactory)) + +c['builders'].append( + util.BuilderConfig(name="monero-tests-windows-10-amd64", + slavenames=["win64"], + factory=testsWin64Factory)) + +c['builders'].append( + util.BuilderConfig(name="monero-tests-freebsd-10.3-amd64", + slavenames=["freebsd64"], + factory=testsFactory)) + +c['builders'].append( + util.BuilderConfig(name="monero-tests-ubuntu-16.04-armv7", + slavenames=["arm7"], + factory=testsFactory)) + +c['builders'].append( + util.BuilderConfig(name="monero-tests-debian-armv8", + slavenames=["arm8"], + factory=testsFactory)) + + +# STATUS TARGETS + +# 'status' is a list of Status Targets. The results of each build will be +# pushed to these targets. buildbot/status/*.py has a variety to choose from, +# including web pages, email senders, and IRC bots. + +c['status'] = [] + +from buildbot.status import html +from buildbot.status.web import authz, auth +secrets = json.load(open('secrets.json')) + +authz_cfg=authz.Authz( + gracefulShutdown = 'auth', + forceBuild = 'auth', + forceAllBuilds = 'auth', + pingBuilder = 'auth', + stopBuild = 'auth', + stopAllBuilds = 'auth', + cancelPendingBuild = 'auth', + pauseSlave = 'auth', + cancelAllPendingBuilds = 'auth', +) +c['status'].append(html.WebStatus(http_port=8010,authz=authz_cfg, + change_hook_dialects={ + 'github':{ + 'secret': secrets['gh_change_hook'], + 'strict': True + } + + })) + +from buildbot.plugins import status + +irc = status.IRC('irc.freenode.org', 'xmr_buildbot', + useColors=True, + channels=[{"channel": "#monero-bots"} +], + allowForce=True, + notify_events={ + 'started': 0, + 'finished': 0, + 'failure': 1, + 'success': 1, + 'exception': 1, + 'successToFailure': 1, + 'failureToSuccess': 1 + }) + +c['status'].append(irc) + +# Github status reporter +from buildbot.plugins import status, util + +repoOwner = util.Interpolate("%(prop:github_repo_owner)s") +repoName = util.Interpolate("%(prop:github_repo_name)s") +sha = util.Interpolate("%(src::revision)s") +context = util.Interpolate("buildbot/%(prop:buildername)s") +gs = status.GitHubStatus(token=secrets['github_token'], + repoOwner=repoOwner, + repoName=repoName, + sha=sha, + context=context, + startDescription='Build started.', + endDescription='Build done.') +c['status'].append(gs) + +# PROJECT IDENTITY + +# the 'title' string will appear at the top of this buildbot +# installation's html.WebStatus home page (linked to the +# 'titleURL') and is embedded in the title of the waterfall HTML page. + +c['title'] = 'Monero Project' +c['titleURL'] = 'https://getmonero.org/' + +c['buildbotURL'] = 'https://build.getmonero.org/' + +# DB URL + +c['db'] = { + 'db_url':'sqlite:///state.sqlite', +}