| load("//golden/pages:all_gold_pages.bzl", "ALL_GOLD_PAGES") |
| load("//bazel:skia_app_container.bzl", "skia_app_container") |
| |
| skia_app_container( |
| name = "gold_frontend_container", |
| dirs = { |
| "/usr/local/bin": [ |
| [ |
| "//golden/cmd/gold_frontend:gold_frontend", |
| "0755", |
| ], |
| ], |
| "/usr/local/share/frontend/dist": [ |
| [ |
| "//golden/static:favicon.ico", |
| "0644", |
| ], |
| ] + [ |
| [ |
| "//golden/pages:production/%s.%s" % (page, ext), |
| "0644", |
| ] |
| for page in ALL_GOLD_PAGES |
| for ext in [ |
| "html", |
| "js", |
| "css", |
| ] |
| ], |
| }, |
| entrypoint = "/usr/local/bin/gold_frontend", |
| repository = "skia-public/gold-frontend", |
| ) |
| |
| skia_app_container( |
| name = "baseline_server_container", |
| dirs = { |
| "/usr/local/bin": [ |
| [ |
| "//golden/cmd/baseline_server:baseline_server", |
| "0755", |
| ], |
| ], |
| }, |
| entrypoint = "/usr/local/bin/baseline_server", |
| repository = "skia-public/gold-baseline-server", |
| ) |
| |
| skia_app_container( |
| name = "diffcalculator_container", |
| dirs = { |
| "/usr/local/bin": [ |
| [ |
| "//golden/cmd/diffcalculator:diffcalculator", |
| "0755", |
| ], |
| ], |
| }, |
| entrypoint = "/usr/local/bin/diffcalculator", |
| repository = "skia-public/gold-diffcalculator", |
| ) |
| |
| skia_app_container( |
| name = "gitilesfollower_container", |
| dirs = { |
| "/usr/local/bin": [ |
| [ |
| "//golden/cmd/gitilesfollower:gitilesfollower", |
| "0755", |
| ], |
| ], |
| }, |
| entrypoint = "/usr/local/bin/gitilesfollower", |
| repository = "skia-public/gold-gitilesfollower", |
| ) |
| |
| skia_app_container( |
| name = "gold_ingestion_container", |
| dirs = { |
| "/usr/local/bin": [ |
| [ |
| "//golden/cmd/gold_ingestion:gold_ingestion", |
| "0755", |
| ], |
| ], |
| }, |
| entrypoint = "/usr/local/bin/gold_ingestion", |
| repository = "skia-public/gold-ingestion", |
| ) |
| |
| skia_app_container( |
| name = "periodictasks_container", |
| dirs = { |
| "/usr/local/bin": [ |
| [ |
| "//golden/cmd/periodictasks:periodictasks", |
| "0755", |
| ], |
| ], |
| }, |
| entrypoint = "/usr/local/bin/periodictasks", |
| repository = "skia-public/gold-periodictasks", |
| ) |
| |
| gold_frontend_local_script = """ |
| if [[ -z "$$1" ]]; then |
| echo "Usage: bazel run //golden:gold_frontend_local -- /path/to/client_secret.json" |
| exit 1 |
| fi |
| |
| # Compute the path to the directory with web assets by extracting the parent directory of an |
| # arbitrary page. This works because all web assets are generated on the same directory (with the |
| # exception of the favicon, which we will handle later). |
| byblame_page_assets=($(rootpaths //golden/pages:byblame_prod)) # Expands to byblame.{html,js,css}. |
| web_assets_dir=$$(realpath $$(dirname $${byblame_page_assets[0]})) |
| |
| # Copy the favicon into the web assets directory. |
| cp $(rootpath //golden/static:favicon.ico) $$web_assets_dir |
| |
| # Based on //golden/k8s-instances/skia-infra/skia-infra-frontend.json5. |
| cat > config.json5 <<EOF |
| { |
| authorized_users: ["google.com"], |
| client_secret_file: "$$1", |
| disable_sql_exp_cl: true, |
| flaky_trace_threshold: 10, |
| frontend: { |
| baseRepoURL: "<inherited from git_repo_url>", |
| defaultCorpus: "infra", |
| title: "Skia Infra Gold", |
| }, |
| negatives_max_age: "4320h", // 180 days |
| positives_max_age: "720h", // 30 days |
| prom_port: ":20000", |
| ready_port: ":8000", |
| resources_path: "$$web_assets_dir", |
| tile_freshness: "1m", |
| trace_bt_table: "gold-skia-infra", |
| } |
| EOF |
| |
| # Based on //golden/k8s-instances/skia-infra/skia-infra.json5. |
| cat > common_instance_config.json5 <<EOF |
| { |
| local: true, |
| bt_instance: "production", |
| bt_project_id: "skia-public", |
| code_review_systems: [ |
| { |
| id: "gerrit", |
| flavor: "gerrit", |
| gerrit_url: "https://skia-review.googlesource.com", |
| url_template: "https://skia-review.googlesource.com/%s" |
| }, |
| ], |
| diff_work_topic: "gold-skia-infra-diffmetrics", // includes instance id |
| gcs_bucket: "skia-gold-skia-infra", |
| git_bt_table: "git-repos2", |
| git_repo_branch: "main", |
| git_repo_url: "https://skia.googlesource.com/buildbot.git", |
| fs_namespace: "skia-infra", |
| fs_project_id: "skia-firestore", |
| pubsub_project_id: "skia-public", |
| site_url: "https://skia-infra-gold.skia.org", |
| sql_connection: "root@localhost:26235", |
| sql_database: "skiainfra", |
| known_hashes_gcs_path: "skia-gold-skia-infra/hash_files/gold-skia-infra-hashes.txt", |
| window_size: 200, |
| } |
| EOF |
| |
| # Print out all commands from now on for debugging purposes. |
| set -ex |
| |
| # Switch to te skia-public GCP project. |
| gcloud container clusters get-credentials skia-public --zone us-central1-a --project skia-public |
| gcloud config set project skia-public |
| |
| # Port-forward the production CockroachDB instance to port 26235. The default CockroachDB port is |
| # 26234, so this prevents the forwarded port from clashing with a local running CockroachDB. |
| # |
| # This command will be killed on Ctrl+C. |
| kubectl port-forward gold-cockroachdb-0 26235:26234 & |
| sleep 5 |
| |
| # Ignore any local running emulators. |
| FIRESTORE_EMULATOR_HOST= |
| BIGTABLE_EMULATOR_HOST= |
| |
| # Launch the gold_frontend binary. |
| $(rootpath //golden/cmd/gold_frontend:gold_frontend) \ |
| --logtostderr \ |
| --config=config.json5 \ |
| --common_instance_config=common_instance_config.json5 |
| """ |
| |
| genrule( |
| name = "gold_frontend_local_script", |
| srcs = [ |
| "//golden/cmd/gold_frontend", |
| "//golden/static:favicon.ico", |
| ] + ["//golden/pages:%s_prod" % page for page in ALL_GOLD_PAGES], |
| outs = ["gold_frontend_local_script.sh"], |
| cmd = "echo '%s' > $@" % gold_frontend_local_script, |
| ) |
| |
| sh_binary( |
| name = "gold_frontend_local", |
| srcs = [":gold_frontend_local_script"], |
| data = [ |
| "//golden/cmd/gold_frontend", |
| "//golden/static:favicon.ico", |
| ] + ["//golden/pages:%s_prod" % page for page in ALL_GOLD_PAGES], |
| ) |