|
|
|
@ -1,49 +1,48 @@ |
|
|
|
|
load( |
|
|
|
|
'scripts/drone/steps/lib.star', |
|
|
|
|
'disable_tests', |
|
|
|
|
'artifacts_page_step', |
|
|
|
|
'benchmark_ldap_step', |
|
|
|
|
'build_backend_step', |
|
|
|
|
'build_docker_images_step', |
|
|
|
|
'build_frontend_package_step', |
|
|
|
|
'build_frontend_step', |
|
|
|
|
'build_image', |
|
|
|
|
'build_plugins_step', |
|
|
|
|
'build_storybook_step', |
|
|
|
|
'clone_enterprise_step', |
|
|
|
|
'compile_build_cmd', |
|
|
|
|
'copy_packages_for_docker_step', |
|
|
|
|
'download_grabpl_step', |
|
|
|
|
'yarn_install_step', |
|
|
|
|
'wire_install_step', |
|
|
|
|
'init_enterprise_step', |
|
|
|
|
'lint_drone_step', |
|
|
|
|
'build_image', |
|
|
|
|
'e2e_tests_artifacts', |
|
|
|
|
'e2e_tests_step', |
|
|
|
|
'fetch_images_step', |
|
|
|
|
'get_windows_steps', |
|
|
|
|
'grafana_server_step', |
|
|
|
|
'identify_runner_step', |
|
|
|
|
'publish_image', |
|
|
|
|
'init_enterprise_step', |
|
|
|
|
'lint_backend_step', |
|
|
|
|
'lint_drone_step', |
|
|
|
|
'lint_frontend_step', |
|
|
|
|
'test_backend_step', |
|
|
|
|
'test_backend_integration_step', |
|
|
|
|
'test_frontend_step', |
|
|
|
|
'build_backend_step', |
|
|
|
|
'build_frontend_step', |
|
|
|
|
'build_frontend_package_step', |
|
|
|
|
'build_plugins_step', |
|
|
|
|
'memcached_integration_tests_step', |
|
|
|
|
'mysql_integration_tests_step', |
|
|
|
|
'package_step', |
|
|
|
|
'grafana_server_step', |
|
|
|
|
'e2e_tests_step', |
|
|
|
|
'e2e_tests_artifacts', |
|
|
|
|
'build_storybook_step', |
|
|
|
|
'copy_packages_for_docker_step', |
|
|
|
|
'build_docker_images_step', |
|
|
|
|
'postgres_integration_tests_step', |
|
|
|
|
'mysql_integration_tests_step', |
|
|
|
|
'publish_grafanacom_step', |
|
|
|
|
'publish_image', |
|
|
|
|
'publish_images_step', |
|
|
|
|
'publish_linux_packages_step', |
|
|
|
|
'redis_integration_tests_step', |
|
|
|
|
'memcached_integration_tests_step', |
|
|
|
|
'get_windows_steps', |
|
|
|
|
'benchmark_ldap_step', |
|
|
|
|
'store_storybook_step', |
|
|
|
|
'upload_packages_step', |
|
|
|
|
'publish_grafanacom_step', |
|
|
|
|
'test_backend_integration_step', |
|
|
|
|
'test_backend_step', |
|
|
|
|
'test_frontend_step', |
|
|
|
|
'trigger_oss', |
|
|
|
|
'upload_cdn_step', |
|
|
|
|
'upload_packages_step', |
|
|
|
|
'verify_gen_cue_step', |
|
|
|
|
'verify_gen_jsonnet_step', |
|
|
|
|
'publish_images_step', |
|
|
|
|
'publish_linux_packages_step', |
|
|
|
|
'trigger_oss', |
|
|
|
|
'artifacts_page_step', |
|
|
|
|
'fetch_images_step', |
|
|
|
|
'compile_build_cmd', |
|
|
|
|
'wire_install_step', |
|
|
|
|
'yarn_install_step', |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
load( |
|
|
|
@ -59,30 +58,38 @@ load( |
|
|
|
|
'notify_pipeline', |
|
|
|
|
'failure_template', |
|
|
|
|
'drone_change_template', |
|
|
|
|
'with_deps', |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
load( |
|
|
|
|
'scripts/drone/pipelines/test_frontend.star', |
|
|
|
|
'test_frontend', |
|
|
|
|
'test_frontend_enterprise', |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
load( |
|
|
|
|
'scripts/drone/pipelines/test_backend.star', |
|
|
|
|
'test_backend', |
|
|
|
|
'test_backend_enterprise', |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
load('scripts/drone/vault.star', 'from_secret', 'github_token', 'pull_secret', 'drone_token', 'prerelease_bucket') |
|
|
|
|
load( |
|
|
|
|
'scripts/drone/vault.star', |
|
|
|
|
'from_secret', |
|
|
|
|
'pull_secret', |
|
|
|
|
'drone_token', |
|
|
|
|
'prerelease_bucket', |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
ver_mode='release' |
|
|
|
|
ver_mode = 'release' |
|
|
|
|
release_trigger = { |
|
|
|
|
'event': { |
|
|
|
|
'exclude': [ |
|
|
|
|
'promote' |
|
|
|
|
] |
|
|
|
|
}, |
|
|
|
|
'ref': ['refs/tags/v*',], |
|
|
|
|
'event': {'exclude': ['promote']}, |
|
|
|
|
'ref': [ |
|
|
|
|
'refs/tags/v*', |
|
|
|
|
], |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def store_npm_packages_step(): |
|
|
|
|
return { |
|
|
|
|
'name': 'store-npm-packages', |
|
|
|
@ -92,13 +99,12 @@ def store_npm_packages_step(): |
|
|
|
|
], |
|
|
|
|
'environment': { |
|
|
|
|
'GCP_KEY': from_secret('gcp_key'), |
|
|
|
|
'PRERELEASE_BUCKET': from_secret(prerelease_bucket) |
|
|
|
|
'PRERELEASE_BUCKET': from_secret(prerelease_bucket), |
|
|
|
|
}, |
|
|
|
|
'commands': [ |
|
|
|
|
'./bin/grabpl artifacts npm store --tag ${DRONE_TAG}' |
|
|
|
|
], |
|
|
|
|
'commands': ['./bin/grabpl artifacts npm store --tag ${DRONE_TAG}'], |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def retrieve_npm_packages_step(): |
|
|
|
|
return { |
|
|
|
|
'name': 'retrieve-npm-packages', |
|
|
|
@ -109,13 +115,12 @@ def retrieve_npm_packages_step(): |
|
|
|
|
'failure': 'ignore', |
|
|
|
|
'environment': { |
|
|
|
|
'GCP_KEY': from_secret('gcp_key'), |
|
|
|
|
'PRERELEASE_BUCKET': from_secret(prerelease_bucket) |
|
|
|
|
'PRERELEASE_BUCKET': from_secret(prerelease_bucket), |
|
|
|
|
}, |
|
|
|
|
'commands': [ |
|
|
|
|
'./bin/grabpl artifacts npm retrieve --tag ${DRONE_TAG}' |
|
|
|
|
], |
|
|
|
|
'commands': ['./bin/grabpl artifacts npm retrieve --tag ${DRONE_TAG}'], |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def release_npm_packages_step(): |
|
|
|
|
return { |
|
|
|
|
'name': 'release-npm-packages', |
|
|
|
@ -127,308 +132,393 @@ def release_npm_packages_step(): |
|
|
|
|
'environment': { |
|
|
|
|
'NPM_TOKEN': from_secret('npm_token'), |
|
|
|
|
}, |
|
|
|
|
'commands': [ |
|
|
|
|
'./bin/grabpl artifacts npm release --tag ${DRONE_TAG}' |
|
|
|
|
], |
|
|
|
|
'commands': ['./bin/grabpl artifacts npm release --tag ${DRONE_TAG}'], |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def oss_pipelines(ver_mode=ver_mode, trigger=release_trigger): |
|
|
|
|
if ver_mode == 'release': |
|
|
|
|
committish = '${DRONE_TAG}' |
|
|
|
|
elif ver_mode == 'release-branch': |
|
|
|
|
committish = '${DRONE_BRANCH}' |
|
|
|
|
else: |
|
|
|
|
committish = '${DRONE_COMMIT}' |
|
|
|
|
|
|
|
|
|
environment = {'EDITION': 'oss'} |
|
|
|
|
edition = 'oss' |
|
|
|
|
services = integration_test_services(edition=edition) |
|
|
|
|
|
|
|
|
|
services = integration_test_services(edition='oss') |
|
|
|
|
volumes = integration_test_services_volumes() |
|
|
|
|
package_steps = [] |
|
|
|
|
publish_steps = [] |
|
|
|
|
should_publish = ver_mode == 'release' |
|
|
|
|
should_upload = should_publish or ver_mode in ('release-branch',) |
|
|
|
|
|
|
|
|
|
init_steps = [ |
|
|
|
|
identify_runner_step(), |
|
|
|
|
download_grabpl_step(), |
|
|
|
|
verify_gen_cue_step(edition), |
|
|
|
|
verify_gen_cue_step(), |
|
|
|
|
wire_install_step(), |
|
|
|
|
yarn_install_step(), |
|
|
|
|
compile_build_cmd(), |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
build_steps = [ |
|
|
|
|
build_backend_step(edition=edition, ver_mode=ver_mode), |
|
|
|
|
build_frontend_step(edition=edition, ver_mode=ver_mode), |
|
|
|
|
build_frontend_package_step(edition=edition, ver_mode=ver_mode), |
|
|
|
|
build_plugins_step(edition=edition, ver_mode=ver_mode), |
|
|
|
|
build_backend_step(edition='oss', ver_mode=ver_mode), |
|
|
|
|
build_frontend_step(edition='oss', ver_mode=ver_mode), |
|
|
|
|
build_frontend_package_step(edition='oss', ver_mode=ver_mode), |
|
|
|
|
build_plugins_step(edition='oss', ver_mode=ver_mode), |
|
|
|
|
package_step(edition='oss', ver_mode=ver_mode), |
|
|
|
|
copy_packages_for_docker_step(), |
|
|
|
|
build_docker_images_step(edition='oss', ver_mode=ver_mode, publish=True), |
|
|
|
|
build_docker_images_step( |
|
|
|
|
edition='oss', ver_mode=ver_mode, publish=True, ubuntu=True |
|
|
|
|
), |
|
|
|
|
grafana_server_step(edition='oss'), |
|
|
|
|
e2e_tests_step('dashboards-suite', tries=3), |
|
|
|
|
e2e_tests_step('smoke-tests-suite', tries=3), |
|
|
|
|
e2e_tests_step('panels-suite', tries=3), |
|
|
|
|
e2e_tests_step('various-suite', tries=3), |
|
|
|
|
e2e_tests_artifacts(), |
|
|
|
|
build_storybook_step(ver_mode=ver_mode), |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
publish_steps = [] |
|
|
|
|
|
|
|
|
|
if ver_mode in ( |
|
|
|
|
'release', |
|
|
|
|
'release-branch', |
|
|
|
|
): |
|
|
|
|
publish_steps.extend( |
|
|
|
|
[ |
|
|
|
|
upload_cdn_step(edition='oss', ver_mode=ver_mode, trigger=trigger_oss), |
|
|
|
|
upload_packages_step( |
|
|
|
|
edition='oss', ver_mode=ver_mode, trigger=trigger_oss |
|
|
|
|
), |
|
|
|
|
] |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
if ver_mode in ('release',): |
|
|
|
|
publish_steps.extend( |
|
|
|
|
[ |
|
|
|
|
store_storybook_step(ver_mode=ver_mode), |
|
|
|
|
store_npm_packages_step(), |
|
|
|
|
] |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
integration_test_steps = [ |
|
|
|
|
postgres_integration_tests_step(edition=edition, ver_mode=ver_mode), |
|
|
|
|
mysql_integration_tests_step(edition=edition, ver_mode=ver_mode), |
|
|
|
|
postgres_integration_tests_step(), |
|
|
|
|
mysql_integration_tests_step(), |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
# Insert remaining steps |
|
|
|
|
build_steps.extend([ |
|
|
|
|
package_step(edition=edition, ver_mode=ver_mode), |
|
|
|
|
copy_packages_for_docker_step(), |
|
|
|
|
build_docker_images_step(edition=edition, ver_mode=ver_mode, publish=True), |
|
|
|
|
build_docker_images_step(edition=edition, ver_mode=ver_mode, ubuntu=True, publish=True), |
|
|
|
|
grafana_server_step(edition=edition), |
|
|
|
|
]) |
|
|
|
|
|
|
|
|
|
if not disable_tests: |
|
|
|
|
build_steps.extend([ |
|
|
|
|
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), |
|
|
|
|
e2e_tests_artifacts(edition=edition), |
|
|
|
|
]) |
|
|
|
|
|
|
|
|
|
build_storybook = build_storybook_step(edition=edition, ver_mode=ver_mode) |
|
|
|
|
if build_storybook: |
|
|
|
|
build_steps.append(build_storybook) |
|
|
|
|
|
|
|
|
|
if should_upload: |
|
|
|
|
publish_steps.append(upload_cdn_step(edition=edition, ver_mode=ver_mode, trigger=trigger_oss)) |
|
|
|
|
publish_steps.append(upload_packages_step(edition=edition, ver_mode=ver_mode, trigger=trigger_oss)) |
|
|
|
|
if should_publish: |
|
|
|
|
publish_step = store_storybook_step(edition=edition, ver_mode=ver_mode) |
|
|
|
|
store_npm_step = store_npm_packages_step() |
|
|
|
|
if publish_step: |
|
|
|
|
publish_steps.append(publish_step) |
|
|
|
|
if store_npm_step: |
|
|
|
|
publish_steps.append(store_npm_step) |
|
|
|
|
windows_package_steps = get_windows_steps(edition=edition, ver_mode=ver_mode) |
|
|
|
|
|
|
|
|
|
windows_pipeline = pipeline( |
|
|
|
|
name='{}-oss-windows'.format(ver_mode), edition=edition, trigger=trigger, |
|
|
|
|
steps=[identify_runner_step('windows')] + windows_package_steps, |
|
|
|
|
platform='windows', depends_on=[ |
|
|
|
|
'oss-build{}-publish-{}'.format(get_e2e_suffix(), ver_mode), |
|
|
|
|
], environment=environment, |
|
|
|
|
name='{}-oss-windows'.format(ver_mode), |
|
|
|
|
edition='oss', |
|
|
|
|
trigger=trigger, |
|
|
|
|
steps=get_windows_steps(edition='oss', ver_mode=ver_mode), |
|
|
|
|
platform='windows', |
|
|
|
|
depends_on=[ |
|
|
|
|
# 'oss-build-e2e-publish-{}'.format(ver_mode), |
|
|
|
|
'{}-oss-build-e2e-publish'.format(ver_mode), |
|
|
|
|
'{}-oss-test-frontend'.format(ver_mode), |
|
|
|
|
'{}-oss-test-backend'.format(ver_mode), |
|
|
|
|
'{}-oss-integration-tests'.format(ver_mode), |
|
|
|
|
], |
|
|
|
|
environment=environment, |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
pipelines = [ |
|
|
|
|
pipeline( |
|
|
|
|
name='{}-oss-build{}-publish'.format(ver_mode, get_e2e_suffix()), edition=edition, trigger=trigger, services=[], |
|
|
|
|
steps=init_steps + build_steps + package_steps + publish_steps, |
|
|
|
|
environment=environment, volumes=volumes, |
|
|
|
|
name='{}-oss-build-e2e-publish'.format(ver_mode), |
|
|
|
|
edition='oss', |
|
|
|
|
trigger=trigger, |
|
|
|
|
services=[], |
|
|
|
|
steps=init_steps + build_steps + publish_steps, |
|
|
|
|
environment=environment, |
|
|
|
|
volumes=volumes, |
|
|
|
|
), |
|
|
|
|
test_frontend(trigger, ver_mode, committish=committish), |
|
|
|
|
test_backend(trigger, ver_mode, committish=committish), |
|
|
|
|
pipeline( |
|
|
|
|
name='{}-oss-integration-tests'.format(ver_mode), |
|
|
|
|
edition='oss', |
|
|
|
|
trigger=trigger, |
|
|
|
|
services=services, |
|
|
|
|
steps=[ |
|
|
|
|
download_grabpl_step(), |
|
|
|
|
identify_runner_step(), |
|
|
|
|
verify_gen_cue_step(), |
|
|
|
|
verify_gen_jsonnet_step(), |
|
|
|
|
wire_install_step(), |
|
|
|
|
] |
|
|
|
|
+ integration_test_steps, |
|
|
|
|
environment=environment, |
|
|
|
|
volumes=volumes, |
|
|
|
|
), |
|
|
|
|
windows_pipeline, |
|
|
|
|
] |
|
|
|
|
if not disable_tests: |
|
|
|
|
pipelines.extend([ |
|
|
|
|
test_frontend(trigger, ver_mode), |
|
|
|
|
test_backend(trigger, ver_mode), |
|
|
|
|
pipeline( |
|
|
|
|
name='{}-oss-integration-tests'.format(ver_mode), edition=edition, trigger=trigger, services=services, |
|
|
|
|
steps=[download_grabpl_step(), identify_runner_step(), verify_gen_cue_step(edition), verify_gen_jsonnet_step(edition), wire_install_step(), ] + integration_test_steps, |
|
|
|
|
environment=environment, volumes=volumes, |
|
|
|
|
) |
|
|
|
|
]) |
|
|
|
|
deps = { |
|
|
|
|
'depends_on': [ |
|
|
|
|
'{}-oss-build{}-publish'.format(ver_mode, get_e2e_suffix()), |
|
|
|
|
'{}-oss-test-frontend'.format(ver_mode), |
|
|
|
|
'{}-oss-test-backend'.format(ver_mode), |
|
|
|
|
'{}-oss-integration-tests'.format(ver_mode) |
|
|
|
|
] |
|
|
|
|
} |
|
|
|
|
windows_pipeline.update(deps) |
|
|
|
|
|
|
|
|
|
pipelines.extend([windows_pipeline]) |
|
|
|
|
return pipelines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def enterprise_pipelines(ver_mode=ver_mode, trigger=release_trigger): |
|
|
|
|
if ver_mode == 'release': |
|
|
|
|
committish = '${DRONE_TAG}' |
|
|
|
|
elif ver_mode == 'release-branch': |
|
|
|
|
committish = '${DRONE_BRANCH}' |
|
|
|
|
else: |
|
|
|
|
committish = '${DRONE_COMMIT}' |
|
|
|
|
|
|
|
|
|
environment = {'EDITION': 'enterprise'} |
|
|
|
|
edition = 'enterprise' |
|
|
|
|
services = integration_test_services(edition=edition) |
|
|
|
|
|
|
|
|
|
services = integration_test_services(edition='enterprise') |
|
|
|
|
volumes = integration_test_services_volumes() |
|
|
|
|
package_steps = [] |
|
|
|
|
publish_steps = [] |
|
|
|
|
should_publish = ver_mode == 'release' |
|
|
|
|
should_upload = should_publish or ver_mode in ('release-branch',) |
|
|
|
|
include_enterprise = edition == 'enterprise' |
|
|
|
|
edition2 = 'enterprise2' |
|
|
|
|
|
|
|
|
|
init_steps = [ |
|
|
|
|
download_grabpl_step(), |
|
|
|
|
identify_runner_step(), |
|
|
|
|
clone_enterprise_step(ver_mode), |
|
|
|
|
clone_enterprise_step(committish=committish), |
|
|
|
|
init_enterprise_step(ver_mode), |
|
|
|
|
compile_build_cmd(edition), |
|
|
|
|
] |
|
|
|
|
compile_build_cmd('enterprise'), |
|
|
|
|
] + with_deps( |
|
|
|
|
[ |
|
|
|
|
wire_install_step(), |
|
|
|
|
yarn_install_step(), |
|
|
|
|
verify_gen_cue_step(), |
|
|
|
|
verify_gen_jsonnet_step(), |
|
|
|
|
], |
|
|
|
|
[ |
|
|
|
|
'init-enterprise', |
|
|
|
|
], |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
build_steps = [ |
|
|
|
|
build_backend_step(edition=edition, ver_mode=ver_mode), |
|
|
|
|
build_frontend_step(edition=edition, ver_mode=ver_mode), |
|
|
|
|
build_frontend_package_step(edition=edition, ver_mode=ver_mode), |
|
|
|
|
build_plugins_step(edition=edition, ver_mode=ver_mode), |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
integration_test_steps = [ |
|
|
|
|
postgres_integration_tests_step(edition=edition, ver_mode=ver_mode), |
|
|
|
|
mysql_integration_tests_step(edition=edition, ver_mode=ver_mode), |
|
|
|
|
build_backend_step(edition='enterprise', ver_mode=ver_mode), |
|
|
|
|
build_frontend_step(edition='enterprise', ver_mode=ver_mode), |
|
|
|
|
build_frontend_package_step(edition='enterprise', ver_mode=ver_mode), |
|
|
|
|
build_plugins_step(edition='enterprise', ver_mode=ver_mode), |
|
|
|
|
build_backend_step( |
|
|
|
|
edition='enterprise2', ver_mode=ver_mode, variants=['linux-amd64'] |
|
|
|
|
), |
|
|
|
|
package_step( |
|
|
|
|
edition='enterprise', |
|
|
|
|
ver_mode=ver_mode, |
|
|
|
|
include_enterprise2=True, |
|
|
|
|
), |
|
|
|
|
copy_packages_for_docker_step(), |
|
|
|
|
build_docker_images_step(edition='enterprise', ver_mode=ver_mode, publish=True), |
|
|
|
|
build_docker_images_step( |
|
|
|
|
edition='enterprise', ver_mode=ver_mode, publish=True, ubuntu=True |
|
|
|
|
), |
|
|
|
|
grafana_server_step(edition='enterprise'), |
|
|
|
|
e2e_tests_step('dashboards-suite', tries=3), |
|
|
|
|
e2e_tests_step('smoke-tests-suite', tries=3), |
|
|
|
|
e2e_tests_step('panels-suite', tries=3), |
|
|
|
|
e2e_tests_step('various-suite', tries=3), |
|
|
|
|
e2e_tests_artifacts(), |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
if include_enterprise: |
|
|
|
|
build_steps.extend([ |
|
|
|
|
build_backend_step(edition=edition2, ver_mode=ver_mode, variants=['linux-amd64']), |
|
|
|
|
]) |
|
|
|
|
publish_steps = [] |
|
|
|
|
|
|
|
|
|
# Insert remaining steps |
|
|
|
|
build_steps.extend([ |
|
|
|
|
package_step(edition=edition, ver_mode=ver_mode, include_enterprise2=include_enterprise), |
|
|
|
|
copy_packages_for_docker_step(), |
|
|
|
|
build_docker_images_step(edition=edition, ver_mode=ver_mode, publish=True), |
|
|
|
|
build_docker_images_step(edition=edition, ver_mode=ver_mode, ubuntu=True, publish=True), |
|
|
|
|
grafana_server_step(edition=edition), |
|
|
|
|
]) |
|
|
|
|
|
|
|
|
|
if not disable_tests: |
|
|
|
|
build_steps.extend([ |
|
|
|
|
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), |
|
|
|
|
e2e_tests_artifacts(edition=edition), |
|
|
|
|
]) |
|
|
|
|
|
|
|
|
|
build_storybook = build_storybook_step(edition=edition, ver_mode=ver_mode) |
|
|
|
|
if build_storybook: |
|
|
|
|
build_steps.append(build_storybook) |
|
|
|
|
|
|
|
|
|
if should_upload: |
|
|
|
|
publish_steps.extend([ |
|
|
|
|
upload_cdn_step(edition=edition, ver_mode=ver_mode, trigger=trigger_oss), |
|
|
|
|
upload_packages_step(edition=edition, ver_mode=ver_mode, trigger=trigger_oss), |
|
|
|
|
package_step(edition=edition2, ver_mode=ver_mode, include_enterprise2=include_enterprise, variants=['linux-amd64']), |
|
|
|
|
upload_cdn_step(edition=edition2, ver_mode=ver_mode), |
|
|
|
|
]) |
|
|
|
|
if should_publish: |
|
|
|
|
publish_step = store_storybook_step(edition=edition, ver_mode=ver_mode) |
|
|
|
|
if publish_step: |
|
|
|
|
publish_steps.append(publish_step) |
|
|
|
|
windows_package_steps = get_windows_steps(edition=edition, ver_mode=ver_mode) |
|
|
|
|
|
|
|
|
|
if should_upload: |
|
|
|
|
step = upload_packages_step(edition=edition2, ver_mode=ver_mode) |
|
|
|
|
if step: |
|
|
|
|
publish_steps.append(step) |
|
|
|
|
|
|
|
|
|
deps_on_clone_enterprise_step = { |
|
|
|
|
'depends_on': [ |
|
|
|
|
'init-enterprise', |
|
|
|
|
] |
|
|
|
|
} |
|
|
|
|
if ver_mode in ( |
|
|
|
|
'release', |
|
|
|
|
'release-branch', |
|
|
|
|
): |
|
|
|
|
upload_packages_enterprise = upload_packages_step( |
|
|
|
|
edition='enterprise', ver_mode=ver_mode, trigger=trigger_oss |
|
|
|
|
) |
|
|
|
|
upload_packages_enterprise['depends_on'] = ['package'] |
|
|
|
|
|
|
|
|
|
upload_packages_enterprise2 = upload_packages_step( |
|
|
|
|
edition='enterprise2', ver_mode=ver_mode |
|
|
|
|
) |
|
|
|
|
upload_packages_enterprise2['depends_on'] = ['package-enterprise2'] |
|
|
|
|
|
|
|
|
|
publish_steps.extend( |
|
|
|
|
[ |
|
|
|
|
upload_cdn_step( |
|
|
|
|
edition='enterprise', ver_mode=ver_mode, trigger=trigger_oss |
|
|
|
|
), |
|
|
|
|
upload_packages_enterprise, |
|
|
|
|
package_step( |
|
|
|
|
edition='enterprise2', |
|
|
|
|
ver_mode=ver_mode, |
|
|
|
|
include_enterprise2=True, |
|
|
|
|
variants=['linux-amd64'], |
|
|
|
|
), |
|
|
|
|
upload_cdn_step(edition='enterprise2', ver_mode=ver_mode), |
|
|
|
|
upload_packages_enterprise2, |
|
|
|
|
] |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
for step in [wire_install_step(), yarn_install_step(edition), verify_gen_cue_step(edition), verify_gen_jsonnet_step(edition)]: |
|
|
|
|
step.update(deps_on_clone_enterprise_step) |
|
|
|
|
init_steps.extend([step]) |
|
|
|
|
integration_test_steps = [ |
|
|
|
|
postgres_integration_tests_step(), |
|
|
|
|
mysql_integration_tests_step(), |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
windows_pipeline = pipeline( |
|
|
|
|
name='{}-enterprise-windows'.format(ver_mode), edition=edition, trigger=trigger, |
|
|
|
|
steps=[identify_runner_step('windows')] + windows_package_steps, |
|
|
|
|
platform='windows', depends_on=[ |
|
|
|
|
'enterprise-build{}-publish-{}'.format(get_e2e_suffix(), ver_mode), |
|
|
|
|
], environment=environment, |
|
|
|
|
name='{}-enterprise-windows'.format(ver_mode), |
|
|
|
|
edition='enterprise', |
|
|
|
|
trigger=trigger, |
|
|
|
|
steps=get_windows_steps(edition='enterprise', ver_mode=ver_mode), |
|
|
|
|
platform='windows', |
|
|
|
|
depends_on=[ |
|
|
|
|
# 'enterprise-build-e2e-publish-{}'.format(ver_mode), |
|
|
|
|
'{}-enterprise-build-e2e-publish'.format(ver_mode), |
|
|
|
|
'{}-enterprise-test-frontend'.format(ver_mode), |
|
|
|
|
'{}-enterprise-test-backend'.format(ver_mode), |
|
|
|
|
'{}-enterprise-integration-tests'.format(ver_mode), |
|
|
|
|
], |
|
|
|
|
environment=environment, |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
pipelines = [ |
|
|
|
|
pipeline( |
|
|
|
|
name='{}-enterprise-build{}-publish'.format(ver_mode, get_e2e_suffix()), edition=edition, trigger=trigger, services=[], |
|
|
|
|
steps=init_steps + build_steps + package_steps + publish_steps, environment=environment, |
|
|
|
|
name='{}-enterprise-build-e2e-publish'.format(ver_mode), |
|
|
|
|
edition='enterprise', |
|
|
|
|
trigger=trigger, |
|
|
|
|
services=[], |
|
|
|
|
steps=init_steps + build_steps + publish_steps, |
|
|
|
|
environment=environment, |
|
|
|
|
volumes=volumes, |
|
|
|
|
), |
|
|
|
|
] |
|
|
|
|
if not disable_tests: |
|
|
|
|
pipelines.extend([ |
|
|
|
|
test_frontend(trigger, ver_mode, edition), |
|
|
|
|
test_backend(trigger, ver_mode, edition), |
|
|
|
|
pipeline( |
|
|
|
|
name='{}-enterprise-integration-tests'.format(ver_mode), edition=edition, trigger=trigger, services=services, |
|
|
|
|
steps=[download_grabpl_step(), identify_runner_step(), clone_enterprise_step(ver_mode), init_enterprise_step(ver_mode), verify_gen_cue_step(edition), verify_gen_jsonnet_step(edition), wire_install_step()] + integration_test_steps + [redis_integration_tests_step(), memcached_integration_tests_step()], |
|
|
|
|
environment=environment, volumes=volumes, |
|
|
|
|
), |
|
|
|
|
]) |
|
|
|
|
deps = { |
|
|
|
|
'depends_on': [ |
|
|
|
|
'{}-enterprise-build{}-publish'.format(ver_mode, get_e2e_suffix()), |
|
|
|
|
'{}-enterprise-test-frontend'.format(ver_mode), |
|
|
|
|
'{}-enterprise-test-backend'.format(ver_mode), |
|
|
|
|
'{}-enterprise-integration-tests'.format(ver_mode) |
|
|
|
|
test_frontend_enterprise(trigger, ver_mode, committish=committish), |
|
|
|
|
test_backend_enterprise(trigger, ver_mode, committish=committish), |
|
|
|
|
pipeline( |
|
|
|
|
name='{}-enterprise-integration-tests'.format(ver_mode), |
|
|
|
|
edition='enterprise', |
|
|
|
|
trigger=trigger, |
|
|
|
|
services=services, |
|
|
|
|
steps=[ |
|
|
|
|
download_grabpl_step(), |
|
|
|
|
identify_runner_step(), |
|
|
|
|
clone_enterprise_step(committish=committish), |
|
|
|
|
init_enterprise_step(ver_mode), |
|
|
|
|
] |
|
|
|
|
} |
|
|
|
|
windows_pipeline.update(deps) |
|
|
|
|
|
|
|
|
|
pipelines.extend([windows_pipeline]) |
|
|
|
|
+ with_deps( |
|
|
|
|
[ |
|
|
|
|
verify_gen_cue_step(), |
|
|
|
|
verify_gen_jsonnet_step(), |
|
|
|
|
], |
|
|
|
|
[ |
|
|
|
|
'init-enterprise', |
|
|
|
|
], |
|
|
|
|
) |
|
|
|
|
+ [ |
|
|
|
|
wire_install_step(), |
|
|
|
|
] |
|
|
|
|
+ integration_test_steps |
|
|
|
|
+ [ |
|
|
|
|
redis_integration_tests_step(), |
|
|
|
|
memcached_integration_tests_step(), |
|
|
|
|
], |
|
|
|
|
environment=environment, |
|
|
|
|
volumes=volumes, |
|
|
|
|
), |
|
|
|
|
windows_pipeline, |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
return pipelines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def enterprise2_pipelines(prefix='', ver_mode=ver_mode, trigger=release_trigger): |
|
|
|
|
if ver_mode == 'release': |
|
|
|
|
committish = '${DRONE_TAG}' |
|
|
|
|
elif ver_mode == 'release-branch': |
|
|
|
|
committish = '${DRONE_BRANCH}' |
|
|
|
|
else: |
|
|
|
|
committish = '${DRONE_COMMIT}' |
|
|
|
|
|
|
|
|
|
environment = { |
|
|
|
|
'EDITION': 'enterprise2', |
|
|
|
|
} |
|
|
|
|
edition = 'enterprise' |
|
|
|
|
services = integration_test_services(edition=edition) |
|
|
|
|
|
|
|
|
|
services = integration_test_services(edition='enterprise') |
|
|
|
|
volumes = integration_test_services_volumes() |
|
|
|
|
package_steps = [] |
|
|
|
|
publish_steps = [] |
|
|
|
|
should_publish = ver_mode == 'release' |
|
|
|
|
should_upload = should_publish or ver_mode in ('release-branch',) |
|
|
|
|
include_enterprise = edition == 'enterprise' |
|
|
|
|
edition2 = 'enterprise2' |
|
|
|
|
|
|
|
|
|
init_steps = [ |
|
|
|
|
download_grabpl_step(), |
|
|
|
|
identify_runner_step(), |
|
|
|
|
clone_enterprise_step(ver_mode), |
|
|
|
|
clone_enterprise_step(committish=committish), |
|
|
|
|
init_enterprise_step(ver_mode), |
|
|
|
|
compile_build_cmd(edition), |
|
|
|
|
] |
|
|
|
|
compile_build_cmd('enterprise'), |
|
|
|
|
] + with_deps( |
|
|
|
|
[ |
|
|
|
|
wire_install_step(), |
|
|
|
|
yarn_install_step(), |
|
|
|
|
verify_gen_cue_step(), |
|
|
|
|
], |
|
|
|
|
[ |
|
|
|
|
'init-enterprise', |
|
|
|
|
], |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
build_steps = [ |
|
|
|
|
build_frontend_step(edition=edition, ver_mode=ver_mode), |
|
|
|
|
build_frontend_package_step(edition=edition, ver_mode=ver_mode), |
|
|
|
|
build_plugins_step(edition=edition, ver_mode=ver_mode), |
|
|
|
|
build_frontend_step(edition='enterprise', ver_mode=ver_mode), |
|
|
|
|
build_frontend_package_step(edition='enterprise', ver_mode=ver_mode), |
|
|
|
|
build_plugins_step(edition='enterprise', ver_mode=ver_mode), |
|
|
|
|
build_backend_step( |
|
|
|
|
edition='enterprise2', ver_mode=ver_mode, variants=['linux-amd64'] |
|
|
|
|
), |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
if include_enterprise: |
|
|
|
|
build_steps.extend([ |
|
|
|
|
build_backend_step(edition=edition2, ver_mode=ver_mode, variants=['linux-amd64']), |
|
|
|
|
]) |
|
|
|
|
|
|
|
|
|
fetch_images = fetch_images_step(edition2) |
|
|
|
|
fetch_images.update({'depends_on': ['build-docker-images', 'build-docker-images-ubuntu']}) |
|
|
|
|
upload_cdn = upload_cdn_step(edition=edition2, ver_mode=ver_mode) |
|
|
|
|
upload_cdn['environment'].update({'ENTERPRISE2_CDN_PATH': from_secret('enterprise2-cdn-path')}) |
|
|
|
|
|
|
|
|
|
build_steps.extend([ |
|
|
|
|
package_step(edition=edition2, ver_mode=ver_mode, include_enterprise2=include_enterprise, variants=['linux-amd64']), |
|
|
|
|
upload_cdn, |
|
|
|
|
copy_packages_for_docker_step(edition=edition2), |
|
|
|
|
build_docker_images_step(edition=edition2, ver_mode=ver_mode, publish=True), |
|
|
|
|
build_docker_images_step(edition=edition2, ver_mode=ver_mode, ubuntu=True, publish=True), |
|
|
|
|
fetch_images, |
|
|
|
|
publish_images_step(edition2, 'release', mode=edition2, docker_repo='${{DOCKER_ENTERPRISE2_REPO}}'), |
|
|
|
|
]) |
|
|
|
|
|
|
|
|
|
if should_upload: |
|
|
|
|
step = upload_packages_step(edition=edition2, ver_mode=ver_mode) |
|
|
|
|
if step: |
|
|
|
|
publish_steps.append(step) |
|
|
|
|
|
|
|
|
|
deps_on_clone_enterprise_step = { |
|
|
|
|
'depends_on': [ |
|
|
|
|
'init-enterprise', |
|
|
|
|
fetch_images = fetch_images_step('enterprise2') |
|
|
|
|
fetch_images.update( |
|
|
|
|
{'depends_on': ['build-docker-images', 'build-docker-images-ubuntu']} |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
upload_cdn = upload_cdn_step(edition='enterprise2', ver_mode=ver_mode) |
|
|
|
|
upload_cdn['environment'].update( |
|
|
|
|
{'ENTERPRISE2_CDN_PATH': from_secret('enterprise2-cdn-path')} |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
build_steps.extend( |
|
|
|
|
[ |
|
|
|
|
package_step( |
|
|
|
|
edition='enterprise2', |
|
|
|
|
ver_mode=ver_mode, |
|
|
|
|
include_enterprise2=True, |
|
|
|
|
variants=['linux-amd64'], |
|
|
|
|
), |
|
|
|
|
upload_cdn, |
|
|
|
|
copy_packages_for_docker_step(edition='enterprise2'), |
|
|
|
|
build_docker_images_step( |
|
|
|
|
edition='enterprise2', ver_mode=ver_mode, publish=True |
|
|
|
|
), |
|
|
|
|
build_docker_images_step( |
|
|
|
|
edition='enterprise2', ver_mode=ver_mode, publish=True, ubuntu=True |
|
|
|
|
), |
|
|
|
|
fetch_images, |
|
|
|
|
publish_images_step( |
|
|
|
|
'enterprise2', |
|
|
|
|
'release', |
|
|
|
|
mode='enterprise2', |
|
|
|
|
docker_repo='${{DOCKER_ENTERPRISE2_REPO}}', |
|
|
|
|
), |
|
|
|
|
] |
|
|
|
|
} |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
publish_steps = [] |
|
|
|
|
|
|
|
|
|
if ver_mode in ( |
|
|
|
|
'release', |
|
|
|
|
'release-branch', |
|
|
|
|
): |
|
|
|
|
step = upload_packages_step(edition='enterprise2', ver_mode=ver_mode) |
|
|
|
|
step['depends_on'] = ['package-enterprise2'] |
|
|
|
|
|
|
|
|
|
for step in [wire_install_step(), yarn_install_step(), verify_gen_cue_step(edition)]: |
|
|
|
|
step.update(deps_on_clone_enterprise_step) |
|
|
|
|
init_steps.extend([step]) |
|
|
|
|
publish_steps.append(step) |
|
|
|
|
|
|
|
|
|
pipelines = [ |
|
|
|
|
pipeline( |
|
|
|
|
name='{}{}-enterprise2-build{}-publish'.format(prefix, ver_mode, get_e2e_suffix()), edition=edition, trigger=trigger, services=[], |
|
|
|
|
steps=init_steps + build_steps + package_steps + publish_steps, |
|
|
|
|
volumes=volumes, environment=environment, |
|
|
|
|
name='{}{}-enterprise2-build-e2e-publish'.format(prefix, ver_mode), |
|
|
|
|
edition='enterprise', |
|
|
|
|
trigger=trigger, |
|
|
|
|
services=[], |
|
|
|
|
steps=init_steps + build_steps + publish_steps, |
|
|
|
|
volumes=volumes, |
|
|
|
|
environment=environment, |
|
|
|
|
), |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
return pipelines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def publish_artifacts_step(mode): |
|
|
|
|
security = '' |
|
|
|
|
if mode == 'security': |
|
|
|
@ -440,10 +530,15 @@ def publish_artifacts_step(mode): |
|
|
|
|
'GCP_KEY': from_secret('gcp_key'), |
|
|
|
|
'PRERELEASE_BUCKET': from_secret('prerelease_bucket'), |
|
|
|
|
}, |
|
|
|
|
'commands': ['./bin/grabpl artifacts publish {}--tag $${{DRONE_TAG}} --src-bucket $${{PRERELEASE_BUCKET}}'.format(security)], |
|
|
|
|
'commands': [ |
|
|
|
|
'./bin/grabpl artifacts publish {}--tag $${{DRONE_TAG}} --src-bucket $${{PRERELEASE_BUCKET}}'.format( |
|
|
|
|
security |
|
|
|
|
) |
|
|
|
|
], |
|
|
|
|
'depends_on': ['grabpl'], |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def publish_artifacts_pipelines(mode): |
|
|
|
|
trigger = { |
|
|
|
|
'event': ['promote'], |
|
|
|
@ -454,9 +549,16 @@ def publish_artifacts_pipelines(mode): |
|
|
|
|
publish_artifacts_step(mode), |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
return [pipeline( |
|
|
|
|
name='publish-artifacts-{}'.format(mode), trigger=trigger, steps=steps, edition="all", environment = {'EDITION': 'all'} |
|
|
|
|
)] |
|
|
|
|
return [ |
|
|
|
|
pipeline( |
|
|
|
|
name='publish-artifacts-{}'.format(mode), |
|
|
|
|
trigger=trigger, |
|
|
|
|
steps=steps, |
|
|
|
|
edition="all", |
|
|
|
|
environment={'EDITION': 'all'}, |
|
|
|
|
) |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def publish_packages_pipeline(): |
|
|
|
|
trigger = { |
|
|
|
@ -481,40 +583,63 @@ def publish_packages_pipeline(): |
|
|
|
|
deps = [ |
|
|
|
|
'publish-artifacts-public', |
|
|
|
|
'publish-docker-oss-public', |
|
|
|
|
'publish-docker-enterprise-public' |
|
|
|
|
'publish-docker-enterprise-public', |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
return [ |
|
|
|
|
pipeline( |
|
|
|
|
name='publish-packages-oss', |
|
|
|
|
trigger=trigger, |
|
|
|
|
steps=oss_steps, |
|
|
|
|
edition="all", |
|
|
|
|
depends_on=deps, |
|
|
|
|
environment={'EDITION': 'oss'}, |
|
|
|
|
), |
|
|
|
|
pipeline( |
|
|
|
|
name='publish-packages-enterprise', |
|
|
|
|
trigger=trigger, |
|
|
|
|
steps=enterprise_steps, |
|
|
|
|
edition="all", |
|
|
|
|
depends_on=deps, |
|
|
|
|
environment={'EDITION': 'enterprise'}, |
|
|
|
|
), |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
return [pipeline( |
|
|
|
|
name='publish-packages-oss', trigger=trigger, steps=oss_steps, edition="all", depends_on=deps, environment = {'EDITION': 'oss'}, |
|
|
|
|
), pipeline( |
|
|
|
|
name='publish-packages-enterprise', trigger=trigger, steps=enterprise_steps, edition="all", depends_on=deps, environment = {'EDITION': 'enterprise'} |
|
|
|
|
)] |
|
|
|
|
|
|
|
|
|
def publish_npm_pipelines(mode): |
|
|
|
|
def publish_npm_pipelines(): |
|
|
|
|
trigger = { |
|
|
|
|
'event': ['promote'], |
|
|
|
|
'target': [mode], |
|
|
|
|
'target': ['public'], |
|
|
|
|
} |
|
|
|
|
steps = [ |
|
|
|
|
download_grabpl_step(), |
|
|
|
|
yarn_install_step(), |
|
|
|
|
retrieve_npm_packages_step(), |
|
|
|
|
release_npm_packages_step() |
|
|
|
|
release_npm_packages_step(), |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
return [ |
|
|
|
|
pipeline( |
|
|
|
|
name='publish-npm-packages-public', |
|
|
|
|
trigger=trigger, |
|
|
|
|
steps=steps, |
|
|
|
|
edition="all", |
|
|
|
|
environment={'EDITION': 'all'}, |
|
|
|
|
) |
|
|
|
|
] |
|
|
|
|
|
|
|
|
|
return [pipeline( |
|
|
|
|
name='publish-npm-packages-{}'.format(mode), trigger=trigger, steps = steps, edition="all", environment = {'EDITION': 'all'}, |
|
|
|
|
)] |
|
|
|
|
|
|
|
|
|
def artifacts_page_pipeline(): |
|
|
|
|
trigger = { |
|
|
|
|
'event': ['promote'], |
|
|
|
|
'target': 'security', |
|
|
|
|
} |
|
|
|
|
return [pipeline(name='publish-artifacts-page', trigger=trigger, steps = [download_grabpl_step(), artifacts_page_step()], edition="all", environment = {'EDITION': 'all'} |
|
|
|
|
)] |
|
|
|
|
|
|
|
|
|
def get_e2e_suffix(): |
|
|
|
|
if not disable_tests: |
|
|
|
|
return '-e2e' |
|
|
|
|
return '' |
|
|
|
|
return [ |
|
|
|
|
pipeline( |
|
|
|
|
name='publish-artifacts-page', |
|
|
|
|
trigger=trigger, |
|
|
|
|
steps=[download_grabpl_step(), artifacts_page_step()], |
|
|
|
|
edition="all", |
|
|
|
|
environment={'EDITION': 'all'}, |
|
|
|
|
) |
|
|
|
|
] |
|
|
|
|