# What this PR does more adjustments to IRM monorepo ## Which issue(s) this PR closes Related to https://github.com/grafana/irm/issues/11 <!-- *Note*: If you want the issue to be auto-closed once the PR is merged, change "Related to" to "Closes" in the line above. If you have more than one GitHub issue that this PR closes, be sure to preface each issue link with a [closing keyword](https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/using-keywords-in-issues-and-pull-requests#linking-a-pull-request-to-an-issue). This ensures that the issue(s) are auto-closed once the PR has been merged. --> ## Checklist - [ ] Unit, integration, and e2e (if applicable) tests updated - [x] Documentation added (or `pr:no public docs` PR label added if not required) - [x] Added the relevant release notes label (see labels prefixed w/ `release:`). These labels dictate how your PR will show up in the autogenerated release notes.
141 lines
4.9 KiB
Text
141 lines
4.9 KiB
Text
load('ext://uibutton', 'cmd_button', 'location', 'text_input', 'bool_input')
|
|
load("ext://configmap", "configmap_create")
|
|
|
|
grafana_url = os.getenv("GRAFANA_URL", "http://grafana:3000")
|
|
running_under_parent_tiltfile = os.getenv("TILT_PARENT", "false") == "true"
|
|
twilio_values=[
|
|
"oncall.twilio.accountSid=" + os.getenv("TWILIO_ACCOUNT_SID", ""),
|
|
"oncall.twilio.authToken=" + os.getenv("TWILIO_AUTH_TOKEN", ""),
|
|
"oncall.twilio.phoneNumber=" + os.getenv("TWILIO_PHONE_NUMBER", ""),
|
|
"oncall.twilio.verifySid=" + os.getenv("TWILIO_VERIFY_SID", ""),
|
|
]
|
|
is_ci=config.tilt_subcommand == "ci"
|
|
# HELM_PREFIX must be "oncall-dev" as it is hardcoded in dev/helm-local.yml
|
|
HELM_PREFIX = "oncall-dev"
|
|
# Use docker registery generated by ctlptl (dev/kind-config.yaml)
|
|
DOCKER_REGISTRY = "localhost:63628/"
|
|
|
|
load("ext://docker_build_sub", "docker_build_sub")
|
|
|
|
def get_profiles():
|
|
profiles = os.getenv('ONCALL_PROFILES', 'grafana,plugin,backend,tests')
|
|
return profiles.split(',')
|
|
profiles = get_profiles()
|
|
|
|
# Tell ops-devenv/Tiltifle where our plugin.json file lives
|
|
plugin_file = os.path.abspath("grafana-plugin/src/plugin.json")
|
|
|
|
def plugin_json():
|
|
if 'plugin' in profiles:
|
|
return plugin_file
|
|
return 'NOT_A_PLUGIN'
|
|
|
|
def extra_env():
|
|
return {
|
|
"GF_APP_URL": grafana_url,
|
|
"GF_SERVER_ROOT_URL": grafana_url,
|
|
"GF_FEATURE_TOGGLES_ENABLE": "externalServiceAccounts",
|
|
"ONCALL_API_URL": "http://oncall-dev-engine:8080"
|
|
}
|
|
|
|
|
|
allow_k8s_contexts(["kind-kind"])
|
|
|
|
# Build the image including frontend folder for pytest
|
|
docker_build_sub(
|
|
"localhost:63628/oncall/engine:dev",
|
|
context="./engine",
|
|
cache_from=["grafana/oncall:latest", "grafana/oncall:dev"],
|
|
ignore=["./test-results/", "./grafana-plugin/dist/", "./grafana-plugin/e2e-tests/", "./grafana-plugin/node_modules/"],
|
|
child_context=".",
|
|
target="dev",
|
|
extra_cmds=["ADD ./grafana-plugin/src/plugin.json /etc/grafana-plugin/src/plugin.json"],
|
|
live_update=[
|
|
sync("./engine/", "/etc/app"),
|
|
run(
|
|
"cd /etc/app && pip install pip-tools && pip-sync",
|
|
trigger="./engine/requirements.txt",
|
|
),
|
|
],
|
|
)
|
|
|
|
|
|
def load_oncall_helm():
|
|
helm_oncall_values = ["./dev/helm-local.yml"]
|
|
helm_oncall_values += ["./.github/helm-ci.yml"] if is_ci else ["./dev/helm-local.dev.yml"]
|
|
yaml = helm("helm/oncall", name=HELM_PREFIX, values=helm_oncall_values, set=twilio_values, namespace="default")
|
|
k8s_yaml(yaml)
|
|
|
|
# --- GRAFANA START ----
|
|
|
|
# Generate and load the grafana deploy yaml
|
|
configmap_create(
|
|
"grafana-oncall-app-provisioning",
|
|
namespace="default",
|
|
from_file="dev/grafana/provisioning/plugins/grafana-oncall-app-provisioning.yaml",
|
|
)
|
|
|
|
if not running_under_parent_tiltfile:
|
|
# Load the custom Grafana extensions
|
|
v1alpha1.extension_repo(
|
|
name="grafana-tilt-extensions",
|
|
ref="v1.4.2",
|
|
url="https://github.com/grafana/tilt-extensions",
|
|
)
|
|
v1alpha1.extension(
|
|
name="grafana", repo_name="grafana-tilt-extensions", repo_path="grafana"
|
|
)
|
|
load("ext://grafana", "grafana")
|
|
|
|
def load_grafana():
|
|
# The user/pass that you will login to Grafana with
|
|
grafana_admin_user_pass = os.getenv("GRAFANA_ADMIN_USER_PASS", "oncall")
|
|
grafana_version = os.getenv("GRAFANA_VERSION", "latest")
|
|
|
|
if 'plugin' in profiles:
|
|
k8s_resource(
|
|
objects=["grafana-oncall-app-provisioning:configmap"],
|
|
new_name="grafana-oncall-app-provisioning-configmap",
|
|
resource_deps=["build-ui"],
|
|
labels=["Grafana"],
|
|
)
|
|
|
|
# Use separate grafana helm chart
|
|
if not running_under_parent_tiltfile:
|
|
grafana(
|
|
grafana_version=grafana_version,
|
|
context="grafana-plugin",
|
|
plugin_files=["grafana-plugin/src/plugin.json"],
|
|
namespace="default",
|
|
deps=["grafana-oncall-app-provisioning-configmap", "build-ui", "build-oncall-plugin-backend"],
|
|
extra_env={
|
|
"GF_SECURITY_ADMIN_PASSWORD": "oncall",
|
|
"GF_SECURITY_ADMIN_USER": "oncall",
|
|
"GF_AUTH_ANONYMOUS_ENABLED": "false",
|
|
"GF_APP_URL": grafana_url, # older versions of grafana need this
|
|
"GF_SERVER_ROOT_URL": grafana_url,
|
|
"GF_FEATURE_TOGGLES_ENABLE": "externalServiceAccounts",
|
|
"ONCALL_API_URL": "http://oncall-dev-engine:8080"
|
|
},
|
|
)
|
|
# --- GRAFANA END ----
|
|
|
|
if 'grafana' in profiles:
|
|
load_grafana()
|
|
if 'plugin' in profiles:
|
|
include(".tilt/plugin/Tiltfile")
|
|
if 'backend' in profiles:
|
|
load_oncall_helm()
|
|
include(".tilt/backend/Tiltfile")
|
|
include(".tilt/deps/Tiltfile")
|
|
if 'tests' in profiles:
|
|
include(".tilt/tests/Tiltfile")
|
|
|
|
# name all tilt resources after the k8s object namespace + name
|
|
def resource_name(id):
|
|
# Remove variable date from job name
|
|
if id.name.startswith(HELM_PREFIX + "-engine-migrate"):
|
|
return "engine-migrate"
|
|
return id.name.replace(HELM_PREFIX + "-", "")
|
|
|
|
workload_to_resource_function(resource_name)
|