|
|
|
|
@ -1,5 +1,6 @@ |
|
|
|
|
load( |
|
|
|
|
'scripts/drone/steps/lib.star', |
|
|
|
|
'disable_tests', |
|
|
|
|
'download_grabpl_step', |
|
|
|
|
'initialize_step', |
|
|
|
|
'lint_drone_step', |
|
|
|
|
@ -52,6 +53,7 @@ load( |
|
|
|
|
) |
|
|
|
|
load('scripts/drone/vault.star', 'from_secret', 'github_token', 'pull_secret', 'drone_token', 'prerelease_bucket') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def build_npm_packages_step(edition, ver_mode): |
|
|
|
|
if edition == 'enterprise' or ver_mode != 'release': |
|
|
|
|
return None |
|
|
|
|
@ -119,16 +121,14 @@ def release_npm_packages_step(edition, ver_mode): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_steps(edition, ver_mode): |
|
|
|
|
build_steps = [] |
|
|
|
|
package_steps = [] |
|
|
|
|
windows_package_steps = [] |
|
|
|
|
publish_steps = [] |
|
|
|
|
should_publish = ver_mode in ('release', 'test-release',) |
|
|
|
|
should_upload = should_publish or ver_mode in ('release-branch',) |
|
|
|
|
include_enterprise2 = edition == 'enterprise' |
|
|
|
|
edition2 = 'enterprise2' |
|
|
|
|
|
|
|
|
|
build_steps = [ |
|
|
|
|
test_steps = [ |
|
|
|
|
codespell_step(), |
|
|
|
|
shellcheck_step(), |
|
|
|
|
lint_backend_step(edition=edition), |
|
|
|
|
@ -136,8 +136,9 @@ def get_steps(edition, ver_mode): |
|
|
|
|
test_backend_step(edition=edition), |
|
|
|
|
test_backend_integration_step(edition=edition), |
|
|
|
|
test_frontend_step(), |
|
|
|
|
postgres_integration_tests_step(edition=edition, ver_mode=ver_mode), |
|
|
|
|
mysql_integration_tests_step(edition=edition, ver_mode=ver_mode), |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
build_steps = [ |
|
|
|
|
build_backend_step(edition=edition, ver_mode=ver_mode), |
|
|
|
|
build_frontend_step(edition=edition, ver_mode=ver_mode), |
|
|
|
|
build_plugins_step(edition=edition, sign=True), |
|
|
|
|
@ -145,34 +146,46 @@ def get_steps(edition, ver_mode): |
|
|
|
|
ensure_cuetsified_step(), |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
integration_test_steps = [ |
|
|
|
|
postgres_integration_tests_step(edition=edition, ver_mode=ver_mode), |
|
|
|
|
mysql_integration_tests_step(edition=edition, ver_mode=ver_mode), |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if include_enterprise2: |
|
|
|
|
build_steps.extend([ |
|
|
|
|
test_steps.extend([ |
|
|
|
|
lint_backend_step(edition=edition2), |
|
|
|
|
test_backend_step(edition=edition2), |
|
|
|
|
test_backend_integration_step(edition=edition2), |
|
|
|
|
]) |
|
|
|
|
build_steps.extend([ |
|
|
|
|
build_backend_step(edition=edition2, ver_mode=ver_mode, variants=['linux-x64']), |
|
|
|
|
]) |
|
|
|
|
|
|
|
|
|
# Insert remaining steps |
|
|
|
|
build_steps.extend([ |
|
|
|
|
package_step(edition=edition, ver_mode=ver_mode, include_enterprise2=include_enterprise2), |
|
|
|
|
install_cypress_step(), |
|
|
|
|
e2e_tests_server_step(edition=edition), |
|
|
|
|
e2e_tests_step('dashboards-suite', edition=edition, tries=3), |
|
|
|
|
e2e_tests_step('smoke-tests-suite', edition=edition, tries=3), |
|
|
|
|
e2e_tests_step('panels-suite', edition=edition, tries=3), |
|
|
|
|
e2e_tests_step('various-suite', edition=edition, tries=3), |
|
|
|
|
copy_packages_for_docker_step(), |
|
|
|
|
package_docker_images_step(edition=edition, ver_mode=ver_mode, publish=should_publish), |
|
|
|
|
package_docker_images_step(edition=edition, ver_mode=ver_mode, ubuntu=True, publish=should_publish), |
|
|
|
|
e2e_tests_server_step(edition=edition), |
|
|
|
|
]) |
|
|
|
|
|
|
|
|
|
if not disable_tests: |
|
|
|
|
build_steps.extend([ |
|
|
|
|
install_cypress_step(), |
|
|
|
|
e2e_tests_step('dashboards-suite', edition=edition, tries=3), |
|
|
|
|
e2e_tests_step('smoke-tests-suite', edition=edition, tries=3), |
|
|
|
|
e2e_tests_step('panels-suite', edition=edition, tries=3), |
|
|
|
|
e2e_tests_step('various-suite', edition=edition, tries=3), |
|
|
|
|
]) |
|
|
|
|
|
|
|
|
|
build_storybook = build_storybook_step(edition=edition, ver_mode=ver_mode) |
|
|
|
|
if build_storybook: |
|
|
|
|
build_steps.append(build_storybook) |
|
|
|
|
|
|
|
|
|
if include_enterprise2: |
|
|
|
|
build_steps.extend([redis_integration_tests_step(edition=edition2, ver_mode=ver_mode), memcached_integration_tests_step(edition=edition2, ver_mode=ver_mode)]) |
|
|
|
|
integration_test_steps.extend([redis_integration_tests_step(edition=edition2, ver_mode=ver_mode), memcached_integration_tests_step(edition=edition2, ver_mode=ver_mode)]) |
|
|
|
|
|
|
|
|
|
if should_upload: |
|
|
|
|
publish_steps.append(upload_cdn_step(edition=edition, ver_mode=ver_mode)) |
|
|
|
|
@ -198,45 +211,102 @@ def get_steps(edition, ver_mode): |
|
|
|
|
if step: |
|
|
|
|
publish_steps.append(step) |
|
|
|
|
|
|
|
|
|
return build_steps, package_steps, windows_package_steps, publish_steps |
|
|
|
|
return test_steps, build_steps, integration_test_steps, package_steps, windows_package_steps, publish_steps |
|
|
|
|
|
|
|
|
|
def get_oss_pipelines(trigger, ver_mode): |
|
|
|
|
edition = 'oss' |
|
|
|
|
services = integration_test_services(edition=edition) |
|
|
|
|
volumes = integration_test_services_volumes() |
|
|
|
|
build_steps, package_steps, windows_package_steps, publish_steps = get_steps(edition=edition, ver_mode=ver_mode) |
|
|
|
|
return [ |
|
|
|
|
test_steps, build_steps, integration_test_steps, package_steps, windows_package_steps, publish_steps = get_steps(edition=edition, ver_mode=ver_mode) |
|
|
|
|
windows_pipeline = pipeline( |
|
|
|
|
name='oss-windows-{}'.format(ver_mode), edition=edition, trigger=trigger, |
|
|
|
|
steps=initialize_step(edition, platform='windows', ver_mode=ver_mode) + windows_package_steps, |
|
|
|
|
platform='windows', depends_on=[ |
|
|
|
|
'oss-build{}-publish-{}'.format(get_e2e_suffix(), ver_mode), |
|
|
|
|
], |
|
|
|
|
) |
|
|
|
|
pipelines = [ |
|
|
|
|
pipeline( |
|
|
|
|
name='oss-build-{}'.format(ver_mode), edition=edition, trigger=trigger, services=services, |
|
|
|
|
name='oss-build-publish{}-{}'.format(get_e2e_suffix(), ver_mode), edition=edition, trigger=trigger, services=[], |
|
|
|
|
steps=[download_grabpl_step()] + initialize_step(edition, platform='linux', ver_mode=ver_mode) + |
|
|
|
|
build_steps + package_steps + publish_steps, |
|
|
|
|
build_steps + package_steps + publish_steps, |
|
|
|
|
volumes=volumes, |
|
|
|
|
), |
|
|
|
|
pipeline( |
|
|
|
|
name='oss-windows-{}'.format(ver_mode), edition=edition, trigger=trigger, |
|
|
|
|
steps=initialize_step(edition, platform='windows', ver_mode=ver_mode) + windows_package_steps, |
|
|
|
|
platform='windows', depends_on=['oss-build-{}'.format(ver_mode)], |
|
|
|
|
), |
|
|
|
|
] |
|
|
|
|
if not disable_tests: |
|
|
|
|
pipelines.extend([ |
|
|
|
|
pipeline( |
|
|
|
|
name='oss-test-{}'.format(ver_mode), edition=edition, trigger=trigger, services=[], |
|
|
|
|
steps=[download_grabpl_step()] + initialize_step(edition, platform='linux', ver_mode=ver_mode) + |
|
|
|
|
test_steps, |
|
|
|
|
volumes=[], |
|
|
|
|
), |
|
|
|
|
pipeline( |
|
|
|
|
name='oss-integration-tests-{}'.format(ver_mode), edition=edition, trigger=trigger, services=services, |
|
|
|
|
steps=[download_grabpl_step()] + initialize_step(edition, platform='linux', ver_mode=ver_mode) + |
|
|
|
|
integration_test_steps, |
|
|
|
|
volumes=volumes, |
|
|
|
|
) |
|
|
|
|
]) |
|
|
|
|
deps = { |
|
|
|
|
'depends_on': [ |
|
|
|
|
'oss-build-publish{}-{}'.format(get_e2e_suffix(), ver_mode), |
|
|
|
|
'oss-test-{}'.format(ver_mode), |
|
|
|
|
'oss-integration-tests-{}'.format(ver_mode) |
|
|
|
|
] |
|
|
|
|
} |
|
|
|
|
windows_pipeline.update(deps) |
|
|
|
|
|
|
|
|
|
pipelines.extend([windows_pipeline]) |
|
|
|
|
return pipelines |
|
|
|
|
|
|
|
|
|
def get_enterprise_pipelines(trigger, ver_mode): |
|
|
|
|
edition = 'enterprise' |
|
|
|
|
services = integration_test_services(edition=edition) |
|
|
|
|
volumes = integration_test_services_volumes() |
|
|
|
|
build_steps, package_steps, windows_package_steps, publish_steps = get_steps(edition=edition, ver_mode=ver_mode) |
|
|
|
|
return [ |
|
|
|
|
test_steps, build_steps, integration_test_steps, package_steps, windows_package_steps, publish_steps = get_steps(edition=edition, ver_mode=ver_mode) |
|
|
|
|
windows_pipeline = pipeline( |
|
|
|
|
name='enterprise-windows-{}'.format(ver_mode), edition=edition, trigger=trigger, |
|
|
|
|
steps=initialize_step(edition, platform='windows', ver_mode=ver_mode) + windows_package_steps, |
|
|
|
|
platform='windows', depends_on=[ |
|
|
|
|
'enterprise-build{}-publish-{}'.format(get_e2e_suffix(), ver_mode), |
|
|
|
|
], |
|
|
|
|
) |
|
|
|
|
pipelines = [ |
|
|
|
|
pipeline( |
|
|
|
|
name='enterprise-build-{}'.format(ver_mode), edition=edition, trigger=trigger, services=services, |
|
|
|
|
name='enterprise-build{}-publish-{}'.format(get_e2e_suffix(), ver_mode), edition=edition, trigger=trigger, services=[], |
|
|
|
|
steps=[download_grabpl_step()] + initialize_step(edition, platform='linux', ver_mode=ver_mode) + |
|
|
|
|
build_steps + package_steps + publish_steps, |
|
|
|
|
build_steps + package_steps + publish_steps, |
|
|
|
|
volumes=volumes, |
|
|
|
|
), |
|
|
|
|
pipeline( |
|
|
|
|
name='enterprise-windows-{}'.format(ver_mode), edition=edition, trigger=trigger, |
|
|
|
|
steps=initialize_step(edition, platform='windows', ver_mode=ver_mode) + windows_package_steps, |
|
|
|
|
platform='windows', depends_on=['enterprise-build-{}'.format(ver_mode)], |
|
|
|
|
), |
|
|
|
|
] |
|
|
|
|
if not disable_tests: |
|
|
|
|
pipelines.extend([ |
|
|
|
|
pipeline( |
|
|
|
|
name='enterprise-test-{}'.format(ver_mode), edition=edition, trigger=trigger, services=[], |
|
|
|
|
steps=[download_grabpl_step()] + initialize_step(edition, platform='linux', ver_mode=ver_mode) + |
|
|
|
|
test_steps, |
|
|
|
|
volumes=[], |
|
|
|
|
), |
|
|
|
|
pipeline( |
|
|
|
|
name='enterprise-integration-tests-{}'.format(ver_mode), edition=edition, trigger=trigger, services=services, |
|
|
|
|
steps=[download_grabpl_step()] + initialize_step(edition, platform='linux', ver_mode=ver_mode) + |
|
|
|
|
integration_test_steps, |
|
|
|
|
volumes=volumes, |
|
|
|
|
), |
|
|
|
|
]) |
|
|
|
|
deps = { |
|
|
|
|
'depends_on': [ |
|
|
|
|
'enterprise-build{}-publish-{}'.format(get_e2e_suffix(), ver_mode), |
|
|
|
|
'enterprise-test-{}'.format(ver_mode), |
|
|
|
|
'enterprise-integration-tests-{}'.format(ver_mode) |
|
|
|
|
] |
|
|
|
|
} |
|
|
|
|
windows_pipeline.update(deps) |
|
|
|
|
|
|
|
|
|
pipelines.extend([windows_pipeline]) |
|
|
|
|
|
|
|
|
|
return pipelines |
|
|
|
|
|
|
|
|
|
def release_pipelines(ver_mode='release', trigger=None): |
|
|
|
|
# 'enterprise' edition services contain both OSS and enterprise services |
|
|
|
|
@ -308,3 +378,8 @@ def test_release_pipelines(): |
|
|
|
|
)) |
|
|
|
|
|
|
|
|
|
return pipelines |
|
|
|
|
|
|
|
|
|
def get_e2e_suffix(): |
|
|
|
|
if not disable_tests: |
|
|
|
|
return '-e2e' |
|
|
|
|
return '' |
|
|
|
|
|