Merge branch 'main' into avm99963-monorail

Merged commit 3779da353b36d43cf778e7d4f468097714dd4540

GitOrigin-RevId: 6451a5c6b75afb0fd1f37b3f14521148d0722ea8
128 files changed
tree: 8ae2c3467f59d3fc5415e1793a4f581e56a52122
  1. api/
  2. businesslogic/
  3. doc/
  4. features/
  5. framework/
  6. google/
  7. project/
  8. proto/
  9. schema/
  10. search/
  11. services/
  12. sitewide/
  13. static/
  14. static_src/
  15. templates/
  16. testing/
  17. tools/
  18. tracker/
  19. .babelrc
  20. .coveragerc
  21. .eslintrc.json
  22. .expect_tests.cfg
  23. .expect_tests_pretest.py
  24. .gitignore
  25. .npmrc
  26. .prettierrc.json
  27. .style.yapf
  28. .testcoveragerc
  29. .vpython3
  30. app.yaml
  31. appengine_config.py
  32. codereview.settings
  33. cron.yaml
  34. dev-services.yml
  35. flaskregisterpages.py
  36. jsconfig.json
  37. karma.conf.js
  38. Makefile
  39. monorailapp.py
  40. OWNERS
  41. package-lock.json
  42. package.json
  43. PRESUBMIT.py
  44. queue.yaml
  45. README.md
  46. registerpages.py
  47. requirements.dev.txt
  48. requirements.py2.txt
  49. requirements.txt
  50. settings.py
  51. tsconfig.json
  52. webpack.config.js
README.md

Monorail Issue Tracker - bugs.avm99963.com

This repo is a fork of the open-source Monorail issue tracker designed to run at bugs.avm99963.com. I've made the code public so it can inspire other developers to host relatively cheap Monorail instances.

Monorail development should generally be contributed upstream, this repo will only accept changes specific to small and relatively cheap instances.

The original README.md file is here below (slightly modified where applicable):


Monorail Issue Tracker

Monorail is the Issue Tracker used by the Chromium project and other related projects. It is hosted at bugs.chromium.org.

If you wish to file a bug against Monorail itself, please do so in our self-hosting tracker. We also discuss development of Monorail at infra-dev@chromium.org.

Getting started with Monorail development

For Googlers: Monorail's codebase is open source and can be installed locally on your workstation of choice.

For local development on Linux, see Linux development instructions

Instructions for deploying Monorail to an existing instance or setting up a new instance are here.

See also: Common Development Problems

Feature Launch Tracking

To set up FLT/Approvals in Monorail:

  1. Visit the gear > Development Process > Labels and fields
  2. Add at least one custom field with type "Approval" (this will be your approval
  3. Visit gear > Development Process > Templates
  4. Check "Include Gates and Approval Tasks in issue"
  5. Fill out the chart - The top row is the gates/phases on your FLT issue and you can select radio buttons for which gate each approval goes

Testing

To run all Python unit tests, in the appengine/monorail directory run:

make test

For quick debugging, if you need to run just one test you can do the following. For instance for the test IssueServiceTest.testUpdateIssues_Normal in services/test/issue_svc_test.py:

../../test.py test appengine/monorail:services.test.issue_svc_test.IssueServiceTest.testUpdateIssues_Normal --no-coverage

Frontend testing

To run the frontend tests for Monorail, you first need to set up your Go environment. From the Monorail directory, run:

eval `../../go/env.py`

Then, to run the frontend tests, run:

make karma

If you want to skip the coverage for karma, run:

make karma_debug

To run only one test or a subset of tests, you can add .only to the test function you want to isolate:

// Run one test.
it.only(() => {
  ...
});

// Run a subset of tests.
describe.only(() => {
  ...
});

Just remember to remove them before you upload your CL.

Development resources

Supported browsers

Monorail supports all browsers defined in the Chrome Ops guidelines.

File a browser compatability bug here.

Frontend code practices

See: Monorail Frontend Code Practices

Monorail's design

Triage process

See: Monorail Triage Guide.

Release process

See: Monorail Deployment

User guide

For information on how to use Monorail, see the Monorail User Guide.

Setting up a new instance of Monorail

See: Creating a new Monorail instance