cortexapps-cli 1.35.0__tar.gz → 1.36.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/PKG-INFO +1 -1
  2. cortexapps_cli-1.36.0/cortexapps_cli/solutions/jenkins-deploy/README.md +129 -0
  3. cortexapps_cli-1.36.0/cortexapps_cli/solutions/jenkins-deploy/_templates/Jenkinsfile +82 -0
  4. cortexapps_cli-1.36.0/cortexapps_cli/solutions/jenkins-deploy/_templates/trigger-jenkins-deploy.yaml +126 -0
  5. cortexapps_cli-1.36.0/cortexapps_cli/solutions/jenkins-deploy/catalog/jenkins-demo.yaml +13 -0
  6. cortexapps_cli-1.36.0/cortexapps_cli/solutions/jenkins-deploy/scorecards/deploy-health.yaml +51 -0
  7. cortexapps_cli-1.36.0/cortexapps_cli/solutions/jenkins-deploy/setup.py +791 -0
  8. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/pyproject.toml +1 -1
  9. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/LICENSE +0 -0
  10. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/README.rst +0 -0
  11. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/__init__.py +0 -0
  12. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/cli.py +0 -0
  13. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/command_options.py +0 -0
  14. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/ai_skills.py +0 -0
  15. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/api_keys.py +0 -0
  16. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/audit_logs.py +0 -0
  17. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/backup.py +0 -0
  18. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/backup_commands/cortex_export.py +0 -0
  19. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/catalog.py +0 -0
  20. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/custom_data.py +0 -0
  21. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/custom_events.py +0 -0
  22. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/custom_metrics.py +0 -0
  23. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/dependencies.py +0 -0
  24. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/deploys.py +0 -0
  25. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/discovery_audit.py +0 -0
  26. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/docs.py +0 -0
  27. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/entity_relationship_types.py +0 -0
  28. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/entity_relationships.py +0 -0
  29. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/entity_types.py +0 -0
  30. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/gitops_logs.py +0 -0
  31. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/groups.py +0 -0
  32. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/initiatives.py +0 -0
  33. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations.py +0 -0
  34. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/apiiro.py +0 -0
  35. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/argocd.py +0 -0
  36. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/aws.py +0 -0
  37. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/azure_active_directory.py +0 -0
  38. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/azure_devops.py +0 -0
  39. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/azure_resources.py +0 -0
  40. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/bamboohr.py +0 -0
  41. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/bitbucket.py +0 -0
  42. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/bugsnag.py +0 -0
  43. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/buildkite.py +0 -0
  44. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/checkmarx_sast.py +0 -0
  45. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/circleci.py +0 -0
  46. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/clickup.py +0 -0
  47. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/codecov.py +0 -0
  48. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/coralogix.py +0 -0
  49. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/datadog.py +0 -0
  50. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/dynatrace.py +0 -0
  51. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/firehydrant.py +0 -0
  52. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/github.py +0 -0
  53. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/gitlab.py +0 -0
  54. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/harness.py +0 -0
  55. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/incidentio.py +0 -0
  56. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/instana.py +0 -0
  57. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/jenkins.py +0 -0
  58. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/jira.py +0 -0
  59. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/launchdarkly.py +0 -0
  60. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/mend_sast.py +0 -0
  61. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/mend_sca.py +0 -0
  62. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/newrelic.py +0 -0
  63. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/okta.py +0 -0
  64. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/opsgenie.py +0 -0
  65. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/pagerduty.py +0 -0
  66. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/prometheus.py +0 -0
  67. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/rollbar.py +0 -0
  68. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/rootly.py +0 -0
  69. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/semgrep.py +0 -0
  70. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/sentry.py +0 -0
  71. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/servicenow.py +0 -0
  72. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/servicenow_cloud_observability.py +0 -0
  73. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/snyk.py +0 -0
  74. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/sonarqube.py +0 -0
  75. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/splunk_observability_cloud.py +0 -0
  76. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/splunk_on_call.py +0 -0
  77. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/sumologic.py +0 -0
  78. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/veracode.py +0 -0
  79. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/wiz.py +0 -0
  80. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/workday.py +0 -0
  81. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/integrations_commands/xmatters.py +0 -0
  82. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/ip_allowlist.py +0 -0
  83. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/on_call.py +0 -0
  84. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/packages.py +0 -0
  85. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/packages_commands/go.py +0 -0
  86. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/packages_commands/java.py +0 -0
  87. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/packages_commands/node.py +0 -0
  88. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/packages_commands/nuget.py +0 -0
  89. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/packages_commands/python.py +0 -0
  90. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/plugins.py +0 -0
  91. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/queries.py +0 -0
  92. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/rest.py +0 -0
  93. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/scaffolders.py +0 -0
  94. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/scim.py +0 -0
  95. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/scorecards.py +0 -0
  96. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/scorecards_commands/exemptions.py +0 -0
  97. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/secrets.py +0 -0
  98. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/solutions.py +0 -0
  99. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/teams.py +0 -0
  100. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/users.py +0 -0
  101. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/users_commands/roles.py +0 -0
  102. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/commands/workflows.py +0 -0
  103. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/cortex_client.py +0 -0
  104. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/models/team.py +0 -0
  105. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/__init__.py +0 -0
  106. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/_lib/__init__.py +0 -0
  107. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/_lib/setup_base.py +0 -0
  108. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-agents/README.md +0 -0
  109. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-agents/catalog/address-reviews.yaml +0 -0
  110. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-agents/catalog/audit-flags.yaml +0 -0
  111. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-agents/catalog/code-review.yaml +0 -0
  112. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-agents/catalog/fix-issue.yaml +0 -0
  113. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-agents/catalog/incident-trends.yaml +0 -0
  114. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-agents/catalog/jira-to-kb.yaml +0 -0
  115. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-agents/catalog/release-to-sha.yaml +0 -0
  116. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-agents/catalog/search-troubleshooting-kb.yaml +0 -0
  117. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-agents/catalog/simplify-test.yaml +0 -0
  118. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-agents/entity-types/ai-agent.json +0 -0
  119. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-agents/scorecards/ai-agent-governance.yaml +0 -0
  120. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-skills/README.md +0 -0
  121. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-skills/catalog/api-doc-sync.yaml +0 -0
  122. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-skills/catalog/changelog-writer.yaml +0 -0
  123. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-skills/catalog/docs-generator.yaml +0 -0
  124. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-skills/catalog/docs-portal.yaml +0 -0
  125. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-skills/entity-relationship-types/ai-plugin-service.json +0 -0
  126. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-skills/entity-relationship-types/ai-plugin-skills.json +0 -0
  127. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-skills/entity-relationship-types/ai-skill-service.json +0 -0
  128. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-skills/entity-types/ai-plugin.json +0 -0
  129. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-skills/entity-types/ai-skill.json +0 -0
  130. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-skills/scorecards/ai-skills-quality.yaml +0 -0
  131. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-spend/.github/workflows/sync-claude-spend.yaml +0 -0
  132. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-spend/README.md +0 -0
  133. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-spend/catalog/employee-alice-chen.yaml +0 -0
  134. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-spend/catalog/employee-bob-martinez.yaml +0 -0
  135. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-spend/catalog/employee-carol-kim.yaml +0 -0
  136. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-spend/catalog/employee-david-osei.yaml +0 -0
  137. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-spend/catalog/employee-emma-johnson.yaml +0 -0
  138. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-spend/catalog/team-data.yaml +0 -0
  139. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-spend/catalog/team-engineering.yaml +0 -0
  140. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-spend/catalog/team-frontend.yaml +0 -0
  141. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-spend/catalog/team-platform.yaml +0 -0
  142. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-spend/custom-metrics/ai-spend.json +0 -0
  143. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-spend/entity-relationship-types/team-member.json +0 -0
  144. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-spend/entity-types/employee.json +0 -0
  145. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-spend/plugins/team-ai-spend.json +0 -0
  146. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-spend/scorecards/ai-spend-scorecard.yaml +0 -0
  147. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/ai-spend/scripts/sync-claude-spend.py +0 -0
  148. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/.github/workflows/cortex-service-version.yaml +0 -0
  149. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/README.md +0 -0
  150. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/api-gateway-3.0.1.yaml +0 -0
  151. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/api-gateway-3.1.0.yaml +0 -0
  152. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/api-gateway-3.1.1.yaml +0 -0
  153. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/api-gateway.yaml +0 -0
  154. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/auth-2.1.0.yaml +0 -0
  155. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/auth-2.1.1.yaml +0 -0
  156. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/auth-2.2.0.yaml +0 -0
  157. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/auth.yaml +0 -0
  158. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/aws-dev-us-west-2.yaml +0 -0
  159. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/billing-1.1.0.yaml +0 -0
  160. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/billing-1.2.0.yaml +0 -0
  161. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/billing.yaml +0 -0
  162. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/cart-1.0.2.yaml +0 -0
  163. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/cart.yaml +0 -0
  164. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/checkout-2.2.0.yaml +0 -0
  165. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/checkout-2.3.0.yaml +0 -0
  166. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/checkout-2.4.0.yaml +0 -0
  167. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/checkout.yaml +0 -0
  168. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/gcp-prod-us-east-1.yaml +0 -0
  169. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/gcp-prod-us-west-1.yaml +0 -0
  170. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/gcp-staging-us-east-1.yaml +0 -0
  171. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/notifications-1.0.0.yaml +0 -0
  172. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/notifications-1.0.1.yaml +0 -0
  173. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/notifications-1.1.0.yaml +0 -0
  174. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/notifications.yaml +0 -0
  175. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/order-service-2.0.1.yaml +0 -0
  176. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/order-service-2.1.0.yaml +0 -0
  177. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/order-service.yaml +0 -0
  178. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/payments-1.6.1.yaml +0 -0
  179. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/payments-1.7.0.yaml +0 -0
  180. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/payments-1.7.1.yaml +0 -0
  181. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/payments.yaml +0 -0
  182. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/release-2026-06-20.yaml +0 -0
  183. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/release-2026-07-01.yaml +0 -0
  184. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/release-2026-07-09.yaml +0 -0
  185. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/release-2026-07-10.yaml +0 -0
  186. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/search-4.0.0.yaml +0 -0
  187. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/search-4.1.0.yaml +0 -0
  188. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/search.yaml +0 -0
  189. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/user-service-1.2.0.yaml +0 -0
  190. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/user-service-1.3.0.yaml +0 -0
  191. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/catalog/user-service.yaml +0 -0
  192. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/entity-relationship-types/environments.json +0 -0
  193. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/entity-relationship-types/versions.json +0 -0
  194. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/entity-types/environment.json +0 -0
  195. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/entity-types/release.json +0 -0
  196. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/entity-types/service-version.json +0 -0
  197. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/workflows/create-environment.yaml +0 -0
  198. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/workflows/create-release.yaml +0 -0
  199. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/environments/workflows/trigger-github-release.yaml +0 -0
  200. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/github-actions-deploy/README.md +0 -0
  201. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/github-actions-deploy/_templates/cortex-async-callback.yml +0 -0
  202. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/github-actions-deploy/_templates/cortex-deploy.yml +0 -0
  203. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/github-actions-deploy/_templates/cortex-register-deploy.yml +0 -0
  204. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/github-actions-deploy/_templates/github-actions-deploy.yaml +0 -0
  205. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/github-actions-deploy/catalog/github-actions-demo.yaml +0 -0
  206. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/github-actions-deploy/scorecards/deploy-health.yaml +0 -0
  207. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/github-actions-deploy/setup.py +0 -0
  208. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/harness-deploy/README.md +0 -0
  209. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/harness-deploy/_templates/cortex-async-callback-template.yaml +0 -0
  210. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/harness-deploy/_templates/cortex-deploy-pipeline.yaml +0 -0
  211. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/harness-deploy/_templates/cortex-record-deploy-template.yaml +0 -0
  212. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/harness-deploy/_templates/trigger-harness-deploy.yaml +0 -0
  213. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/harness-deploy/catalog/harness-demo.yaml +0 -0
  214. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/harness-deploy/scorecards/deploy-health.yaml +0 -0
  215. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/harness-deploy/setup.py +0 -0
  216. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/workday/README.md +0 -0
  217. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/workday/data/configuration.json +0 -0
  218. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/workday/data/pied-piper-supervisory-org.json +0 -0
  219. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/solutions/workday/setup.py +0 -0
  220. {cortexapps_cli-1.35.0 → cortexapps_cli-1.36.0}/cortexapps_cli/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cortexapps-cli
3
- Version: 1.35.0
3
+ Version: 1.36.0
4
4
  Summary: Command Line Interface for cortexapps
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -0,0 +1,129 @@
1
+ ---
2
+ name: Jenkins Deploy Tracking
3
+ description: Track deployments from Jenkins pipelines in Cortex, with a deploy health scorecard measuring delivery cadence.
4
+ ---
5
+
6
+ # Jenkins Deploy Tracking
7
+
8
+ Trigger deploys from Cortex, track them as they run in Jenkins, and surface deploy health back in your service catalog.
9
+
10
+ ```
11
+ ┌─────────────────────────────────┐
12
+ │ Cortex Catalog │
13
+ │ │
14
+ │ jenkins-demo (service) │
15
+ │ ├── x-cortex-custom-metadata │
16
+ │ │ jenkins: │
17
+ │ │ url / job │
18
+ │ └── Scorecard: Deploy Health │
19
+ │ Bronze / Silver / Gold │
20
+ └──────────────┬──────────────────┘
21
+
22
+ │ Run workflow from entity page
23
+ │ (or: cortex workflows run -t
24
+ │ jenkins-trigger-deploy
25
+ │ --scope ENTITY --entity <tag>)
26
+
27
+ ┌─────────────────────────────────┐
28
+ │ Cortex Workflow │
29
+ │ Trigger Jenkins Deploy │
30
+ │ │
31
+ │ 1. Read Jenkins config from │
32
+ │ entity custom metadata │
33
+ │ 2. POST /buildWithParameters │
34
+ │ to Jenkins via HTTP │
35
+ │ 3. Pass callback URL as │
36
+ │ pipeline parameter │
37
+ │ 4. Wait for callback │
38
+ └──────────────┬──────────────────┘
39
+ │ POST /buildWithParameters (HTTP + Basic auth)
40
+
41
+ ┌─────────────────────────────────────────────────────────┐
42
+ │ GitHub Codespaces (optional — provisioned by setup) │
43
+ │ port 8080 exposed publicly for demo │
44
+ │ │
45
+ │ ┌─────────────────────────────────┐ │
46
+ │ │ Jenkins Pipeline │ │
47
+ │ │ cortex-deploy │ │
48
+ │ │ │ │
49
+ │ │ stage: Build │ │
50
+ │ │ └── run your deploy steps │ │
51
+ │ │ │ │
52
+ │ │ stage: Record Deploy in Cortex │ │
53
+ │ │ └── POST /deploys ◄────┼── registers deploy │
54
+ │ │ (entity: jenkins-demo) │ event on entity │
55
+ │ │ │ │
56
+ │ │ post { always } │ │
57
+ │ │ └── POST callbackUrl ───────►│ Cortex marks │
58
+ │ │ status: SUCCESS/FAILURE │ workflow done │
59
+ │ └─────────────────────────────────┘ │
60
+ └─────────────────────────────────────────────────────────┘
61
+ (or point to your own Jenkins instance — Codespaces not required)
62
+ ```
63
+
64
+ ## What's Included
65
+
66
+ - **Entity:** `jenkins-demo` service — a sample entity to receive deploy events
67
+ - **Scorecard:** Deploy Health — Bronze/Silver/Gold based on deploy frequency
68
+ - **Jenkinsfile:** `cortex-deploy` — a two-stage pipeline (Build → Record Deploy) with an async callback to Cortex; drop it into any existing Jenkins job
69
+ - **Cortex workflow:** `jenkins-trigger-deploy` — reads Jenkins coordinates from entity custom metadata, triggers the pipeline via HTTP, and waits for the result
70
+ - **Setup script:** Interactive wizard that wires everything together end-to-end; optionally provisions Jenkins in GitHub Codespaces for a zero-install demo
71
+
72
+ ## Quick Start
73
+
74
+ 1. Install the solution:
75
+
76
+ ```
77
+ cortex solutions install -s jenkins-deploy
78
+ ```
79
+
80
+ 2. Follow the post-install setup prompts, or run later:
81
+
82
+ ```
83
+ cortex solutions post-install -s jenkins-deploy
84
+ ```
85
+
86
+ ## How It Works
87
+
88
+ The Cortex workflow reads Jenkins coordinates from `x-cortex-custom-metadata.jenkins` on the entity, then triggers `cortex-deploy` via `buildWithParameters`, passing a `callback_url` as a pipeline parameter. Cortex waits asynchronously for the pipeline to report back.
89
+
90
+ Jenkins runs the build, then notifies Cortex twice on completion:
91
+ - **Deploy registration** (`POST /api/v1/catalog/{tag}/deploys`) — records the deploy event on the entity, feeding the Deploy Health scorecard
92
+ - **Workflow callback** — signals the Cortex workflow run as SUCCESS or FAILURE
93
+
94
+ ## After Installing
95
+
96
+ If you ran the post-install setup, you're already done — it created the Jenkins job, added credentials, wrote Jenkins coordinates to the entity's custom metadata, imported the Cortex workflow, and triggered a test deploy.
97
+
98
+ To roll the pattern out to your own services:
99
+
100
+ 1. Add the `cortex-deploy` **Jenkinsfile** stages to any existing Jenkins pipeline (needs only `CORTEX_API_KEY` and `CORTEX_BASE_URL` secret-text credentials)
101
+
102
+ 2. Add a `x-cortex-custom-metadata` block to your entity's catalog YAML with your Jenkins coordinates:
103
+
104
+ ```yaml
105
+ x-cortex-custom-metadata:
106
+ jenkins:
107
+ url: "https://jenkins.example.com"
108
+ job: "your-pipeline-name"
109
+ ```
110
+
111
+ 3. Create a **Cortex secret** with your Jenkins credentials:
112
+
113
+ ```bash
114
+ cortex secrets create -f - <<EOF
115
+ {
116
+ "name": "Jenkins Auth",
117
+ "tag": "jenkins_auth",
118
+ "secret": "$(echo -n 'your-username:your-api-token' | base64)"
119
+ }
120
+ EOF
121
+ ```
122
+
123
+ 4. Run the **Solution: Trigger Jenkins Deploy** workflow from the entity page — it reads the Jenkins coordinates from the entity's custom metadata automatically, with no manual inputs required
124
+
125
+ ## Customizing for Production
126
+
127
+ - Point the workflow at your real entity by replacing `jenkins-demo` with your service tag
128
+ - Add `CORTEX_API_KEY` and `CORTEX_BASE_URL` secret-text credentials to your real Jenkins instances
129
+ - The Deploy Health scorecard is scoped to `demo-jenkins-deploys` to avoid affecting your existing services. To roll it out broadly, remove the group filter from the scorecard. To opt in individual services, add the `demo-jenkins-deploys` group to them.
@@ -0,0 +1,82 @@
1
+ pipeline {
2
+ agent any
3
+ parameters {
4
+ string(name: 'callback_url', defaultValue: '', description: 'Cortex async callback URL')
5
+ string(name: 'cortex_entity_tag', defaultValue: '', description: 'Cortex entity tag')
6
+ }
7
+ environment {
8
+ CORTEX_API_KEY = credentials('CORTEX_API_KEY')
9
+ CORTEX_BASE_URL = credentials('CORTEX_BASE_URL')
10
+ }
11
+ stages {
12
+ stage('Build') {
13
+ steps {
14
+ echo 'Starting build...'
15
+ // Replace this echo with your actual build commands
16
+ }
17
+ }
18
+ stage('Deploy') {
19
+ steps {
20
+ script {
21
+ // Sends intermediate UPDATE callbacks to the Cortex workflow,
22
+ // demonstrating that the callback URL can be called multiple times
23
+ // before the terminal SUCCESS/FAILURE.
24
+ def callbackUrl = params.callback_url
25
+ def updates = [
26
+ [progress: 33, message: 'Build complete — starting deploy'],
27
+ [progress: 66, message: 'Deploy in progress'],
28
+ [progress: 100, message: 'Deploy complete — recording in Cortex'],
29
+ ]
30
+ updates.each { u ->
31
+ sleep 5
32
+ echo "Deploy progress: ${u.progress}%"
33
+ if (callbackUrl) {
34
+ def payload = """{"status":"UPDATE","message":"${u.message}","response":{"progress":"${u.progress}%"}}"""
35
+ sh """
36
+ curl -s -X POST '${callbackUrl}' \\
37
+ -H 'Content-Type: application/json' \\
38
+ -H "Authorization: Bearer \${CORTEX_API_KEY}" \\
39
+ -d '${payload}' || true
40
+ """
41
+ }
42
+ }
43
+ // Replace the placeholder loop above with your actual deploy commands
44
+ }
45
+ }
46
+ }
47
+ stage('Record Deploy in Cortex') {
48
+ steps {
49
+ script {
50
+ def timestamp = sh(script: 'date -u +%Y-%m-%dT%H:%M:%SZ', returnStdout: true).trim()
51
+ def buildUrl = env.BUILD_URL ?: "${env.JENKINS_URL}job/${env.JOB_NAME}/${env.BUILD_NUMBER}/"
52
+ def payload = """{"sha":"${env.BUILD_NUMBER}","timestamp":"${timestamp}","environment":"production","type":"DEPLOY","title":"Triggered by Jenkins","url":"${buildUrl}","deployer":{"name":"Jenkins"},"customData":{"buildNumber":"${env.BUILD_NUMBER}","jobName":"${env.JOB_NAME}"}}"""
53
+ sh """
54
+ curl -s -f -X POST \\
55
+ "\${CORTEX_BASE_URL}/api/v1/catalog/${params.cortex_entity_tag}/deploys" \\
56
+ -H "Authorization: Bearer \${CORTEX_API_KEY}" \\
57
+ -H "Content-Type: application/json" \\
58
+ -d '${payload}' || true
59
+ """
60
+ }
61
+ }
62
+ }
63
+ }
64
+ post {
65
+ always {
66
+ script {
67
+ if (params.callback_url) {
68
+ def status = currentBuild.currentResult == 'SUCCESS' ? 'SUCCESS' : 'FAILURE'
69
+ def buildUrl = env.BUILD_URL ?: "${env.JENKINS_URL}job/${env.JOB_NAME}/${env.BUILD_NUMBER}/"
70
+ def payload = """{"status":"${status}","message":"Jenkins pipeline ${status.toLowerCase()}","response":{"buildUrl":"${buildUrl}","buildNumber":"${env.BUILD_NUMBER}","jobName":"${env.JOB_NAME}"}}"""
71
+ def callbackUrl = params.callback_url
72
+ sh """
73
+ curl -s -f -X POST '${callbackUrl}' \\
74
+ -H 'Content-Type: application/json' \\
75
+ -H "Authorization: Bearer \${CORTEX_API_KEY}" \\
76
+ -d '${payload}'
77
+ """
78
+ }
79
+ }
80
+ }
81
+ }
82
+ }
@@ -0,0 +1,126 @@
1
+ name: "Solution: Trigger Jenkins Deploy"
2
+ tag: jenkins-trigger-deploy
3
+ description: |
4
+ Triggers a Jenkins pipeline and waits for it to report completion back to Cortex,
5
+ registering a deploy event on the target entity. No inputs required — Jenkins
6
+ coordinates (url, job) are read from the entity's custom metadata.
7
+ isDraft: false
8
+ isRunnableViaApi: true
9
+ filter:
10
+ type: ENTITY
11
+ variables:
12
+ - slug: jenkins-job
13
+ type: STRING
14
+ defaultValue: ""
15
+ runResponseTemplate: |
16
+ # Jenkins Deploy — Complete
17
+
18
+ **Job:** [{{variables.jenkins-job}}](JENKINS_BASE_URL/job/{{variables.jenkins-job}})
19
+
20
+ **Cortex Deploys:** [see deploys for {{context.entity.tag}}](https://app.getcortexapp.com/admin/resources?tag={{context.entity.tag}})
21
+
22
+ ---
23
+
24
+ ## How this workflow works
25
+
26
+ **1. Cortex read the entity's Jenkins configuration**
27
+
28
+ The workflow fetched `x-cortex-custom-metadata.jenkins` from this entity to find
29
+ the Jenkins URL and job name — no manual input required.
30
+
31
+ **2. Cortex triggered the Jenkins build**
32
+
33
+ It POSTed to the Jenkins `buildWithParameters` API with the callback URL and entity
34
+ tag in the POST body so Jenkins receives them as build parameters.
35
+
36
+ **3. Jenkins ran the pipeline**
37
+
38
+ The `cortex-deploy` pipeline runs three stages:
39
+
40
+ - **Build** — your build steps (replace `echo "Starting build..."` with your real commands)
41
+
42
+ - **Deploy** — your deploy steps, with intermediate `UPDATE` callbacks sent to Cortex
43
+ so you can track progress in real time; replace the placeholder loop with your real deploy
44
+
45
+ - **Record Deploy in Cortex** — POSTs a deploy event to `/api/v1/catalog/{tag}/deploys`,
46
+ recording build number, URL, and job name. This feeds the Deploy Health scorecard.
47
+
48
+ The `post { always { ... } }` block POSTs the final `SUCCESS` or `FAILURE` status to the
49
+ callback URL — which is how Cortex knows the workflow run is done.
50
+
51
+ **4. Cortex received the callback**
52
+
53
+ When Jenkins posted to the callback URL, Cortex marked this workflow run complete.
54
+
55
+ ---
56
+
57
+ ## Adapting this to your own pipelines
58
+
59
+ 1. Replace the placeholder `echo` in the **Build** stage and the progress loop in the
60
+ **Deploy** stage with your actual build and deploy commands
61
+
62
+ 2. Add the Deploy, Record Deploy, and callback steps to any existing Jenkinsfile — they
63
+ only need the `CORTEX_API_KEY` and `CORTEX_BASE_URL` credentials plus the two build
64
+ parameters
65
+
66
+ 3. Add `x-cortex-custom-metadata.jenkins` to your entity's catalog YAML with
67
+ `url` and `job` fields — no credentials here. If your Jenkins requires auth,
68
+ create a Cortex secret `jenkins_auth = base64(user:token)` and add
69
+ `Authorization: "Basic {{context.secrets.jenkins_auth}}"` to the workflow's
70
+ Trigger Jenkins Build action.
71
+ actions:
72
+ - name: Get Jenkins config
73
+ slug: get-jenkins-config
74
+ schema:
75
+ type: HTTP_REQUEST
76
+ httpMethod: GET
77
+ url: "https://api.getcortexapp.com/api/v1/catalog/{{context.entity.tag}}/custom-data/jenkins"
78
+ headers:
79
+ Authorization: "Bearer {{context.secrets.cortex_api_key}}"
80
+ Content-Type: application/json
81
+ integration: null
82
+ integrationAlias: null
83
+ outgoingActions:
84
+ - parse-jenkins-config
85
+ isRootAction: true
86
+ - name: Parse Jenkins config
87
+ slug: parse-jenkins-config
88
+ schema:
89
+ type: JQ
90
+ expression: |
91
+ .actions."get-jenkins-config".outputs.body.value as $j |
92
+ if ($j == null or $j.job == null) then
93
+ error("No Jenkins configuration found. Add x-cortex-custom-metadata.jenkins with url and job to this entity.")
94
+ else
95
+ { job: $j.job }
96
+ end
97
+ outgoingActions:
98
+ - set-variables
99
+ isRootAction: false
100
+ - name: Set variables
101
+ slug: set-variables
102
+ schema:
103
+ type: SET_VARIABLES
104
+ variables:
105
+ - slug: jenkins-job
106
+ source:
107
+ path: actions.parse-jenkins-config.outputs.result.job
108
+ type: REFERENCE
109
+ outgoingActions:
110
+ - trigger-deploy
111
+ isRootAction: false
112
+ - name: Trigger Jenkins Build
113
+ slug: trigger-deploy
114
+ schema:
115
+ type: HTTP_REQUEST_ASYNC
116
+ httpMethod: POST
117
+ url: "JENKINS_BASE_URL/job/{{variables.jenkins-job}}/buildWithParameters"
118
+ integration: null
119
+ integrationAlias: null
120
+ headers:
121
+ Content-Type: application/x-www-form-urlencoded
122
+ Authorization: "Basic {{{context.secrets.jenkins_auth}}}"
123
+ payload: "callback_url={{{callbackUrl}}}&cortex_entity_tag={{context.entity.tag}}"
124
+ timeoutInSeconds: 60
125
+ outgoingActions: []
126
+ isRootAction: false
@@ -0,0 +1,13 @@
1
+ openapi: "3.0.0"
2
+ info:
3
+ title: Jenkins Demo
4
+ x-cortex-tag: jenkins-demo
5
+ x-cortex-type: service
6
+ x-cortex-description: Sample service for demonstrating deploy tracking via Jenkins pipelines.
7
+ x-cortex-definition: {}
8
+ x-cortex-groups:
9
+ - demo-jenkins-deploys
10
+ x-cortex-custom-metadata:
11
+ jenkins:
12
+ url: PLACEHOLDER_JENKINS_URL
13
+ job: cortex-deploy
@@ -0,0 +1,51 @@
1
+ tag: jenkins-deploy-health
2
+ name: Jenkins Deploy Health
3
+ description: Measures deployment cadence for services using Jenkins deploy tracking. Scoped to demo-jenkins-deploys group by default — remove the filter to apply to all services.
4
+ draft: false
5
+ notifications:
6
+ enabled: true
7
+ scoreDropNotificationsEnabled: true
8
+ exemptions:
9
+ enabled: true
10
+ autoApprove: false
11
+ evaluation:
12
+ window: 24
13
+ filter:
14
+ kind: GENERIC
15
+ types:
16
+ include:
17
+ - service
18
+ query: hasGroup("demo-jenkins-deploys")
19
+ ladder:
20
+ name: Default Ladder
21
+ levels:
22
+ - name: Bronze
23
+ rank: 1
24
+ description: Service has at least one recorded deployment in the last year.
25
+ color: "#CD7F32"
26
+ - name: Silver
27
+ rank: 2
28
+ description: Service has deployed within the last 30 days.
29
+ color: "#C0C0C0"
30
+ - name: Gold
31
+ rank: 3
32
+ description: Service has deployed within the last 7 days.
33
+ color: "#D7AC58"
34
+ rules:
35
+ - title: Has at least one deploy
36
+ description: At least one deployment has been recorded in the last year.
37
+ expression: deploys(lookback=duration("P1Y")).length > 0
38
+ weight: 1
39
+ level: Bronze
40
+
41
+ - title: Deployed in the last 30 days
42
+ description: A deployment was recorded within the past 30 days.
43
+ expression: deploys(lookback=duration("P30D")).length > 0
44
+ weight: 1
45
+ level: Silver
46
+
47
+ - title: Deployed in the last 7 days
48
+ description: A deployment was recorded within the past 7 days, indicating an active delivery cadence.
49
+ expression: deploys(lookback=duration("P7D")).length > 0
50
+ weight: 1
51
+ level: Gold