|
| 1 | +--- |
| 2 | +layout: fullwidth-with-breadcrumbs |
| 3 | +primary_title: 'OpenSearch Release Dashboard' |
| 4 | +title: 'OpenSearch Release Dashboard' |
| 5 | +breadcrumbs: |
| 6 | + icon: platform |
| 7 | + items: |
| 8 | + - title: The OpenSearch Platform |
| 9 | + url: '/platform/' |
| 10 | + - title: Release Dashboard |
| 11 | + url: '/release-dashboard/' |
| 12 | +omit_from_search: true |
| 13 | + |
| 14 | +release_versions: |
| 15 | + - version: 2.17.0 |
| 16 | + release_issue: 4908 |
| 17 | + release_retro_issue: 4909 |
| 18 | + - version: 2.16.0 |
| 19 | + release_issue: 4771 |
| 20 | + release_retro_issue: 4847 |
| 21 | + |
| 22 | +metrics_height_desktop: 2000 |
| 23 | +metrics_height_mobile: 6000 |
| 24 | +--- |
| 25 | + |
| 26 | +<style> |
| 27 | + body, html { |
| 28 | + margin: 0; |
| 29 | + padding: 0; |
| 30 | + width: 100%; |
| 31 | + height: 100%; |
| 32 | + display: flex; |
| 33 | + flex-direction: column; |
| 34 | + background-color: #fff; |
| 35 | + } |
| 36 | + h1 { |
| 37 | + text-align: center; |
| 38 | + margin: 5px 0; |
| 39 | + cursor: pointer; |
| 40 | + text-decoration: underline; |
| 41 | + } |
| 42 | + .dashboard-container { |
| 43 | + width: 100%; |
| 44 | + margin-bottom: 20px; |
| 45 | + overflow: hidden; |
| 46 | + } |
| 47 | + iframe { |
| 48 | + width: 100%; |
| 49 | + border: none; |
| 50 | + } |
| 51 | + @media only screen and (min-width: 768px) { |
| 52 | + iframe { |
| 53 | + height: {{ page.benchmark_height_desktop }}px; |
| 54 | + } |
| 55 | + } |
| 56 | + @media only screen and (max-width: 767px) { |
| 57 | + iframe { |
| 58 | + height: {{ page.benchmark_height_mobile }}px; |
| 59 | + } |
| 60 | + } |
| 61 | + .modal { |
| 62 | + display: none; |
| 63 | + position: fixed; |
| 64 | + z-index: 1000; |
| 65 | + left: 0; |
| 66 | + top: 0; |
| 67 | + width: 100%; |
| 68 | + height: 100%; |
| 69 | + overflow: hidden; |
| 70 | + background-color: rgba(0,0,0,0.5); |
| 71 | + justify-content: center; |
| 72 | + align-items: center; |
| 73 | + } |
| 74 | + .modal-content { |
| 75 | + position: relative; |
| 76 | + width: 100%; |
| 77 | + height: 100%; |
| 78 | + max-width: 1200px; |
| 79 | + max-height: 900px |
| 80 | + background-color: white; |
| 81 | + overflow: hidden; |
| 82 | + } |
| 83 | + .modal-header { |
| 84 | + padding: 16px; |
| 85 | + font-size: 20px; |
| 86 | + font-weight: bold; |
| 87 | + border-bottom: 1px solid #ddd; |
| 88 | + background-color: #f5f5f5; |
| 89 | + margin-bottom: 16px; |
| 90 | + } |
| 91 | + .close { |
| 92 | + position: absolute; |
| 93 | + right: 20px; |
| 94 | + top: 20px; |
| 95 | + color: #000; |
| 96 | + font-size: 28px; |
| 97 | + font-weight: bold; |
| 98 | + cursor: pointer; |
| 99 | + z-index: 2; |
| 100 | + } |
| 101 | + .close:hover, |
| 102 | + .close:focus { |
| 103 | + color: #555; |
| 104 | + text-decoration: none; |
| 105 | + cursor: pointer; |
| 106 | + } |
| 107 | + .modal-body { |
| 108 | + padding: 16px; |
| 109 | + height: calc(100% - 60px); |
| 110 | + overflow: auto; |
| 111 | + } |
| 112 | + .nav-index { |
| 113 | + margin: 5px; |
| 114 | + text-align: center; |
| 115 | + } |
| 116 | + .nav-index a { |
| 117 | + margin: 0 15px; |
| 118 | + text-decoration: none; |
| 119 | + color: #007bff; |
| 120 | + font-weight: bold; |
| 121 | + } |
| 122 | + .nav-index a:hover { |
| 123 | + text-decoration: underline; |
| 124 | + } |
| 125 | + .button { |
| 126 | + display: inline-block; |
| 127 | + padding: 10px 15px; |
| 128 | + font-size: 14px; |
| 129 | + color: #fff; |
| 130 | + background-color: #007bff; |
| 131 | + text-decoration: none; |
| 132 | + border-radius: 4px; |
| 133 | + margin-top: 10px; |
| 134 | + } |
| 135 | + .button:hover { |
| 136 | + background-color: #0056b3; |
| 137 | + } |
| 138 | + .version-selector { |
| 139 | + display: flex; |
| 140 | + flex-wrap: wrap; |
| 141 | + justify-content: center; |
| 142 | + margin-bottom: 20px; |
| 143 | + } |
| 144 | + .version-item { |
| 145 | + margin: 0 10px; |
| 146 | + padding: 10px 20px; |
| 147 | + border: 1px solid #007bff; |
| 148 | + border-radius: 4px; |
| 149 | + cursor: pointer; |
| 150 | + color: #007bff; |
| 151 | + font-weight: bold; |
| 152 | + text-align: center; |
| 153 | + user-select: none; |
| 154 | + } |
| 155 | + .version-item.selected { |
| 156 | + background-color: #007bff; |
| 157 | + color: #fff; |
| 158 | + } |
| 159 | +</style> |
| 160 | + |
| 161 | +<p> |
| 162 | + Welcome to the OpenSearch Release Metrics page. As part of the metrics project initiative and with the goal of providing a central release dashboard, this page offers a comprehensive overview of the metrics and key indicators related to the ongoing OpenSearch releases. It provides a consolidated view of all release-related metrics, helping the OpenSearch community to track release progress and its activities effectively. |
| 163 | + <br><br> |
| 164 | + <a href="#metrics-dashboard">OpenSearch Release Metrics</a>: This dashboard provides a high-level overview of key repo health indicators and metrics related to the current OpenSearch release. It is designed to help release managers and the community monitor the release's progress and ensure that everything is on track. |
| 165 | + <br><br> |
| 166 | + <a href="#component-metrics-dashboard">OpenSearch Component Release Metrics</a>: This dashboard provides an overview of metrics related to specific OpenSearch components, enabling teams to track the release status of individual components through detailed component-level release metrics. |
| 167 | + <br><br> |
| 168 | + <a href="#test-results-dashboard">OpenSearch Release Build and Integration Test Results</a>: This dashboard focuses on build and integration test failures. It is a critical dashboard for component-level release owners, as it highlights build and integration test issues that need to be resolved to avoid delays or problems during the release process. |
| 169 | +</p> |
| 170 | + |
| 171 | +<h2>Release Version</h2> |
| 172 | +<div id="version-selector" class="version-selector"> |
| 173 | + {% for version in page.release_versions %} |
| 174 | + <div class="version-item {% if forloop.first %}selected{% endif %}" data-version="{{ version.version }}">{{ version.version }}</div> |
| 175 | + {% endfor %} |
| 176 | +</div> |
| 177 | + |
| 178 | +<div id="release-info"> |
| 179 | + <p id="release-issue"></p> |
| 180 | + <p id="release-retro-issue"></p> |
| 181 | +</div> |
| 182 | + |
| 183 | +<div id="metrics-dashboard" class="dashboard-container"> |
| 184 | + <h1 onclick="openModal('modal1')">OpenSearch Release Metrics</h1> |
| 185 | + <a id="metrics-dashboard-link" href="#" target="_blank" class="button">Direct Link to Metrics Dashboard</a> |
| 186 | + <iframe id="metrics-iframe" width="100%" height="{{ page.metrics_height_desktop }}"></iframe> |
| 187 | +</div> |
| 188 | + |
| 189 | +<div id="component-metrics-dashboard" class="dashboard-container"> |
| 190 | + <h1 onclick="openModal('modal3')">OpenSearch Component Release Metrics</h1> |
| 191 | + <a id="component-metrics-dashboard-link" href="#" target="_blank" class="button">Direct Link to Component Metrics Dashboard</a> |
| 192 | + <iframe id="component-metrics-iframe" width="100%" height="{{ page.metrics_height_desktop }}"></iframe> |
| 193 | +</div> |
| 194 | + |
| 195 | +<div id="test-results-dashboard" class="dashboard-container"> |
| 196 | + <h1 onclick="openModal('modal2')">OpenSearch Release Build and Integration Test Results</h1> |
| 197 | + <a id="test-results-dashboard-link" href="#" target="_blank" class="button">Direct Link to Test Results Dashboard</a> |
| 198 | + <iframe id="test-results-iframe" width="100%" height="{{ page.metrics_height_desktop }}"></iframe> |
| 199 | +</div> |
| 200 | + |
| 201 | + |
| 202 | +<div id="modal1" class="modal"> |
| 203 | + <div class="modal-content"> |
| 204 | + <div class="modal-header"> |
| 205 | + <span class="close" onclick="closeModal('modal1')">×</span> |
| 206 | + OpenSearch Release Metrics |
| 207 | + </div> |
| 208 | + <div class="modal-body"> |
| 209 | + <iframe id="modal1-iframe" width="100%" height="100%"></iframe> |
| 210 | + </div> |
| 211 | + </div> |
| 212 | +</div> |
| 213 | + |
| 214 | +<div id="modal2" class="modal"> |
| 215 | + <div class="modal-content"> |
| 216 | + <div class="modal-header"> |
| 217 | + <span class="close" onclick="closeModal('modal2')">×</span> |
| 218 | + OpenSearch Component Release Metrics |
| 219 | + </div> |
| 220 | + <div class="modal-body"> |
| 221 | + <iframe id="modal2-iframe" width="100%" height="100%"></iframe> |
| 222 | + </div> |
| 223 | + </div> |
| 224 | +</div> |
| 225 | + |
| 226 | +<div id="modal3" class="modal"> |
| 227 | + <div class="modal-content"> |
| 228 | + <div class="modal-header"> |
| 229 | + <span class="close" onclick="closeModal('modal3')">×</span> |
| 230 | + OpenSearch Release Build and Integration Test Results |
| 231 | + </div> |
| 232 | + <div class="modal-body"> |
| 233 | + <iframe id="modal3-iframe" width="100%" height="100%"></iframe> |
| 234 | + </div> |
| 235 | + </div> |
| 236 | +</div> |
| 237 | + |
| 238 | +<script> |
| 239 | + const versions = { |
| 240 | + {% for version in page.release_versions %} |
| 241 | + "{{ version.version }}": { |
| 242 | + releaseIssue: {{ version.release_issue }}, |
| 243 | + releaseRetroIssue: {{ version.release_retro_issue }} |
| 244 | + }, |
| 245 | + {% endfor %} |
| 246 | + }; |
| 247 | + |
| 248 | + let currentSelection = "{{ page.release_versions[0].version }}"; |
| 249 | + |
| 250 | + function updateDashboard(selectedVersion) { |
| 251 | + const versionData = versions[selectedVersion]; |
| 252 | + |
| 253 | + if (selectedVersion) { |
| 254 | + document.getElementById('release-issue').innerHTML = `The current release issue for ${selectedVersion} is <a href="https://github.com/opensearch-project/opensearch-build/issues/${versionData.releaseIssue}" style="color: #007bff; text-decoration: none;">#${versionData.releaseIssue}</a> and the release retro issue is <a href="https://github.com/opensearch-project/opensearch-build/issues/${versionData.releaseRetroIssue}" style="color: #007bff; text-decoration: none;">#${versionData.releaseRetroIssue}</a>. Please follow the release issue for updates posted by the release manager.`; |
| 255 | + |
| 256 | + const baseUrl = 'https://metrics.opensearch.org/_dashboards/app/dashboards?security_tenant=global#'; |
| 257 | + const metricsUrl = `${baseUrl}/view/12d47dd0-e0cc-11ee-86f3-3358a59f8c46?embed=true&_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-90d,to:now))&_a=(description:'',filters:!(('$state':(store:appState),meta:(alias:!n,controlledBy:'1710287534575',disabled:!f,index:'512c9c70-e0b3-11ee-9a74-07cd3b4ff414',key:version.keyword,negate:!f,params:(query:'${selectedVersion}'),type:phrase),query:(match_phrase:(version.keyword:'${selectedVersion}')))),fullScreenMode:!f,options:(hidePanelTitles:!f,useMargins:!t),query:(language:kuery,query:''),timeRestore:!t,title:'OpenSearch%20Release%20Metrics',viewMode:view)&show-top-menu=true&show-query-input=true&show-time-filter=true`; |
| 258 | + |
| 259 | + const testResultsUrl = `${baseUrl}/view/21aad140-49f6-11ef-bbdd-39a9b324a5aa?embed=true&_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-30d,to:now))&_a=(description:'OpenSearch%20Release%20Build%20and%20Integration%20Test%20Results',filters:!(('$state':(store:appState),meta:(alias:!n,controlledBy:'1721852613904',disabled:!f,index:'16f55f10-4977-11ef-8565-15a1562cd0a0',key:version,negate:!f,params:(query:'${selectedVersion}'),type:phrase),query:(match_phrase:(version:'${selectedVersion}')))),fullScreenMode:!f,options:(hidePanelTitles:!f,useMargins:!t),query:(language:kuery,query:''),timeRestore:!t,title:'OpenSearch%20Release%20Build%20and%20Integration%20Test%20Results',viewMode:view)&show-top-menu=true&show-query-input=true&show-time-filter=true`; |
| 260 | + |
| 261 | + const componentMetricsUrl = `${baseUrl}/view/be62b350-6b06-11ef-8d6b-d50babf51bc6?embed=true&_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now%2Fd,to:now%2Fd))&_a=(description:'',filters:!(('$state':(store:appState),meta:(alias:!n,controlledBy:'1725485220320',disabled:!f,index:'512c9c70-e0b3-11ee-9a74-07cd3b4ff414',key:version.keyword,negate:!f,params:(query:'${selectedVersion}'),type:phrase),query:(match_phrase:(version.keyword:'${selectedVersion}')))),fullScreenMode:!f,options:(hidePanelTitles:!f,useMargins:!t),query:(language:kuery,query:''),timeRestore:!t,title:'OpenSearch%20Component%20Release%20Metrics',viewMode:view)&show-top-menu=true&show-query-input=true&show-time-filter=true`; |
| 262 | + |
| 263 | + document.getElementById('metrics-iframe').src = metricsUrl; |
| 264 | + document.getElementById('test-results-iframe').src = testResultsUrl; |
| 265 | + document.getElementById('component-metrics-iframe').src = componentMetricsUrl; |
| 266 | + document.getElementById('metrics-dashboard-link').href = metricsUrl; |
| 267 | + document.getElementById('test-results-dashboard-link').href = testResultsUrl; |
| 268 | + document.getElementById('component-metrics-dashboard-link').href = componentMetricsUrl; |
| 269 | + document.getElementById('modal1-iframe').src = metricsUrl; |
| 270 | + document.getElementById('modal2-iframe').src = componentMetricsUrl; |
| 271 | + document.getElementById('modal3-iframe').src = testResultsUrl; |
| 272 | + } else { |
| 273 | + document.getElementById('release-issue').innerHTML = ''; |
| 274 | + document.getElementById('release-retro-issue').innerHTML = ''; |
| 275 | + const baseUrl = 'https://metrics.opensearch.org/_dashboards/app/dashboards?security_tenant=global#'; |
| 276 | + const defaultMetricsUrl = `${baseUrl}/view/12d47dd0-e0cc-11ee-86f3-3358a59f8c46?embed=true&_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-90d,to:now))&_a=(description:'',filters:!(),fullScreenMode:!f,options:(hidePanelTitles:!f,useMargins:!t),query:(language:kuery,query:''),timeRestore:!t,title:'OpenSearch%20Release%20Metrics',viewMode:view)&show-top-menu=true&show-query-input=true&show-time-filter=true`; |
| 277 | + |
| 278 | + const defaultTestResultsUrl = `${baseUrl}/view/21aad140-49f6-11ef-bbdd-39a9b324a5aa?embed=true&_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now-30d,to:now))&_a=(description:'OpenSearch%20Release%20Build%20and%20Integration%20Test%20Results',filters:!(),fullScreenMode:!f,options:(hidePanelTitles:!f,useMargins:!t),query:(language:kuery,query:''),timeRestore:!t,title:'OpenSearch%20Release%20Build%20and%20Integration%20Test%20Results',viewMode:view)&show-top-menu=true&show-query-input=true&show-time-filter=true`; |
| 279 | + |
| 280 | + const defaultComponentMetricsUrl = `${baseUrl}/view/be62b350-6b06-11ef-8d6b-d50babf51bc6?embed=true&_g=(filters:!(),refreshInterval:(pause:!t,value:0),time:(from:now%2Fd,to:now%2Fd))&_a=(description:'',filters:!(),fullScreenMode:!f,options:(hidePanelTitles:!f,useMargins:!t),query:(language:kuery,query:''),timeRestore:!t,title:'OpenSearch%20Component%20Release%20Metrics',viewMode:view)&show-top-menu=true&show-query-input=true&show-time-filter=true`; |
| 281 | + |
| 282 | + document.getElementById('metrics-iframe').src = defaultMetricsUrl; |
| 283 | + document.getElementById('test-results-iframe').src = defaultTestResultsUrl; |
| 284 | + document.getElementById('component-metrics-iframe').src = defaultComponentMetricsUrl; |
| 285 | + document.getElementById('metrics-dashboard-link').href = defaultMetricsUrl; |
| 286 | + document.getElementById('test-results-dashboard-link').href = defaultTestResultsUrl; |
| 287 | + document.getElementById('component-metrics-dashboard-link').href = defaultComponentMetricsUrl; |
| 288 | + document.getElementById('modal1-iframe').src = defaultMetricsUrl; |
| 289 | + document.getElementById('modal2-iframe').src = defaultComponentMetricsUrl; |
| 290 | + document.getElementById('modal3-iframe').src = defaultTestResultsUrl; |
| 291 | + } |
| 292 | + } |
| 293 | + document.addEventListener('DOMContentLoaded', function () { |
| 294 | + const defaultVersion = "{{ page.release_versions[0].version }}"; |
| 295 | + document.querySelector(`.version-item[data-version="${defaultVersion}"]`).classList.add('selected'); |
| 296 | + updateDashboard(defaultVersion); |
| 297 | + }); |
| 298 | + document.getElementById('version-selector').addEventListener('click', function (event) { |
| 299 | + const selectedElement = event.target; |
| 300 | + if (selectedElement.classList.contains('version-item')) { |
| 301 | + const selectedVersion = selectedElement.getAttribute('data-version'); |
| 302 | + |
| 303 | + if (currentSelection === selectedVersion) { |
| 304 | + selectedElement.classList.remove('selected'); |
| 305 | + currentSelection = ''; |
| 306 | + updateDashboard(''); |
| 307 | + } else { |
| 308 | + if (currentSelection) { |
| 309 | + document.querySelector(`.version-item[data-version="${currentSelection}"]`).classList.remove('selected'); |
| 310 | + } |
| 311 | + selectedElement.classList.add('selected'); |
| 312 | + currentSelection = selectedVersion; |
| 313 | + updateDashboard(selectedVersion); |
| 314 | + } |
| 315 | + } |
| 316 | + }); |
| 317 | +</script> |
| 318 | + |
| 319 | +<script> |
| 320 | + function openModal(modalId) { |
| 321 | + document.getElementById(modalId).style.display = "flex"; |
| 322 | + } |
| 323 | + function closeModal(modalId) { |
| 324 | + document.getElementById(modalId).style.display = "none"; |
| 325 | + } |
| 326 | +</script> |
| 327 | + |
| 328 | +<h2>Join the discussion</h2> |
| 329 | +<p> |
| 330 | + Questions or contributions? Connect with the OpenSearch community in the <a href="https://opensearch.slack.com/archives/C0561HRK961">#releases</a> channel on our public Slack. |
| 331 | +</p> |
| 332 | + |
| 333 | +<p> |
| 334 | + To learn more about OpenSearch Release Process, please read this <a href="https://github.com/opensearch-project/opensearch-build/wiki/Releasing-the-Distribution">wiki document</a> part of the opensearch-build repo. |
| 335 | +</p> |
0 commit comments