fixes FOO-1409
flag = none
no more client_apps, canvas_quizzes now lives as part of canvas-lms
proper inside app/jsx/, which makes the build leaner and leaves us with
one less thing to reason about
logical changes:
- converted from AMD to ES modules
- upgraded to recent react + react-router
- dropped RSVP in favor of native Promises
- used CanvasModal instead of home-grown Dialog
- removed dead code; notifications in particular were fishy as there had
no dependents at all and did not even show up in the graph
- ported tests to Jest, added more unit ones and two integration ones
- removed "config.onError" and now throws errors where appropriate
- disabled console statements in non-dev
:: test plan ::
- create a (old-school) quiz containing all types of questions
- as 3 distinct students, take the quiz and try to randomize your
answers
at this point it's helpful to have a reference to compare the screens; I
replicated the quiz on my production sandbox for this
- go to /courses/:id/quizzes/:id/submissions/:id/log
- verify it looks OK
- click on a specific question in the stream and verify the question
inspector widget works OK
- go back to stream and push "View table"
- verify the table and its controls are OK
- go to /courses/:id/quizzes/:id/statistics
- verify it looks OK
- click on ? in the discrimination index chart and verify it displays
a dialog with help content
- click on "X respondents" in one of the charts and verify it displays
a dialog with the respondent names
- verify the interactive charts do interact as expected (no logic
changed here so just a quick glance)
- link to "View in SpeedGrader" for essay-like questions works
Change-Id: I79af5ff4f1479503b5e2528b613255dde5bc45d3
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/256118
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Simon Williams <simon@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
Add timeout to all builds and set the proper values for the existing
timeouts
refs DE-307
flag = none
test-plan:
- Force the build to timeout and check that jenkins fails the build
Change-Id: I2e3ae36f828da1bc047bf5a2cfbc79c167b84d5f
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/256171
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Aaron Ogata <aogata@instructure.com>
QA-Review: Andrea Cirulli <andrea.cirulli@instructure.com>
Product-Review: Andrea Cirulli <andrea.cirulli@instructure.com>
refs DE-413
Some users want to be able to load the built JS image locally for debugging purposes. We have 3 JS jobs that run in parallel and they all build the image separately. Create a 4th JS job that only runs if this image is requested in order to only upload the image once.
[upload-js-debug-image]
Change-Id: Iaa63971dcdf7bbae0c201a5fd0c8ffc319873a22
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/254871
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: James Butters <jbutters@instructure.com>
QA-Review: Aaron Ogata <aogata@instructure.com>
Product-Review: Aaron Ogata <aogata@instructure.com>
we want to always checkout master code for testing on jenkins, unless
there are changes to our build scripts then pull the gerrit refspec.
flag = none
Test Plan:
- Normal Jenkins build passes.
- changes to docker-compose.new-jeknins* causes sub builds
to checkout code from gerrit refspec.
- changes to any file in build/new-jenkins/ causes sub
builds to checkout code from gerrit refspec.
- Normal build with no changes to Jenkinsfile*, build/new-jenkins/,
or docker-compose.new-jenkins* sub builds checkout master.
Change-Id: If1224a44b52b00f0f056b9552cd562809fc7eaa8
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/252999
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Aaron Ogata <aogata@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
refs DE-376
With the ruby-runner change that is coming, the final image will no longer include the node_modules/ assets, so we have to checkout the WEBPACK_BUILDER separately and copy in the source from the final PATCHSET_TAG.
Change-Id: Ic3c048500e00858bfa39244b308112cbc721783d
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/252666
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Kyle Rosenbaum <krosenbaum@instructure.com>
QA-Review: Aaron Ogata <aogata@instructure.com>
Product-Review: Aaron Ogata <aogata@instructure.com>
refs DE-376
With the ruby-runner change that is coming, the final image will no longer include the node_modules/ assets, so we have to checkout the WEBPACK_BUILDER separately and copy in the source from the final PATCHSET_TAG.
Change-Id: Ide3885f41d7ee21f4034331c204c2cafdc76aa28
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/252922
Reviewed-by: James Butters <jbutters@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Aaron Ogata <aogata@instructure.com>
Product-Review: Aaron Ogata <aogata@instructure.com>
refs DE-351
flag = none
test-plan:
- Build passes
- Test FSC is working
Change-Id: Id3844dd12600e5d3a80d267bf67916c4d43d2548
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/251743
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Andrea Cirulli <andrea.cirulli@instructure.com>
Reviewed-by: Aaron Ogata <aogata@instructure.com>
Product-Review: Andrea Cirulli <andrea.cirulli@instructure.com>
These changes need to be accompanied by changes
to Jenkins config:
- main-canvas-postgres-12-ruby-2.6 and
main-canvas-postgres-12-ruby-2.6-postmerge, SCM
refspec changed to master
- sub-builds scm changed from canvas-lms-refspec
to JENKINSFILE_REFSPEC defaulting to master
- add Jenkins parameter JENKINSFILE_REFSPEC to sub-builds
- add new Jenkins build for main Jenkinsfile changes
- main build don't trigger on Jenkinsfile changes using
forbidden path.
Testing once merged:
- verify builds without Jenkinfile changes pull the master
version of Jenkinsfile
- verify sub-builds as well
- verify gerrit with Jenkinsfile changes triggers new build
- verify sub-builds get Jenkinsfiles from gerrit not master
- test a combination of Jenkinsfiles, not just the main one
- verify main build is not triggered
- run a plugin build without canvas-lms-refspec
- run a plugin build with canvas-lms-refspec
Change-Id: Ic6be8b446f80d57f7b0f25c77e6cffb959e03236
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/251634
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
Reviewed-by: Aaron Ogata <aogata@instructure.com>
Reviewed-by: Ryan Norton <rnorton@instructure.com>
refs DE-349
[canvas-builds-refspec=f04c7902ccabadb61cee13fa93f09b1184925b84]
Test Plan:
1. Build pulls master when flag does not exist
2. Build pulls specified commit when flag exists
3. Build pulls master for post-merge when flag exists
Change-Id: I365efd3a305d08f7a3df76fd44799756104b4c1f
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/251635
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: James Butters <jbutters@instructure.com>
QA-Review: Aaron Ogata <aogata@instructure.com>
Product-Review: Aaron Ogata <aogata@instructure.com>
in some cases if the node removal happened after the code checks for a
node removal event the cleanup steps are executed and they can cause
extremely long running build. A fix to that is the introduction of a
timeout in the cleanup function.
refs DE-306
flag=none
test-plan:
- Canvas-lms build passess
Change-Id: Ia739bbdc1b72eac8ae7e95d5d36ebd698ce6d56e
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/249252
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Aaron Ogata <aogata@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
QA-Review: Andrea Cirulli <andrea.cirulli@instructure.com>
After upgrading to Ubuntu, Chrome takes up more memory than it does on Alpine, and the node becomes overloaded, resulting in timeouts. Reducing the coffeescript split to 1 node results in no timeouts after 40 test runs with no speed regression.
refs DE-260
Change-Id: I45efbfecb1a2fc25a7d89f91de925f2b6e84f25a
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/247622
Reviewed-by: Ryan Norton <rnorton@instructure.com>
Reviewed-by: James Butters <jbutters@instructure.com>
QA-Review: Aaron Ogata <aogata@instructure.com>
Product-Review: Aaron Ogata <aogata@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
refs DE-219
Test Plan:
Run the build several times and ensure the test count is consistent
Change-Id: Id773ef534efa4514543596fdc53bac565a5bd349
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/245762
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: James Butters <jbutters@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
QA-Review: Aaron Ogata <aogata@instructure.com>
seems to be a bug with jekins uploading bulk of junit xmls, iterating
through the xmls and uploading one by one gives an accurate junit
report.
closes: DE-171
flag = none
Test Plan:
-Compare mulitple test runs for consistent test count
Change-Id: I7fef862bfcce00e2f60458c6c8c3fbe713b3d39c
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/244199
Reviewed-by: Aaron Ogata <aogata@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
refs DE-128
Test Plan:
1. Ensure that the number of tests run per JS job is the same
2. Ensure that test reporting works correctly
Change-Id: I0e7f3d37627a7d13d108cf562d001bcf41e2ea8a
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/242560
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Ryan Norton <rnorton@instructure.com>
QA-Review: Aaron Ogata <aogata@instructure.com>
Product-Review: Aaron Ogata <aogata@instructure.com>
refs DE-123
Test Plan:
1. Ensure that the number of tests run per JS job is the same
2. Ensure that test reporting works correctly
flag = none
Change-Id: If25f6f4fe6af6d8982b5aed62c61c65b1d4daca9
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/242341
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Ryan Norton <rnorton@instructure.com>
QA-Review: Aaron Ogata <aogata@instructure.com>
Product-Review: Aaron Ogata <aogata@instructure.com>
Jest automatically parallelizes tests, and is causing the node to have too high of a load. Splitting this into its own job reduces our timeout failure rates significantly.
Test Plan:
1. Ensure JS test results are accurate
2. Ensure JS skips build execution if previously successful
refs DE-38
Change-Id: Iaabf83bac02427d2686ff407209b3496cf0ca485
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/242095
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: James Butters <jbutters@instructure.com>
Reviewed-by: Ryan Norton <rnorton@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: Aaron Ogata <aogata@instructure.com>
refs DE-25
Test Plan:
It’s hard to get Jenkins to intentionally fail with this error, but to test the retry logic we can use the following alternative:
1. Modify the shell script to look for “requested access to the resource is denied” or some easily reproducible error.
2. Run “./docker-with-flakey-network-protection.sh pull invalid_image”
3. Verify that the retry logic works correctly
4. Verify that the happy path works correctly
flag = none
Change-Id: I4ec53d639dbc8d25fff526792a02b8fe6861f564
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/241671
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Aaron Ogata <aogata@instructure.com>
Product-Review: Aaron Ogata <aogata@instructure.com>
Reviewed-by: James Butters <jbutters@instructure.com>
fixes: CCI-389
Test-Plan:
we need to run all the builds that we can for this:
- the current build needs to pass
- main-for-plugins needs to be ran
- master-bouncer
- dive?
- translations
Change-Id: Iae7f9dad7668b90653a0b9a8edc20ec69fa109c3
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/240345
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Ryan Norton <rnorton@instructure.com>
Reviewed-by: James Butters <jbutters@instructure.com>
Reviewed-by: Aaron Ogata <aogata@instructure.com>
Product-Review: Rex Fleischer <rfleischer@instructure.com>
using the option project-name with docker-compose allows
us to have all services separate for each group of tests.
test plan:
Jenkins passes all build
logs are copied out of containers for archiving/test reports
run with force-failure flag
flag = none
closes: CCI-341
Change-Id: I99820f64023dde17a1b75e76bcec2dfe84529e91
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/236029
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Derek Bender <djbender@instructure.com>
Reviewed-by: Jacob Powell <spowell@instructure.com>
Reviewed-by: Rex Fleischer <rfleischer@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
Closes: CCI-327
flag = none
Test plan:
- builds pass, there's no simple way to make these timeouts get
triggered but they're also dead simple.
Change-Id: I6ef1abcd8360ae84c7164ced4194f0f54d12667b
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/234307
Reviewed-by: James Butters <jbutters@instructure.com>
Reviewed-by: Rex Fleischer <rfleischer@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Derek Bender <djbender@instructure.com>
Product-Review: Derek Bender <djbender@instructure.com>
Filters keys ending in _KEY or _SECRET
Closes: CCI-202
flag = none
Test Plan:
- keys like GERGICH_KEY are no longer printed in the builds
Change-Id: I3c6b7cc882ba36b291dc44ac5fe9c958aa24cd60
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/224898
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jacob Powell <spowell@instructure.com>
Reviewed-by: James Butters <jbutters@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
note that deprecation aggregation should only
happen when running coverage because of memory.
fixes: CCI-190
flag = none
Test-Plan:
ensure that things get to sentry when running coverage
Change-Id: I8916cd050843c231161693b0e072687cf27120f3
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/223994
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Rex Fleischer <rfleischer@instructure.com>
Reviewed-by: Jacob Powell <spowell@instructure.com>
Reviewed-by: Derek Bender <djbender@instructure.com>
Product-Review: Rex Fleischer <rfleischer@instructure.com>
fixes: CCI-199
flag = none
test-plan:
run the build manually and ensure it publishes the coverage report
Change-Id: I7fac17a850edf5e748883aa9ddf565c6d1285b12
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/223834
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Derek Bender <djbender@instructure.com>
Reviewed-by: Jacob Powell <spowell@instructure.com>
Reviewed-by: James Butters <jbutters@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: Rex Fleischer <rfleischer@instructure.com>
This is a great canary for making sure we
report failures correctly,
when they happen.
test plan:
With the force-failure flag,
it should fail all JS stages
Otherwise, they pass like normal.
The flag sets the "FORCED_FAILURE"
environment variable to "true"
to fail the stages.
See
https://jenkins.inst-ci.net/blue/organizations/jenkins/Canvas%2Ftest-suites%2FJS/detail/JS/5269/pipeline
For an example of this flag being set.
fixes: CCI-188
flag = none
Change-Id: I32a51550d17140c6ed8c5423a31f98d7e71282bc
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/223294
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Rex Fleischer <rfleischer@instructure.com>
Reviewed-by: Robert Lamb <rlamb@instructure.com>
QA-Review: Jacob Powell <spowell@instructure.com>
Product-Review: Jacob Powell <spowell@instructure.com>
fixes: CCI-193
flag=none
Test-Plan:
make sure the builds work
Change-Id: Ia070f61061a3a859e33b8764cc6beda21e7ce37c
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/223500
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jacob Powell <spowell@instructure.com>
Reviewed-by: Robert Lamb <rlamb@instructure.com>
QA-Review: Rex Fleischer <rfleischer@instructure.com>
Product-Review: Rex Fleischer <rfleischer@instructure.com>
we were seaching the entire repo for any xml to publish,
this change tells it to only search the tmp directory
since that is where we are copying those xmls to publish.
flag = none
Change-Id: Id35d78c808853c68289a1e9bc80b055b0b204df2
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/223438
Reviewed-by: Ed Schiebel <eschiebel@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
[force-run-coverage]
fixes: CCI-112
flag = none
Test-Plan:
find the coverage is published at:
https://code-coverage.inseng.net/canvas-lms-js/coverage/
Change-Id: I43757aa7b137f2494822743e860f91194a8d0ce6
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/222083
Reviewed-by: Jacob Powell <spowell@instructure.com>
Reviewed-by: James Butters <jbutters@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Rex Fleischer <rfleischer@instructure.com>
Product-Review: Rex Fleischer <rfleischer@instructure.com>
test plan:
Any JS failures will show up in the tests tab
fixes: CCI-130
flag = none
Change-Id: I9822d0817e650cb6ea691d0d483d366449cce7d3
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/222332
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Rex Fleischer <rfleischer@instructure.com>
QA-Review: Jacob Powell <spowell@instructure.com>
Product-Review: Jacob Powell <spowell@instructure.com>
fixes: CCI-137
flag = none
Test-Plan:
make a change to the canvas quizzes app and see if the build
works as expected
Change-Id: Ib5350cf2dfa9118ec203233a6d3f617ae7cb6394
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/220755
Tested-by: Jenkins
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: S. Jacob Powell <spowell@instructure.com>
Reviewed-by: Derek Bender <djbender@instructure.com>
QA-Review: Rex Fleischer <rfleischer@instructure.com>
Product-Review: Rex Fleischer <rfleischer@instructure.com>
fixes: CCI-151
flag = none
Test-Plan:
make sure it runs through the pipeline correctly
Change-Id: Ib1b76010b8122dcb76d9f257a1f2d674f6afc2c1
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/220247
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Tested-by: Jenkins
Reviewed-by: James Butters <jbutters@instructure.com>
Reviewed-by: Robert Lamb <rlamb@instructure.com>
QA-Review: Rex Fleischer <rfleischer@instructure.com>
Product-Review: Rex Fleischer <rfleischer@instructure.com>
fixes: CCI-148
flag = none
Test-Plan:
look through the logs on each build and ensure the pre-clean runs
Change-Id: I1e10ab43deeb4dbcaa7b9c4f08ea3737675ebdf4
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/220000
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Tested-by: Jenkins
Reviewed-by: Robert Lamb <rlamb@instructure.com>
Reviewed-by: James Butters <jbutters@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: Rex Fleischer <rfleischer@instructure.com>
Test plan: Build still passes and runs all JS tests.
Change-Id: If5a379feaf0c67c59c83ab67d1db7b56ffdbf6c0
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/219113
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Tested-by: Jenkins
Reviewed-by: Rex Fleischer <rfleischer@instructure.com>
QA-Review: Robert Lamb <rlamb@instructure.com>
Product-Review: Robert Lamb <rlamb@instructure.com>
Fixes: CCI-120
Test plan: New Jenkins JS build passes
Change-Id: I772e1a2d2a30d62cfcb875d1c6c08e2177f9f311
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/218959
Tested-by: Jenkins
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: S. Jacob Powell <spowell@instructure.com>
Reviewed-by: Rex Fleischer <rfleischer@instructure.com>
QA-Review: Robert Lamb <rlamb@instructure.com>
Product-Review: Robert Lamb <rlamb@instructure.com>
fixes: CCI-120
test plan: Jenkins build passes and runs the JS test suite
Change-Id: If924af6c0eceece51f826c4cd337735d24081b1e
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/218463
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Tested-by: Jenkins
QA-Review: Robert Lamb <rlamb@instructure.com>
Product-Review: Robert Lamb <rlamb@instructure.com>
Reviewed-by: S. Jacob Powell <spowell@instructure.com>