实例介绍
teletraan:Teletraan是Pinterest的部署系统源码下载。它支持上万个内部服务的部署,为Pinterest工程师提供快速、安全的代码交付。Teletraan支持0停机部署、回滚、分阶段部署等关键功能,以及显示提交详情、比较不同部署、通过邮件或Slack通知部署状态变化、显示指标等方便开发人员使用的功能。Teletraan目前尚不支持基于容器的部署,但您仍然可以使用Teletraan部署脚本调用docker或docker-compose来运行容器。
【实例截图】
文件清单
└── teletraan-824f41f49b5b47d2dc0530424e96b7e3c62b2fc8
├── AUTHORS.md
├── cicd
│ └── api-test
│ ├── api-test.sh
│ ├── deploy-service-api-test.postman_collection.json
│ ├── Dockerfile
│ └── run-as-container.sh
├── deploy-agent
│ ├── bin
│ │ └── set-deploy-status
│ ├── deployd
│ │ ├── agent.py
│ │ ├── BUILD.bazel
│ │ ├── client
│ │ │ ├── base_client.py
│ │ │ ├── client.py
│ │ │ ├── __init__.py
│ │ │ ├── restfulclient.py
│ │ │ └── serverless_client.py
│ │ ├── common
│ │ │ ├── caller.py
│ │ │ ├── config.py
│ │ │ ├── decorators.py
│ │ │ ├── env_status.py
│ │ │ ├── exceptions.py
│ │ │ ├── executor.py
│ │ │ ├── helper.py
│ │ │ ├── __init__.py
│ │ │ ├── single_instance.py
│ │ │ ├── stats.py
│ │ │ ├── status_code.py
│ │ │ ├── types.py
│ │ │ └── utils.py
│ │ ├── conf
│ │ │ ├── agent.conf
│ │ │ └── __init__.py
│ │ ├── download
│ │ │ ├── downloader.py
│ │ │ ├── download_helper_factory.py
│ │ │ ├── download_helper.py
│ │ │ ├── gpg_helper.py
│ │ │ ├── http_download_helper.py
│ │ │ ├── __init__.py
│ │ │ ├── local_download_helper.py
│ │ │ └── s3_download_helper.py
│ │ ├── __init__.py
│ │ ├── staging
│ │ │ ├── __init__.py
│ │ │ ├── stager.py
│ │ │ └── transformer.py
│ │ ├── teletraan
│ │ │ └── RESTARTING
│ │ └── types
│ │ ├── agent_status.py
│ │ ├── build.py
│ │ ├── deploy_goal.py
│ │ ├── deploy_stage.py
│ │ ├── deploy_type.py
│ │ ├── opcode.py
│ │ ├── ping_report.py
│ │ ├── ping_request.py
│ │ └── ping_response.py
│ ├── Dockerfile.unittest
│ ├── MANIFEST.in
│ ├── README.md
│ ├── requirements_test.txt
│ ├── requirements.txt
│ ├── setup.py
│ ├── tests
│ │ ├── BUILD.bazel
│ │ ├── __init__.py
│ │ ├── integration
│ │ │ ├── __init__.py
│ │ │ └── test_agent.py
│ │ └── unit
│ │ ├── deploy
│ │ │ ├── client
│ │ │ │ ├── __init__.py
│ │ │ │ ├── test_base_client.py
│ │ │ │ ├── test_client.py
│ │ │ │ └── test_serverless_client.py
│ │ │ ├── common
│ │ │ │ ├── __init__.py
│ │ │ │ ├── test_config.py
│ │ │ │ ├── test_helper.py
│ │ │ │ ├── test_stats.py
│ │ │ │ └── test_utils.py
│ │ │ ├── download
│ │ │ │ ├── __init__.py
│ │ │ │ ├── test_download_helper.py
│ │ │ │ ├── test_http_download_helper.py
│ │ │ │ ├── test_local_download_helper.py
│ │ │ │ ├── test_s3_download_helper.py
│ │ │ │ └── test.txt
│ │ │ ├── __init__.py
│ │ │ ├── server
│ │ │ │ ├── __init__.py
│ │ │ │ └── test_agent.py
│ │ │ ├── staging
│ │ │ │ ├── __init__.py
│ │ │ │ ├── test_helper.py
│ │ │ │ └── test_transformer.py
│ │ │ ├── types
│ │ │ │ ├── test_build.py
│ │ │ │ ├── test_deploy_goal.py
│ │ │ │ ├── test_ping_report.py
│ │ │ │ └── test_ping_request.py
│ │ │ └── utils
│ │ │ ├── __init__.py
│ │ │ ├── test_agent.py
│ │ │ ├── test_exec.py
│ │ │ └── test_status.py
│ │ └── __init__.py
│ ├── thirdparty
│ │ ├── BUILD
│ │ └── requirements.txt
│ ├── tox.ini
│ ├── unit_tests_docker.sh
│ └── WORKSPACE
├── deploy-board
│ ├── CHANGELOG.md
│ ├── deploy_board
│ │ ├── __init__.py
│ │ ├── settings.py
│ │ ├── static
│ │ │ ├── css
│ │ │ │ ├── bootstrap-chosen.css
│ │ │ │ ├── bootstrap.experiment.min.css
│ │ │ │ ├── bootstrap.min.css
│ │ │ │ ├── bootstrap.slate.min.css
│ │ │ │ ├── bootstrap-sortable.css
│ │ │ │ ├── bootstrap-theme.min.css
│ │ │ │ ├── chosen-sprite@2x.png
│ │ │ │ ├── chosen-sprite.png
│ │ │ │ ├── deploy-board.css
│ │ │ │ ├── fuelux.min.css
│ │ │ │ ├── star-rating.min.css
│ │ │ │ └── typeahead.css
│ │ │ ├── datatables
│ │ │ │ ├── css
│ │ │ │ │ ├── dataTables.bootstrap.css
│ │ │ │ │ ├── dataTables.bootstrap.min.css
│ │ │ │ │ ├── dataTables.foundation.css
│ │ │ │ │ ├── dataTables.foundation.min.css
│ │ │ │ │ ├── dataTables.jqueryui.css
│ │ │ │ │ ├── dataTables.jqueryui.min.css
│ │ │ │ │ ├── jquery.dataTables.css
│ │ │ │ │ ├── jquery.dataTables.min.css
│ │ │ │ │ └── jquery.dataTables_themeroller.css
│ │ │ │ ├── images
│ │ │ │ │ ├── sort_asc_disabled.png
│ │ │ │ │ ├── sort_asc.png
│ │ │ │ │ ├── sort_both.png
│ │ │ │ │ ├── sort_desc_disabled.png
│ │ │ │ │ └── sort_desc.png
│ │ │ │ └── js
│ │ │ │ ├── dataTables.bootstrap.js
│ │ │ │ ├── dataTables.bootstrap.min.js
│ │ │ │ ├── dataTables.foundation.js
│ │ │ │ ├── dataTables.foundation.min.js
│ │ │ │ ├── dataTables.jqueryui.js
│ │ │ │ ├── dataTables.jqueryui.min.js
│ │ │ │ ├── jquery.dataTables.js
│ │ │ │ ├── jquery.dataTables.min.js
│ │ │ │ └── jquery.js
│ │ │ ├── editable
│ │ │ │ ├── css
│ │ │ │ │ └── bootstrap-editable.css
│ │ │ │ ├── img
│ │ │ │ │ ├── clear.png
│ │ │ │ │ └── loading.gif
│ │ │ │ └── js
│ │ │ │ ├── bootstrap-editable.js
│ │ │ │ └── bootstrap-editable.min.js
│ │ │ ├── font-awesome
│ │ │ │ ├── css
│ │ │ │ │ ├── font-awesome.css
│ │ │ │ │ └── font-awesome.min.css
│ │ │ │ ├── fonts
│ │ │ │ │ ├── FontAwesome.otf
│ │ │ │ │ ├── fontawesome-webfont.eot
│ │ │ │ │ ├── fontawesome-webfont.svg
│ │ │ │ │ ├── fontawesome-webfont.ttf
│ │ │ │ │ └── fontawesome-webfont.woff
│ │ │ │ ├── less
│ │ │ │ │ ├── bordered-pulled.less
│ │ │ │ │ ├── core.less
│ │ │ │ │ ├── fixed-width.less
│ │ │ │ │ ├── font-awesome.less
│ │ │ │ │ ├── icons.less
│ │ │ │ │ ├── larger.less
│ │ │ │ │ ├── list.less
│ │ │ │ │ ├── mixins.less
│ │ │ │ │ ├── path.less
│ │ │ │ │ ├── rotated-flipped.less
│ │ │ │ │ ├── spinning.less
│ │ │ │ │ ├── stacked.less
│ │ │ │ │ └── variables.less
│ │ │ │ └── scss
│ │ │ │ ├── _bordered-pulled.scss
│ │ │ │ ├── _core.scss
│ │ │ │ ├── _fixed-width.scss
│ │ │ │ ├── font-awesome.scss
│ │ │ │ ├── _icons.scss
│ │ │ │ ├── _larger.scss
│ │ │ │ ├── _list.scss
│ │ │ │ ├── _mixins.scss
│ │ │ │ ├── _path.scss
│ │ │ │ ├── _rotated-flipped.scss
│ │ │ │ ├── _spinning.scss
│ │ │ │ ├── _stacked.scss
│ │ │ │ └── _variables.scss
│ │ │ ├── fonts
│ │ │ │ ├── fuelux.eot
│ │ │ │ ├── fuelux.svg
│ │ │ │ ├── fuelux.ttf
│ │ │ │ ├── fuelux.woff
│ │ │ │ ├── glyphicons-halflings-regular.eot
│ │ │ │ ├── glyphicons-halflings-regular.svg
│ │ │ │ ├── glyphicons-halflings-regular.ttf
│ │ │ │ └── glyphicons-halflings-regular.woff
│ │ │ ├── images
│ │ │ │ ├── aborted.png
│ │ │ │ ├── alert.png
│ │ │ │ ├── arrows.png
│ │ │ │ ├── cloudeng32.png
│ │ │ │ ├── cloudeng.png
│ │ │ │ ├── deploy-failing-16.gif
│ │ │ │ ├── deploy-failing-24.gif
│ │ │ │ ├── deploy-running-16.gif
│ │ │ │ ├── deploy-running-24.gif
│ │ │ │ ├── favicon.ico
│ │ │ │ ├── github20.png
│ │ │ │ ├── github24.png
│ │ │ │ ├── heart_red.png
│ │ │ │ ├── hotfix20.png
│ │ │ │ ├── hotfix32.png
│ │ │ │ ├── jenkins20.png
│ │ │ │ ├── jenkins24.png
│ │ │ │ ├── loading.gif
│ │ │ │ ├── logo1.png
│ │ │ │ ├── logo-home-1x.png
│ │ │ │ ├── logo-white-1x.png
│ │ │ │ ├── MidLoader.gif
│ │ │ │ ├── pinrepo20.jpg
│ │ │ │ ├── pinrepo20.png
│ │ │ │ ├── pinrepo24.png
│ │ │ │ ├── regular20.png
│ │ │ │ ├── regular32.png
│ │ │ │ ├── restart20.png
│ │ │ │ ├── restart32.png
│ │ │ │ ├── rollback20.png
│ │ │ │ ├── rollback32.png
│ │ │ │ ├── succeeded.png
│ │ │ │ ├── teletraan-general-error.png
│ │ │ │ ├── teletraan-lock.png
│ │ │ │ ├── teletraan-logo.png
│ │ │ │ └── teletraan.png
│ │ │ ├── img
│ │ │ │ ├── arrows.png
│ │ │ │ └── copy.png
│ │ │ └── js
│ │ │ ├── apidoc.js
│ │ │ ├── base-image-utils.js
│ │ │ ├── bootstrap.min.js
│ │ │ ├── bootstrap-sortable.js
│ │ │ ├── bootstrap-table-filter-control.js
│ │ │ ├── bootstrap-table.js
│ │ │ ├── bootstrap-uploadprogress.js
│ │ │ ├── chosen.jquery.min.js
│ │ │ ├── components
│ │ │ │ ├── capacitycomponents.js
│ │ │ │ ├── clusterconfigcomponents.js
│ │ │ │ └── sharedcomponents.js
│ │ │ ├── data-validation-helpers.js
│ │ │ ├── deploy-board.js
│ │ │ ├── fuelux.min.js
│ │ │ ├── jquery-1.11.1.min.js
│ │ │ ├── js.cookie-2.0.3.min.js
│ │ │ ├── private
│ │ │ │ ├── build_details.js
│ │ │ │ └── env_landing.js
│ │ │ ├── rapidoc-min.js
│ │ │ ├── star-rating.min.js
│ │ │ ├── typeahead.bundle.min.js
│ │ │ ├── vue.js
│ │ │ └── vue.min.js
│ │ ├── templates
│ │ │ ├── base.html
│ │ │ ├── builds
│ │ │ │ ├── build_details.html
│ │ │ │ ├── build_details.tmpl
│ │ │ │ ├── build_names.html
│ │ │ │ ├── builds_base.html
│ │ │ │ ├── builds_by_commit.html
│ │ │ │ ├── builds.html
│ │ │ │ ├── builds.tmpl
│ │ │ │ ├── commit_rows.tmpl
│ │ │ │ ├── commits.tmpl
│ │ │ │ ├── config_history_filter.tmpl
│ │ │ │ ├── confirm_tag_build.tmpl
│ │ │ │ ├── pick_a_build.tmpl
│ │ │ │ ├── show_commits.tmpl
│ │ │ │ └── simple_builds.tmpl
│ │ │ ├── clusters
│ │ │ │ ├── base_image_history.html
│ │ │ │ ├── base_image_info.tmpl
│ │ │ │ ├── base_images_events.html
│ │ │ │ ├── base_images_events.tmpl
│ │ │ │ ├── base_images.html
│ │ │ │ ├── base_images.tmpl
│ │ │ │ ├── cluster_capacity.tmpl
│ │ │ │ ├── cluster_configuration.html
│ │ │ │ ├── cluster-replacement-details.tmpl
│ │ │ │ ├── cluster-replacements.tmpl
│ │ │ │ ├── clusters.html
│ │ │ │ ├── get_base_image.tmpl
│ │ │ │ ├── get_host_type.tmpl
│ │ │ │ ├── get_image_name.tmpl
│ │ │ │ ├── get_placement.tmpl
│ │ │ │ ├── get_security_zone.tmpl
│ │ │ │ ├── host_types.html
│ │ │ │ ├── host_types.tmpl
│ │ │ │ ├── modify_host_type_modal.tmpl
│ │ │ │ ├── placements.html
│ │ │ │ ├── placements.tmpl
│ │ │ │ ├── schedule.tmpl
│ │ │ │ ├── security_zones.html
│ │ │ │ └── security_zones.tmpl
│ │ │ ├── configs
│ │ │ │ ├── alarm_config.html
│ │ │ │ ├── alarm_config.tmpl
│ │ │ │ ├── alarm_details.tmpl
│ │ │ │ ├── capacity.html
│ │ │ │ ├── capacity.tmpl
│ │ │ │ ├── cmp_capacity.tmpl
│ │ │ │ ├── config_history.html
│ │ │ │ ├── config_history.tmpl
│ │ │ │ ├── config_map.html
│ │ │ │ ├── config_map.tmpl
│ │ │ │ ├── env_config_comparison_result.html
│ │ │ │ ├── env_config.html
│ │ │ │ ├── env_config.tmpl
│ │ │ │ ├── metrics_config.html
│ │ │ │ ├── metrics_config.tmpl
│ │ │ │ ├── new_capacity_adv.html
│ │ │ │ ├── new_capacity.html
│ │ │ │ ├── promote_config.html
│ │ │ │ ├── promote_config.tmpl
│ │ │ │ ├── schedule_config.html
│ │ │ │ ├── schedule_config.tmpl
│ │ │ │ ├── webhooks_config.html
│ │ │ │ └── webhooks_config.tmpl
│ │ │ ├── deploys
│ │ │ │ ├── add_constraint_modal.tmpl
│ │ │ │ ├── all_history.html
│ │ │ │ ├── confirm_deploy.tmpl
│ │ │ │ ├── confirm_override.tmpl
│ │ │ │ ├── confirm_promote.tmpl
│ │ │ │ ├── confirm_rollback.tmpl
│ │ │ │ ├── _container_status.html
│ │ │ │ ├── daily_deploy_count.tmpl
│ │ │ │ ├── deploy_add_ons.tmpl
│ │ │ │ ├── deploy_build.html
│ │ │ │ ├── deploy_commits.html
│ │ │ │ ├── deploy_details.html
│ │ │ │ ├── deploy_details.tmpl
│ │ │ │ ├── deploy_history.tmpl
│ │ │ │ ├── deploy_logging_check_landing.tmpl
│ │ │ │ ├── deploy_logging_check_update.tmpl
│ │ │ │ ├── deploy_progress_summary.tmpl
│ │ │ │ ├── deploy_progress.tmpl
│ │ │ │ ├── deploy_schedule.html
│ │ │ │ ├── deploys_pagination_footer.tmpl
│ │ │ │ ├── deploys_pagination_header.tmpl
│ │ │ │ ├── deploys.tmpl
│ │ │ │ ├── duplicate_commit_deploy_message.tmpl
│ │ │ │ ├── edit_constraint_modal.tmpl
│ │ │ │ ├── new_deploy.html
│ │ │ │ ├── ongoing_deploys.tmpl
│ │ │ │ ├── remove_constraint_modal.tmpl
│ │ │ │ ├── schedule.tmpl
│ │ │ │ ├── simple_deploy_details.tmpl
│ │ │ │ ├── simple_pred_deploys.tmpl
│ │ │ │ ├── warning_no_deploy.tmpl
│ │ │ │ └── warning_no_nimbus_project_no_deploy.tmpl
│ │ │ ├── environs
│ │ │ │ ├── env_base.html
│ │ │ │ ├── env_deploy_details.html
│ │ │ │ ├── env_empty.html
│ │ │ │ ├── env_history.html
│ │ │ │ ├── env_hosts.html
│ │ │ │ ├── env_host_tags.html
│ │ │ │ ├── env_landing.html
│ │ │ │ ├── env_promote.html
│ │ │ │ ├── env_rollback.html
│ │ │ │ ├── envs_base.html
│ │ │ │ ├── envs_landing.html
│ │ │ │ ├── env_tabs.tmpl
│ │ │ │ ├── new_env_modal.tmpl
│ │ │ │ ├── new_stage_modal.tmpl
│ │ │ │ ├── remove_stage_modal.tmpl
│ │ │ │ ├── simple_envs.tmpl
│ │ │ │ ├── site_health.tmpl
│ │ │ │ └── tag_message.tmpl
│ │ │ ├── error.html
│ │ │ ├── error.tmpl
│ │ │ ├── feedbacks
│ │ │ │ ├── feedback_banner.tmpl
│ │ │ │ ├── feedback_landing.html
│ │ │ │ └── feedback_modal.tmpl
│ │ │ ├── groups
│ │ │ │ ├── asg_config.html
│ │ │ │ ├── asg_config.tmpl
│ │ │ │ ├── asg_metrics.tmpl
│ │ │ │ ├── asg_policy.tmpl
│ │ │ │ ├── asg_schedules.tmpl
│ │ │ │ ├── config_loading.tmpl
│ │ │ │ ├── create_asg_modal.tmpl
│ │ │ │ ├── deletion_loading.tmpl
│ │ │ │ ├── get_ami.tmpl
│ │ │ │ ├── get_config.tmpl
│ │ │ │ ├── get_hosttype.tmpl
│ │ │ │ ├── get_sg.tmpl
│ │ │ │ ├── get_subnets.tmpl
│ │ │ │ ├── group_base.html
│ │ │ │ ├── group_config_comparison_result.html
│ │ │ │ ├── group_config_history.html
│ │ │ │ ├── group_config_history.tmpl
│ │ │ │ ├── group_config.tmpl
│ │ │ │ ├── group_details.html
│ │ │ │ ├── group_envs.tmpl
│ │ │ │ ├── group_info.tmpl
│ │ │ │ ├── group_landing.html
│ │ │ │ ├── group_side_panel.html
│ │ │ │ ├── group_stats.tmpl
│ │ │ │ ├── health_check_activities.html
│ │ │ │ ├── health_check_activities.tmpl
│ │ │ │ ├── health_check_details.html
│ │ │ │ ├── host_infos.html
│ │ │ │ ├── latency_stats.tmpl
│ │ │ │ ├── launch_config.tmpl
│ │ │ │ ├── launch_rate.tmpl
│ │ │ │ ├── pase_config.tmpl
│ │ │ │ ├── pas_stats.tmpl
│ │ │ │ ├── scaling_activities.html
│ │ │ │ ├── scaling_activities.tmpl
│ │ │ │ ├── scaling_details.tmpl
│ │ │ │ └── simple_groups.tmpl
│ │ │ ├── hosts
│ │ │ │ ├── host_details.html
│ │ │ │ ├── host_details.tmpl
│ │ │ │ ├── hosts_base.html
│ │ │ │ ├── hosts.tmpl
│ │ │ │ ├── host_tags_sync_progress.tmpl
│ │ │ │ └── host_tags.tmpl
│ │ │ ├── host_side_panel.html
│ │ │ ├── hotfixs
│ │ │ │ ├── cherry_pick.html
│ │ │ │ ├── hotfix_detail.html
│ │ │ │ ├── hotfix_detail.tmpl
│ │ │ │ └── hotfix_landing.html
│ │ │ ├── landing.html
│ │ │ ├── message_banner.tmpl
│ │ │ ├── oauth_failure.html
│ │ │ ├── panel_heading.tmpl
│ │ │ ├── swagger-ui
│ │ │ │ └── dist
│ │ │ │ ├── index.html
│ │ │ │ └── o2c.html
│ │ │ ├── under_construction.html
│ │ │ ├── users
│ │ │ │ ├── not_authorized.html
│ │ │ │ ├── not_authorized.tmpl
│ │ │ │ ├── users_config.html
│ │ │ │ └── users_config.tmpl
│ │ │ ├── warn_deploy_bad_build.tmpl
│ │ │ └── warn_no_success_deploy_in_pred.tmpl
│ │ ├── urls.py
│ │ ├── webapp
│ │ │ ├── agent_report.py
│ │ │ ├── alarm_views.py
│ │ │ ├── arcee_urls.py
│ │ │ ├── auth.py
│ │ │ ├── build_views.py
│ │ │ ├── capacity_views.py
│ │ │ ├── cluster_urls.py
│ │ │ ├── cluster_view.py
│ │ │ ├── common.py
│ │ │ ├── config_map_views.py
│ │ │ ├── deploy_views.py
│ │ │ ├── docs_views.py
│ │ │ ├── env_config_views.py
│ │ │ ├── env_views.py
│ │ │ ├── error_views.py
│ │ │ ├── feedback_views.py
│ │ │ ├── group_view.py
│ │ │ ├── helpers
│ │ │ │ ├── agents_helper.py
│ │ │ │ ├── arches_helper.py
│ │ │ │ ├── autoscaling_groups_helper.py
│ │ │ │ ├── autoscaling_metrics_helper.py
│ │ │ │ ├── base_client.py
│ │ │ │ ├── baseimages_helper.py
│ │ │ │ ├── builds_helper.py
│ │ │ │ ├── cells_helper.py
│ │ │ │ ├── clusters_helper.py
│ │ │ │ ├── decorators.py
│ │ │ │ ├── deployclient.py
│ │ │ │ ├── deploys_helper.py
│ │ │ │ ├── environ_hosts_helper.py
│ │ │ │ ├── environs_helper.py
│ │ │ │ ├── exceptions.py
│ │ │ │ ├── groups_helper.py
│ │ │ │ ├── hosts_helper.py
│ │ │ │ ├── hosttypes_helper.py
│ │ │ │ ├── hotfixs_helper.py
│ │ │ │ ├── __init__.py
│ │ │ │ ├── nimbusclient.py
│ │ │ │ ├── placements_helper.py
│ │ │ │ ├── ratings_helper.py
│ │ │ │ ├── rodimus_client.py
│ │ │ │ ├── schedules_helper.py
│ │ │ │ ├── securityzones_helper.py
│ │ │ │ ├── settings_logging.py
│ │ │ │ ├── specs_helper.py
│ │ │ │ ├── systems_helper.py
│ │ │ │ ├── tags_helper.py
│ │ │ │ └── users_helper.py
│ │ │ ├── host_tags_views.py
│ │ │ ├── host_views.py
│ │ │ ├── hotfix_views.py
│ │ │ ├── __init__.py
│ │ │ ├── metrics_views.py
│ │ │ ├── mix_urls.py
│ │ │ ├── promote_views.py
│ │ │ ├── schedule_views.py
│ │ │ ├── security.py
│ │ │ ├── service_add_ons.py
│ │ │ ├── templatetags
│ │ │ │ ├── __init__.py
│ │ │ │ └── utils.py
│ │ │ ├── urls.py
│ │ │ ├── user_views.py
│ │ │ ├── util_views.py
│ │ │ └── webhook_views.py
│ │ └── wsgi.py
│ ├── Dockerfile
│ ├── include
│ │ └── python2.7
│ ├── __init__.py
│ ├── integ_test
│ │ ├── agent_tests.py
│ │ ├── auto_deploy_tests.py
│ │ ├── build_tests.py
│ │ ├── commons.py
│ │ ├── env_config_tests.py
│ │ ├── env_deploy_tests.py
│ │ ├── ping_tests.py
│ │ ├── README
│ │ └── run.sh
│ ├── manage.py
│ ├── README.md
│ ├── requirements.txt
│ ├── run.sh
│ ├── setup.py
│ ├── tools
│ │ ├── agent_simulator.py
│ │ ├── commons.py
│ │ ├── create_deploy.py
│ │ ├── create_env.py
│ │ ├── pinger.py
│ │ ├── publish_build.py
│ │ ├── README
│ │ ├── run.sh
│ │ └── tmux
│ │ ├── devserver
│ │ └── teletraan.tmux.conf
│ └── tox.ini
├── deploy-sentinel
│ ├── agent.conf
│ ├── demo_provision.sh
│ ├── demo_run.sh
│ ├── host_info
│ ├── Makefile
│ ├── mysite
│ │ ├── manage.py
│ │ └── mysite
│ │ ├── __init__.py
│ │ ├── settings.py
│ │ ├── urls.py
│ │ └── wsgi.py
│ ├── quickstart.py
│ ├── README.md
│ ├── teletraan
│ │ ├── POST_DOWNLOAD
│ │ ├── POST_RESTART
│ │ ├── PRE_DOWNLOAD
│ │ ├── PRE_RESTART
│ │ ├── RESTARTING
│ │ ├── STOPPING
│ │ └── test.conf.tmpl
│ └── Vagrantfile
├── deploy-service
│ ├── common
│ │ ├── pom.xml
│ │ └── src
│ │ ├── main
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ └── deployservice
│ │ │ │ ├── alerts
│ │ │ │ │ ├── AlertAction.java
│ │ │ │ │ ├── AlertContextBuilder.java
│ │ │ │ │ ├── AlertContext.java
│ │ │ │ │ ├── AutoRollbackAction.java
│ │ │ │ │ ├── DefaultAlertContextBuilder.java
│ │ │ │ │ ├── ExternalAlertFactory.java
│ │ │ │ │ ├── MarkBadBuildAction.java
│ │ │ │ │ └── PinterestExternalAlertFactory.java
│ │ │ │ ├── allowlists
│ │ │ │ │ ├── Allowlist.java
│ │ │ │ │ └── BuildAllowlistImpl.java
│ │ │ │ ├── bean
│ │ │ │ │ ├── AcceptanceStatus.java
│ │ │ │ │ ├── AcceptanceType.java
│ │ │ │ │ ├── AgentBean.java
│ │ │ │ │ ├── AgentCountBean.java
│ │ │ │ │ ├── AgentErrorBean.java
│ │ │ │ │ ├── AgentState.java
│ │ │ │ │ ├── AgentStatus.java
│ │ │ │ │ ├── AlarmBean.java
│ │ │ │ │ ├── BuildBean.java
│ │ │ │ │ ├── BuildTagBean.java
│ │ │ │ │ ├── ChatMessageBean.java
│ │ │ │ │ ├── CommitBean.java
│ │ │ │ │ ├── ConfigHistoryBean.java
│ │ │ │ │ ├── DataBean.java
│ │ │ │ │ ├── DeployBean.java
│ │ │ │ │ ├── DeployCandidatesResponse.java
│ │ │ │ │ ├── DeployConstraintBean.java
│ │ │ │ │ ├── DeployConstraintType.java
│ │ │ │ │ ├── DeployFilterBean.java
│ │ │ │ │ ├── DeployGoalBean.java
│ │ │ │ │ ├── DeployPriority.java
│ │ │ │ │ ├── DeployProgressBean.java
│ │ │ │ │ ├── DeployQueryResultBean.java
│ │ │ │ │ ├── DeployStage.java
│ │ │ │ │ ├── DeployState.java
│ │ │ │ │ ├── DeployType.java
│ │ │ │ │ ├── EnvironBean.java
│ │ │ │ │ ├── EnvironState.java
│ │ │ │ │ ├── EnvState.java
│ │ │ │ │ ├── EnvType.java
│ │ │ │ │ ├── EnvWebHookBean.java
│ │ │ │ │ ├── ExternalAlert.java
│ │ │ │ │ ├── GroupHostBean.java
│ │ │ │ │ ├── GroupRolesBean.java
│ │ │ │ │ ├── HostAgentBean.java
│ │ │ │ │ ├── HostBean.java
│ │ │ │ │ ├── HostState.java
│ │ │ │ │ ├── HostTagBean.java
│ │ │ │ │ ├── HostTagInfo.java
│ │ │ │ │ ├── HotfixBean.java
│ │ │ │ │ ├── HotfixState.java
│ │ │ │ │ ├── MetricsConfigBean.java
│ │ │ │ │ ├── MetricsSpecBean.java
│ │ │ │ │ ├── OpCode.java
│ │ │ │ │ ├── OverridePolicy.java
│ │ │ │ │ ├── PingReportBean.java
│ │ │ │ │ ├── PingRequestBean.java
│ │ │ │ │ ├── PingResponseBean.java
│ │ │ │ │ ├── PingResult.java
│ │ │ │ │ ├── PromoteBean.java
│ │ │ │ │ ├── PromoteDisablePolicy.java
│ │ │ │ │ ├── PromoteFailPolicy.java
│ │ │ │ │ ├── PromoteType.java
│ │ │ │ │ ├── RatingBean.java
│ │ │ │ │ ├── Resource.java
│ │ │ │ │ ├── Role.java
│ │ │ │ │ ├── ScheduleBean.java
│ │ │ │ │ ├── ScheduleState.java
│ │ │ │ │ ├── SetClause.java
│ │ │ │ │ ├── TagBean.java
│ │ │ │ │ ├── TagSyncState.java
│ │ │ │ │ ├── TagTargetType.java
│ │ │ │ │ ├── TagValue.java
│ │ │ │ │ ├── TokenRolesBean.java
│ │ │ │ │ ├── Updatable.java
│ │ │ │ │ ├── UpdateStatement.java
│ │ │ │ │ ├── UserRolesBean.java
│ │ │ │ │ └── WebHookBean.java
│ │ │ │ ├── buildtags
│ │ │ │ │ ├── BuildTagsManagerImpl.java
│ │ │ │ │ └── BuildTagsManager.java
│ │ │ │ ├── chat
│ │ │ │ │ ├── ChatManager.java
│ │ │ │ │ ├── DefaultChatManager.java
│ │ │ │ │ ├── HipChatManager.java
│ │ │ │ │ └── SlackChatManager.java
│ │ │ │ ├── common
│ │ │ │ │ ├── AlarmDataFactory.java
│ │ │ │ │ ├── ChangeFeedJob.java
│ │ │ │ │ ├── CommonUtils.java
│ │ │ │ │ ├── Constants.java
│ │ │ │ │ ├── DBConfigReader.java
│ │ │ │ │ ├── DeployInternalException.java
│ │ │ │ │ ├── EncryptionUtils.java
│ │ │ │ │ ├── EventMessage.java
│ │ │ │ │ ├── HTTPClient.java
│ │ │ │ │ ├── Jenkins.java
│ │ │ │ │ ├── KeyReaderFactory.java
│ │ │ │ │ ├── KeyReader.java
│ │ │ │ │ ├── KnoxDBKeyReader.java
│ │ │ │ │ ├── KnoxKeyManager.java
│ │ │ │ │ ├── KnoxKeyReader.java
│ │ │ │ │ ├── MetricsDataFactory.java
│ │ │ │ │ ├── NotificationJob.java
│ │ │ │ │ ├── PersistableJSONFactory.java
│ │ │ │ │ ├── StateMachines.java
│ │ │ │ │ ├── TarUtils.java
│ │ │ │ │ └── WebhookDataFactory.java
│ │ │ │ ├── dao
│ │ │ │ │ ├── AgentCountDAO.java
│ │ │ │ │ ├── AgentDAO.java
│ │ │ │ │ ├── AgentErrorDAO.java
│ │ │ │ │ ├── BuildDAO.java
│ │ │ │ │ ├── ConfigHistoryDAO.java
│ │ │ │ │ ├── DataDAO.java
│ │ │ │ │ ├── DeployConstraintDAO.java
│ │ │ │ │ ├── DeployDAO.java
│ │ │ │ │ ├── EnvironDAO.java
│ │ │ │ │ ├── GroupDAO.java
│ │ │ │ │ ├── GroupRolesDAO.java
│ │ │ │ │ ├── HostAgentDAO.java
│ │ │ │ │ ├── HostDAO.java
│ │ │ │ │ ├── HostTagDAO.java
│ │ │ │ │ ├── HotfixDAO.java
│ │ │ │ │ ├── PromoteDAO.java
│ │ │ │ │ ├── RatingDAO.java
│ │ │ │ │ ├── ScheduleDAO.java
│ │ │ │ │ ├── TagDAO.java
│ │ │ │ │ ├── TokenRolesDAO.java
│ │ │ │ │ ├── UserRolesDAO.java
│ │ │ │ │ └── UtilDAO.java
│ │ │ │ ├── db
│ │ │ │ │ ├── DatabaseUtil.java
│ │ │ │ │ ├── DBAgentCountDAOImpl.java
│ │ │ │ │ ├── DBAgentDAOImpl.java
│ │ │ │ │ ├── DBAgentErrorDAOImpl.java
│ │ │ │ │ ├── DBBuildDAOImpl.java
│ │ │ │ │ ├── DBConfigHistoryDAOImpl.java
│ │ │ │ │ ├── DBDataDAOImpl.java
│ │ │ │ │ ├── DBDeployConstraintDAOImpl.java
│ │ │ │ │ ├── DBDeployDAOImpl.java
│ │ │ │ │ ├── DBEnvironDAOImpl.java
│ │ │ │ │ ├── DBGroupDAOImpl.java
│ │ │ │ │ ├── DBGroupRolesDAOImpl.java
│ │ │ │ │ ├── DBHostAgentDAOImpl.java
│ │ │ │ │ ├── DBHostDAOImpl.java
│ │ │ │ │ ├── DBHostTagDAOImpl.java
│ │ │ │ │ ├── DBHotfixDAOImpl.java
│ │ │ │ │ ├── DBPromoteDAOImpl.java
│ │ │ │ │ ├── DBRatingsDAOImpl.java
│ │ │ │ │ ├── DBScheduleDAOImpl.java
│ │ │ │ │ ├── DBTagDAOImpl.java
│ │ │ │ │ ├── DBTokenRolesDAOImpl.java
│ │ │ │ │ ├── DBUserRolesDAOImpl.java
│ │ │ │ │ ├── DBUtilDAOImpl.java
│ │ │ │ │ ├── DeployQueryFilter.java
│ │ │ │ │ ├── HostTagBeanRowProcessor.java
│ │ │ │ │ ├── QueryUtils.java
│ │ │ │ │ └── SingleResultSetHandlerFactory.java
│ │ │ │ │ ├── DefaultMailManager.java
│ │ │ │ │ ├── MailManager.java
│ │ │ │ │ └── SMTPMailManagerImpl.java
│ │ │ │ ├── events
│ │ │ │ │ ├── BuildEventPublisher.java
│ │ │ │ │ ├── DeployEvent.java
│ │ │ │ │ └── EventBridgePublisher.java
│ │ │ │ ├── exception
│ │ │ │ │ └── TeletaanInternalException.java
│ │ │ │ ├── group
│ │ │ │ │ ├── CMDBHostGroupManager.java
│ │ │ │ │ ├── DefaultHostGroupManager.java
│ │ │ │ │ └── HostGroupManager.java
│ │ │ │ ├── handler
│ │ │ │ │ ├── BuildTagHandler.java
│ │ │ │ │ ├── CommonHandler.java
│ │ │ │ │ ├── ConfigHistoryHandler.java
│ │ │ │ │ ├── DataHandler.java
│ │ │ │ │ ├── DeployHandlerInterface.java
│ │ │ │ │ ├── DeployHandler.java
│ │ │ │ │ ├── EnvironHandler.java
│ │ │ │ │ ├── EnvTagHandler.java
│ │ │ │ │ ├── GoalAnalyst.java
│ │ │ │ │ ├── HostHandler.java
│ │ │ │ │ ├── PingHandler.java
│ │ │ │ │ ├── RatingsHandler.java
│ │ │ │ │ ├── TagHandler.java
│ │ │ │ │ └── WebhookJob.java
│ │ │ │ ├── knox
│ │ │ │ │ ├── CommandLineKnox.java
│ │ │ │ │ ├── FileSystemKnox.java
│ │ │ │ │ ├── Knox.java
│ │ │ │ │ └── KnoxJsonDecoder.java
│ │ │ │ ├── metrics
│ │ │ │ │ ├── DefaultHostClassifier.java
│ │ │ │ │ └── HostClassifier.java
│ │ │ │ ├── pingrequests
│ │ │ │ │ ├── Ec2InstanceValidator.java
│ │ │ │ │ └── PingRequestValidator.java
│ │ │ │ ├── rodimus
│ │ │ │ │ ├── DefaultRodimusManager.java
│ │ │ │ │ ├── RodimusManagerImpl.java
│ │ │ │ │ └── RodimusManager.java
│ │ │ │ ├── scm
│ │ │ │ │ ├── BaseManager.java
│ │ │ │ │ ├── DefaultSourceControlManager.java
│ │ │ │ │ ├── GithubManager.java
│ │ │ │ │ ├── PhabricatorManager.java
│ │ │ │ │ ├── SourceControlManager.java
│ │ │ │ │ └── SourceControlManagerProxy.java
│ │ │ │ └── ServiceContext.java
│ │ │ └── resources
│ │ │ └── sql
│ │ │ ├── cleanup.sql
│ │ │ └── deploy.sql
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── deployservice
│ │ ├── alerts
│ │ │ └── PinterestExternalAlertFactoryTest.java
│ │ ├── bean
│ │ │ └── BeanUtils.java
│ │ ├── buildtags
│ │ │ └── BuildTagsManagerImplTest.java
│ │ ├── common
│ │ │ ├── CommonUtilsTest.java
│ │ │ ├── DBConfigReaderTest.java
│ │ │ ├── HTTPClientTest.java
│ │ │ ├── KnoxKeyReaderTest.java
│ │ │ ├── KnoxKeyTest.java
│ │ │ └── TarUtilsTest.java
│ │ ├── db
│ │ │ └── DBDAOTest.java
│ │ ├── events
│ │ │ └── EventBridgePublisherTest.java
│ │ ├── group
│ │ │ └── CMDBHostGroupManagerTest.java
│ │ ├── handler
│ │ │ ├── ConfigHistoryHandlerTest.java
│ │ │ ├── EnvironHandlerTest.java
│ │ │ ├── GoalAnalystTest.java
│ │ │ └── PingHandlerTest.java
│ │ ├── metrics
│ │ │ └── DefaultHostClassifierTest.java
│ │ ├── rodimus
│ │ │ └── RodimusManagerImplTest.java
│ │ └── scm
│ │ └── GithubManagerTest.java
│ ├── Dockerfile.dev
│ ├── pom.xml
│ ├── README.md
│ ├── settings.xml
│ ├── teletraanservice
│ │ ├── bin
│ │ │ ├── run.sh
│ │ │ ├── server-no-db.yaml
│ │ │ └── server.yaml
│ │ ├── Dockerfile
│ │ ├── pom.xml
│ │ └── src
│ │ ├── assembly
│ │ │ └── teletraanservice.xml
│ │ ├── main
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │ └── teletraan
│ │ │ │ ├── config
│ │ │ │ │ ├── AnonymousAuthenticationFactory.java
│ │ │ │ │ ├── AppEventFactory.java
│ │ │ │ │ ├── AuthenticationFactory.java
│ │ │ │ │ ├── AuthorizationFactory.java
│ │ │ │ │ ├── AutoScalingFactory.java
│ │ │ │ │ ├── AwsFactory.java
│ │ │ │ │ ├── BuildAllowlistFactory.java
│ │ │ │ │ ├── ChatFactory.java
│ │ │ │ │ ├── CMDBFactory.java
│ │ │ │ │ ├── DataSourceFactory.java
│ │ │ │ │ ├── DefaultChatFactory.java
│ │ │ │ │ ├── DefaultEmailFactory.java
│ │ │ │ │ ├── DefaultHostGroupFactory.java
│ │ │ │ │ ├── DefaultSourceControlFactory.java
│ │ │ │ │ ├── EmailFactory.java
│ │ │ │ │ ├── EmbeddedDataSourceFactory.java
│ │ │ │ │ ├── ExternalAlertsConfigFactory.java
│ │ │ │ │ ├── GithubFactory.java
│ │ │ │ │ ├── HipchatFactory.java
│ │ │ │ │ ├── HostGroupFactory.java
│ │ │ │ │ ├── JenkinsFactory.java
│ │ │ │ │ ├── MicrometerMetricsFactory.java
│ │ │ │ │ ├── MysqlDataSourceFactory.java
│ │ │ │ │ ├── OpenAuthorizationFactory.java
│ │ │ │ │ ├── PhabricatorFactory.java
│ │ │ │ │ ├── RodimusFactory.java
│ │ │ │ │ ├── SlackFactory.java
│ │ │ │ │ ├── SMTPFactory.java
│ │ │ │ │ ├── SourceControlFactory.java
│ │ │ │ │ ├── SystemFactory.java
│ │ │ │ │ ├── TokenAuthenticationFactory.java
│ │ │ │ │ ├── TokenAuthorizationFactory.java
│ │ │ │ │ ├── WorkerConfig.java
│ │ │ │ │ └── ZKMysqlDataSourceFactory.java
│ │ │ │ ├── ConfigHelper.java
│ │ │ │ ├── exception
│ │ │ │ │ └── GenericExceptionMapper.java
│ │ │ │ ├── health
│ │ │ │ │ ├── GenericHealthCheck.java
│ │ │ │ │ └── WorkerHealthCheck.java
│ │ │ │ ├── resource
│ │ │ │ │ ├── Agents.java
│ │ │ │ │ ├── Builds.java
│ │ │ │ │ ├── Commits.java
│ │ │ │ │ ├── DeployCandidates.java
│ │ │ │ │ ├── DeployConstraints.java
│ │ │ │ │ ├── Deploys.java
│ │ │ │ │ ├── EnvAgentConfigs.java
│ │ │ │ │ ├── EnvAgents.java
│ │ │ │ │ ├── EnvAlarms.java
│ │ │ │ │ ├── EnvAlerts.java
│ │ │ │ │ ├── EnvCapacities.java
│ │ │ │ │ ├── EnvDeploys.java
│ │ │ │ │ ├── EnvGroupRoles.java
│ │ │ │ │ ├── EnvHistory.java
│ │ │ │ │ ├── EnvHosts.java
│ │ │ │ │ ├── EnvHostTags.java
│ │ │ │ │ ├── Environs.java
│ │ │ │ │ ├── EnvMetrics.java
│ │ │ │ │ ├── EnvPromotes.java
│ │ │ │ │ ├── EnvScriptConfigs.java
│ │ │ │ │ ├── EnvStages.java
│ │ │ │ │ ├── EnvTokenRoles.java
│ │ │ │ │ ├── EnvUserRoles.java
│ │ │ │ │ ├── EnvWebHooks.java
│ │ │ │ │ ├── GroupRoles.java
│ │ │ │ │ ├── Groups.java
│ │ │ │ │ ├── Hosts.java
│ │ │ │ │ ├── Hotfixs.java
│ │ │ │ │ ├── Pings.java
│ │ │ │ │ ├── Ratings.java
│ │ │ │ │ ├── Schedules.java
│ │ │ │ │ ├── SystemGroupRoles.java
│ │ │ │ │ ├── Systems.java
│ │ │ │ │ ├── SystemTokenRoles.java
│ │ │ │ │ ├── SystemUserRoles.java
│ │ │ │ │ ├── Tags.java
│ │ │ │ │ ├── TokenRoles.java
│ │ │ │ │ ├── UserRoles.java
│ │ │ │ │ └── Utils.java
│ │ │ │ ├── security
│ │ │ │ │ ├── AnonymousAuthFilter.java
│ │ │ │ │ ├── AnonymousUser.java
│ │ │ │ │ ├── Authorizer.java
│ │ │ │ │ ├── OpenAuthorizer.java
│ │ │ │ │ ├── RoleAuthorizer.java
│ │ │ │ │ ├── TokenAuthFilter.java
│ │ │ │ │ ├── UserDataHelper.java
│ │ │ │ │ ├── UserPrincipal.java
│ │ │ │ │ ├── UserResourceKey.java
│ │ │ │ │ └── UserSecurityContext.java
│ │ │ │ ├── TeletraanAgentService.java
│ │ │ │ ├── TeletraanServiceConfiguration.java
│ │ │ │ ├── TeletraanServiceContext.java
│ │ │ │ ├── TeletraanService.java
│ │ │ │ ├── TeletraanWorker.java
│ │ │ │ └── worker
│ │ │ │ ├── AgentJanitor.java
│ │ │ │ ├── AutoPromoter.java
│ │ │ │ ├── BuildJanitor.java
│ │ │ │ ├── DeployJanitor.java
│ │ │ │ ├── DeployTagWorker.java
│ │ │ │ ├── HostTerminator.java
│ │ │ │ ├── HotfixStateTransitioner.java
│ │ │ │ ├── MetricsEmitter.java
│ │ │ │ ├── PromoteResult.java
│ │ │ │ ├── SimpleAgentJanitor.java
│ │ │ │ └── StateTransitioner.java
│ │ │ └── resources
│ │ │ ├── banner.txt
│ │ │ └── META-INF
│ │ │ └── services
│ │ │ ├── com.pinterest.teletraan.config.AuthenticationFactory
│ │ │ ├── com.pinterest.teletraan.config.AuthorizationFactory
│ │ │ ├── com.pinterest.teletraan.config.ChatFactory
│ │ │ ├── com.pinterest.teletraan.config.DataSourceFactory
│ │ │ ├── com.pinterest.teletraan.config.EmailFactory
│ │ │ ├── com.pinterest.teletraan.config.HostGroupFactory
│ │ │ ├── com.pinterest.teletraan.config.SourceControlFactory
│ │ │ └── io.dropwizard.jackson.Discoverable
│ │ └── test
│ │ └── java
│ │ └── com
│ │ └── teletraan
│ │ ├── resource
│ │ │ ├── EnvAlertsTest.java
│ │ │ └── EnvPromotesTest.java
│ │ ├── security
│ │ │ ├── ScriptTokenAuthorizerTest.java
│ │ │ └── UserTokenAuthorizerTest.java
│ │ └── worker
│ │ ├── AutoPromoteBuildTest.java
│ │ ├── AutoPromoteDeployTest.java
│ │ ├── HostTerminatorTest.java
│ │ └── MetricsEmitterTest.java
│ └── universal
│ ├── pom.xml
│ ├── README.md
│ └── src
│ ├── main
│ │ └── java
│ │ └── com
│ │ └── teletraan
│ │ └── universal
│ │ ├── events
│ │ │ ├── AppEvent.java
│ │ │ ├── AppEventListener.java
│ │ │ ├── AppEventPublisher.java
│ │ │ ├── GenericEventPublisher.java
│ │ │ ├── MetricsAsEventsListener.java
│ │ │ ├── ReactiveEventPublisher.java
│ │ │ └── ResourceChangedEvent.java
│ │ └── metrics
│ │ ├── Constants.java
│ │ ├── ErrorBudgetCounterFactory.java
│ │ ├── micrometer
│ │ │ ├── PinStatsConfig.java
│ │ │ ├── PinStatsLongTaskTimer.java
│ │ │ ├── PinStatsMeterRegistry.java
│ │ │ ├── PinStatsNamingConvention.java
│ │ │ └── PinStatsPublisher.java
│ │ └── Utils.java
│ └── test
│ └── java
│ └── com
│ └── teletraan
│ └── universal
│ ├── events
│ │ ├── GenericEventPublisherTest.java
│ │ ├── MetricsAsEventsListenerTest.java
│ │ └── ResourceChangedEventTest.java
│ └── metrics
│ ├── micrometer
│ │ ├── PinStatsConfigTest.java
│ │ ├── PinStatsLongTaskTimerTest.java
│ │ ├── PinStatsMeterRegistryCompatibilityTest.java
│ │ ├── PinStatsNamingConventionTest.java
│ │ └── PinStatsPublisherTest.java
│ └── UtilsTest.java
├── docker-compose-no-db.yml
├── docker-compose.yml
├── docs
│ ├── api
│ │ ├── Agents.md
│ │ ├── Builds.md
│ │ ├── Commits.md
│ │ ├── definitions.md
│ │ ├── DeployConstraints.md
│ │ ├── Deploys.md
│ │ ├── Environments.md
│ │ ├── ExternalAlerts.md
│ │ ├── GroupRoles.md
│ │ ├── HostsAndSystems.md
│ │ ├── Hosts.md
│ │ ├── HostsTags.md
│ │ ├── overview.md
│ │ ├── ScriptTokens.md
│ │ ├── security.md
│ │ ├── Tags.md
│ │ └── UserRoles.md
│ ├── docs_generator
│ │ ├── build.gradle
│ │ ├── config.properties
│ │ ├── generate_api_docs.py
│ │ ├── gradle
│ │ │ ├── publishing.gradle
│ │ │ └── wrapper
│ │ │ ├── gradle-wrapper.jar
│ │ │ └── gradle-wrapper.properties
│ │ ├── gradle.properties
│ │ ├── gradlew
│ │ ├── gradlew.bat
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── settings.gradle
│ │ └── src
│ │ ├── main
│ │ │ └── java
│ │ │ └── io
│ │ │ └── github
│ │ │ └── swagger2markup
│ │ │ └── cli
│ │ │ └── Application.java
│ │ └── test
│ │ └── resources
│ │ └── swagger_petstore.yaml
│ └── misc
│ └── images
│ ├── AddBuildAction.png
│ ├── AddMetric.png
│ ├── AddScriptConfig.png
│ ├── AddScriptToken.png
│ ├── AddUser.png
│ ├── AddWebhookButton.png
│ ├── AutoPromoteSelection.png
│ ├── BadBuildInEnvironment.png
│ ├── CapacityGroup.png
│ ├── CapacityName.png
│ ├── ChooseABuild.png
│ ├── CreateDeployButton.png
│ ├── CreateEnvDialog.png
│ ├── CreateEnvironment.png
│ ├── CreateNewEnvironment.png
│ ├── DeployGroup.png
│ ├── DeployHistoryButton.png
│ ├── DeployHistory.png
│ ├── DeployPipeline.png
│ ├── DeployStateMachine.png
│ ├── DeployStatusBar.png
│ ├── EnvConfig.png
│ ├── EnvConfigureButton.png
│ ├── EnvironCapacityRemove.png
│ ├── EnvironStageRemove.png
│ ├── GeneralConfig.png
│ ├── MarkBuildAsBad.png
│ ├── MetricConfigExample.png
│ ├── MetricGaugeExample.png
│ ├── NewUserModal.png
│ ├── PromoteButton.png
│ ├── PromoteConfig.png
│ ├── PromotePage.png
│ ├── Promote.png
│ ├── PublishBuildsTrigger.png
│ ├── PublishBuildToS3.png
│ ├── QuickstartAgentConfig.png
│ ├── QuickstartCapacity.png
│ ├── RollbackButton.png
│ ├── RollbackConfirm.png
│ ├── RollbackPage.png
│ ├── SaveScriptToken.png
│ ├── ScriptConfigButton.png
│ ├── ScriptTokenModal.png
│ ├── ScriptTokensButton.png
│ ├── SearchBranch.png
│ ├── ShowScriptToken.png
│ ├── TeletraanDefinition.png
│ ├── TeletraanDesign.png
│ ├── TeletraanIntro.png
│ ├── TeletraanMetricsGauges.png
│ ├── TeletraanSwaggerUI.png
│ ├── WebhookModal.png
│ └── WebhooksButton.png
├── LICENSE
├── README.md
├── tools
│ └── mysql
│ ├── check_version.sql
│ ├── deploydb.sh
│ ├── docker-init
│ │ └── initdb.sh
│ ├── README
│ ├── README.dev
│ ├── schema-update-10.sql
│ ├── schema-update-11.sql
│ ├── schema-update-12.sql
│ ├── schema-update-13.sql
│ ├── schema-update-14.sql
│ ├── schema-update-15.sql
│ ├── schema-update-16.sql
│ ├── schema-update-17.sql
│ ├── schema-update-18.sql
│ ├── schema-update-1.sql
│ ├── schema-update-2.sql
│ ├── schema-update-3.sql
│ ├── schema-update-4.sql
│ ├── schema-update-5.sql
│ ├── schema-update-6.sql
│ ├── schema-update-7.sql
│ ├── schema-update-8.sql
│ ├── schema-update-9.sql
│ └── upgrade.sh
├── tox.ini
└── vagrant
├── provision_dev_env.sh
├── README.md
└── Vagrantfile
182 directories, 1023 files
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论