Commit Graph

106 Commits

Author SHA1 Message Date
James Butters 5298bf7b9a add selenium version to jenkinsfile.selenium.fsc
flag = none

Change-Id: Iefd519cd2eedf9ada5a7756ded47b5040df4d713
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/241546
Reviewed-by: Ryan Norton <rnorton@instructure.com>
Reviewed-by: Derek Bender <djbender@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>
2020-06-30 17:17:05 +00:00
Ethan Vizitei 96c6d38b1a auditors read path
refs CNVS-48876
flag = none

make all auditors pass
backend strategy from dynamic
settings

configure indexes in
event_streams with columns
on db tables to search by

use a bookmarked collection
to return results with a simple
paginator

TEST PLAN:
  1) use a dual-writing system for a while
  2) examine API or UI results from auditor
     endpoints
  3) enable reading from postgres
  4) API and UI results from auditor endpoints
     should be equivalent
     (and loaded via SQL queries)

Change-Id: If5b10736077b7721348ede323a34dd843d08c75f
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/236498
Reviewed-by: Simon Williams <simon@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Ethan Vizitei <evizitei@instructure.com>
Product-Review: Ethan Vizitei <evizitei@instructure.com>
2020-06-09 16:10:33 +00:00
James Butters f67efbf768 spec: upgrade the selenium-chrome docker version
Test Plan:
- all builds pass

flag = none

Change-Id: I51963ba964928d6c86270a178435930a3977fb35
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/237237
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Tested-by: James Butters <jbutters@instructure.com>
Reviewed-by: Jacob Powell <spowell@instructure.com>
Reviewed-by: Derek Bender <djbender@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
2020-05-14 02:32:38 +00:00
Rex Fleischer 8fc0a10688 add smoke test for using canvas-lms image as a consumer
fixes: CCI-309
flag = none

Test-Plan:
the build has to pass with the new smoke test stage and
the image should start on portal2

Change-Id: Id71846ed3aca5f6b260bd342c6ce2b2a56743b66
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/233716
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: 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>
2020-05-13 16:54:14 +00:00
Charley Kline e6a09c85c4 Fix database.yml
flag=none

Looks like there were a couple of typos in this file.

Test plan:
* looks good now?

Change-Id: I0c3c513b774a5b999f1b4086d5bf0b6383e894bb
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/235999
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Charley Kline <ckline@instructure.com>
QA-Review: Simon Williams <simon@instructure.com>
Product-Review: Charley Kline <ckline@instructure.com>
Product-Review: Simon Williams <simon@instructure.com>
Tested-by: Simon Williams <simon@instructure.com>
Tested-by: Charley Kline <ckline@instructure.com>
2020-05-01 20:37:14 +00:00
Derek Bender e1bf14466f Remove DATABASE_URL from docker dev envs
Fixes: CCI-347

This will allow connecting to the test environment again.
Copy over the updated config/docker-compose.override.yml (or delete the
relevant line from your existing docker-compose.override.yml). Also copy
over the restored and modified config/database.yml.example.

    $ cp -iv config/docker-compose.override.yml.example \
      docker-compose.override.yml
    $ cp -iv docker-compose/,}config/database.yml

If you have existing databases that don't match the naming scheme of
"canvas_<ENV>" then you'll need to do a custom configuration for your
database names in config/database.yml or rename your databases in
postgres.

Test Plan
- update your override config and database.yml:

    $ cp -iv config/docker-compose.override.yml.example \
      docker-compose.override.yml
    $ cp -iv {docker-compose/,}config/database.yml

- make sure your postgres image is up to date from earlier patchset
  (this will remove all your data):

    $ docker-compose down --volumes
    $ docker-compose build --no-cache postgres

- boot the app, bundle, and wait for postgres to be available (for
  internal start up scripts to run):

    $ docker-compose run --rm web bundle \
      && docker-compose run --rm web build/new-jenkins/wait-for-it \
      postgres:5432 -t 30

- test that connctions to both development and test databases work:
  - developement:

    $ docker-compose run --rm web bin/rails runner \
      'puts ActiveRecord::Base.connection.current_database'
    => 'canvas_development'

  - test:

    $ docker-compose run --rm -e RAILS_ENV=test web bin/rails runner \
      'puts ActiveRecord::Base.connection.current_database'
    => 'canvas_test'

- set a custom database name:

    $ docker-compose run --rm \
      -e RAILS_ENV=test \
      -e CANVAS_DATABASE_TEST=canvas_rails3_ \
      web bin/rails runner \
      'Rails.application.load_tasks; \
        Rake::Task["db:create"].invoke; \
        puts ActiveRecord::Base.connection.current_database'
    => 'canvas_rails3_'

flag = none

Change-Id: Ia19038586508dc91c6a4d4386d812752e00a4ad6
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/235642
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Rex Fleischer <rfleischer@instructure.com>
Reviewed-by: James Butters <jbutters@instructure.com>
Reviewed-by: Augusto Callejas <acallejas@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: Derek Bender <djbender@instructure.com>
2020-04-29 19:09:35 +00:00
Derek Bender 11c01f4b66 Configure databases in a unified manner
This patchset removes the much duplicated database.yml and instead
defaults to a DATABASE_URL scheme. There is however still present a
docker-compose/config/new-jenkins/database.yml file to temporarily allow
our internal portal service to still function until such time we can
reconfigure it.

To set up custom connection options all that is needed is setting
DATABASE_URL. See examples of this in docker-compose.yml and
docker-compose.new-jenkins.yml.

Test Plan
=========

Image:
- pulling canvas-lms:master image boots without database errors

Repo:
- given default dev environment where
  COMPOSE_FILE=docker-compose.yml:docker-compose.override.yml

- build the web and postgres images: docker-compose build web postgres
  (feel free to comment out `yarn install` and `compile_assets` in the
  Dockerfile since we won't be needing them for this test and this
  speeds things up)

- set a custom DATABASE_URL to change the database name and echo it to
  see it gets into the image correctly:

    $ docker run -it -e \
      DATABASE_URL=postgres://postgres:sekret@postgres/canvas_custom_env \
      $(docker-compose ps -q web) bash -c "echo \$DATABASE_URL"
    => postgres://postgres:sekret@postgres/canvas_custom_env

    $ docker-compose run --rm -e \
    DATABASE_URL=postgres://postgres:sekret@postgres/canvas_custom_env \
    web bash -c "echo \$DATABASE_URL"
    => postgres://postgres:sekret@postgres/canvas_custom_env

- Test that setting a custom database name via DATABASE_URL can create
  the database

    $ docker-compose run --rm -e \
    DATABASE_URL=postgres://postgres:sekret@postgres/canvas_custom_env \
    web bash -c "bin/rails db:create"
    => Created database 'canvas_custom_env'

- This patchset boots on portal

Change-Id: Ic6f3819550df94b6c98b17ef05ac2029a578cfe4
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/234213
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: Robin Kuss <rkuss@instructure.com>
QA-Review: Rex Fleischer <rfleischer@instructure.com>
QA-Review: Jacob Powell <spowell@instructure.com>
Product-Review: Rex Fleischer <rfleischer@instructure.com>
2020-04-28 22:42:21 +00:00
Benjamin Christian Nelson 9a20868030 remove unused selinimum gem
Change-Id: I0adc219a6cab442226619d5bdd0814d7f09d0d52
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/230713
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Derek Bender <djbender@instructure.com>
Reviewed-by: Rex Fleischer <rfleischer@instructure.com>
QA-Review: Jacob Powell <spowell@instructure.com>
Product-Review: Jacob Powell <spowell@instructure.com>
2020-04-23 17:25:57 +00:00
Ethan Vizitei 432419fbcd dual-write path for postgres auditors
refs CNVS-48876
flag = none

add setting for auditors read/write paths

map settings into boolean helpers

create config values for AR writing path

split backend of event_stream by strategy
and confirm writing to both destinations functions

test dual writing from config

wrap tests around attribute mapping from
  event stream to active record

dual write from all 3 auditor classes
via a shared model mixin

TEST PLAN:
  * update dynamic settings to include dual write pattern
  * login a few times
  * publish a course
  * grade an assignment
  * make sure new auditor records are in cassandra
     (auditors API calls is fine)
  * make sure companion records are in the auditor postres table
     (auditor_authentication_records,
      auditor_course_records,
      auditor_grade_change_records)

Change-Id: I9b85fc926f7363876f89c82a3fdceb253244fb57
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/234334
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
QA-Review: Ethan Vizitei <evizitei@instructure.com>
2020-04-19 22:25:21 +00:00
Ethan Vizitei a3c2e318d6 enable instrumentation of APM for jobs
closes APM-16, APM-20
flag = none

also adds context id and user id
to request annotations for APM

configures host-level sampling

TEST PLAN:
  * enable apm collection on datadog agent on single test cluster
  * push consul config to same cluster for enabling apm sampling
  * push consul config depressing host sampling rate to 5%
  * delayed job telemetry should show up in ddog
  * trace count from active clusters should drop by an order of magnitude

Change-Id: I94d97b299ed14403e8b141629740a1627310b259
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/230592
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
Reviewed-by: David Warkentin <dwarkentin@instructure.com>
QA-Review: Simon Williams <simon@instructure.com>
Product-Review: Ethan Vizitei <evizitei@instructure.com>
2020-03-23 15:11:25 +00:00
Ethan Vizitei 8ce6b785aa enable auto-instrumentation for ddog APM
closes APM-7, APM-8
flag = none

hardcode set to a very low % of client sampling by default
to keep performance impact low.

test plan:
 * make sure telemetry is arriving in datadog APM
 * ensure trace traffic level is low, only from one cluster
     (proves settings are working)
 * canvas should not show degradation in response times post deployment

Change-Id: Ifca8d3f6239d6c4e70098dd2b68b9c2a1950e121
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/230064
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Simon Williams <simon@instructure.com>
QA-Review: Michael Hargiss <mhargiss@instructure.com>
Product-Review: Ethan Vizitei <evizitei@instructure.com>
2020-03-17 19:15:15 +00:00
Derek Bender 78123c4cb6 Multiple rubies and postgres on Jenkins
Closes: CCI-214
flag = none

Test plan:
- The following builds pass:
  - main-canvas
  - main-for-coverage
  - main-canvas-postgres-12
  - main-canvas-ruby-2.6
  - main-canvas-postgres-12-ruby-2.6

Change-Id: I253d0cc8f0a808d8453fd3cbe1cfc3400ec8b12a
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/227304
Reviewed-by: Rex Fleischer <rfleischer@instructure.com>
Reviewed-by: James Butters <jbutters@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>
2020-03-10 22:30:51 +00:00
Derek Bender 3ad7fbabf3 Upgrade unofficial postgis repo to official repo
Closes: CCI-261

The mdillon repo was an unofficial postgis repo, there is now and
official postgis/postgis repo!

https://registry.hub.docker.com/r/postgis/postgis/
https://github.com/postgis/docker-postgis

Test Plan:
- First, take notice if you currently have pg_collkey installed:
    $ docker-compose run --rm postgres psql -x \
        -h postgres
        -U postgres
        -d canvas
        -c "SELECT * FROM pg_available_extensions WHERE \
          pg_available_extensions.name = 'pg_collkey';"

  If `installed_version` is blank, then the extension is not isntalled
  into the `canvas` database.

- take down any running environment:
    $ docker-compose stop && docker-compose down

- copy (or update) new settings from docker-compose.override.yml:

    # manual diff
    $ diff config/docker-compose.override.yml \
        docker-compose.override.yml

    # overwrite any existing config
    $ cp config/docker-compose.override.yml .

- copy (or update) new settings from database.yml:

    # manual diff
    $ diff docker-compose/config/database.yml config/database.yml

    # overwrite any existing config
    $ cp docker-compose/config/database.yml config/

- rebuild and startup the postgres image:
    $ docker-compose up --build postgres

- the postgres logs do not mention

ERROR:  could not access file "$libdir/collkey_icu.so":
  No such file or directory

- install the extension if it wasn't previously present:

    $ docker-compose run --rm postgres psql -x \
        -h postgres \
        -U postgres \
        -d canvas \
        -c "CREATE EXTENSION IF NOT EXISTS pg_trgm SCHEMA public;
            CREATE EXTENSION IF NOT EXISTS postgis SCHEMA public;
            CREATE EXTENSION IF NOT EXISTS pg_collkey SCHEMA public;"

    $ docker-compose run --rm postgres psql -x \
        -h postgres \
        -U postgres \
        -d canvas_test \
        -c "CREATE EXTENSION IF NOT EXISTS pg_trgm SCHEMA public; \
            CREATE EXTENSION IF NOT EXISTS postgis SCHEMA public; \
            CREATE EXTENSION IF NOT EXISTS pg_collkey SCHEMA public;"

- pg_collkey is now present:

    $ docker-compose run --rm postgres psql -x \
        -h postgres
        -U postgres
        -d canvas
        -c "SELECT * FROM pg_available_extensions WHERE \
          pg_available_extensions.name = 'pg_collkey';"

    $ docker-compose run --rm postgres psql -x \
        -h postgres
        -U postgres
        -d canvas_test
        -c "SELECT * FROM pg_available_extensions WHERE \
          pg_available_extensions.name = 'pg_collkey';"

- Optionally, Build the postgres container with fresh volumes:

    $ COMPOSE_PROJECT_NAME=<a-unique-name> docker-compose --build \
        up postgres

- The postgres logs show no errors related to collkey_icu.so
  (like above)

Change-Id: I4f0e027cd908fee937b6204cd3a20e5ecf998021
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/228190
Reviewed-by: Rex Fleischer <rfleischer@instructure.com>
Reviewed-by: Jacob Powell <spowell@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: Derek Bender <djbender@instructure.com>
2020-03-04 22:03:02 +00:00
James Butters 47f5de97a3 spec: upgrade chromedriver for chrome version 80 local and docker
flag = none
closes: CCI-263

Test Plan:
Jenkins selenium builds pass.

Change-Id: Ib7970d5b5b9c9a6d07051b1a22758ef055bb1bcc
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/228326
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Derek Bender <djbender@instructure.com>
Reviewed-by: Jacob Powell <spowell@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
2020-02-28 15:38:01 +00:00
Derek Bender 66bc8751b9 Copy over pg_collkey.control
Currently it appears pg_collkey throws an error in the postgres
container, althought it doesn't appear to halt the process. Adding this
missing file resolves this problem

Fixes: CCI-252

Test plan:
- docker-compose build postgres
- docker-compose up -d
- docker-compose logs -f --tail=100 postgres
- visit http://canvas.docker/ in the browser
- the postgres logs should no longer contain a message like:

ERROR:  could not access file "$libdir/collkey_icu.so": No such file or
directory

feature_flag = none

Change-Id: Ib1483a24e705260b2eaeba81ec456ed9f6acf89d
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/227805
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Derek Bender <djbender@instructure.com>
Product-Review: Derek Bender <djbender@instructure.com>
Reviewed-by: Rex Fleischer <rfleischer@instructure.com>
Reviewed-by: Jacob Powell <spowell@instructure.com>
2020-02-25 17:06:29 +00:00
Jared Crystal ed46ea3690 Update postgres package names
refs CCI-234

test plan:
 - using default COMPOSE_FILE:
 - docker-compose build --no-cache --pull postgres

flag = none

Change-Id: Ifa6f23a6e91dc19404795f9bd8b11d7d775d883e
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/226810
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Jim Simon <jsimon@instructure.com>
Reviewed-by: Jacob Powell <spowell@instructure.com>
Reviewed-by: Laura Gonzalez-Horwitz <lgonzalez-horwitz@instructure.com>
Product-Review: Jared Crystal <jcrystal@instructure.com>
2020-02-14 20:29:50 +00:00
Jacob Burroughs 3c2bb3e318 Add vault client to canvas
Next step will be to integrate a secrets API a-la-dynamic settings

test plan:
- Specs pass

Change-Id: Ic2fdd2be3c7f665804627f3ef3ffb5bc408d135b
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/224281
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
2020-02-03 19:00:13 +00:00
James Butters fcd5a4fee8 spec: update version of chrome to 78
closes: CCI-162

flag = none

Change-Id: Id03868b8095a948929fd39ae74d0c70a5eef0df9
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/221262
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Rex Fleischer <rfleischer@instructure.com>
Reviewed-by: Derek Bender <djbender@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
2020-01-09 17:08:52 +00:00
Frank Murphy a5270786ef Add configuration and scripts for replication.
References OUT-3442

Test Plan
:qa-cr:

Change-Id: Icd4bb2a80e9133196ee4d760f6fc1084ac7a438e
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/221319
Reviewed-by: Augusto Callejas <acallejas@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: Frank Murphy <fmurphy@instructure.com>
QA-Review: Augusto Callejas <acallejas@instructure.com>
2019-12-20 22:21:12 +00:00
Jacob Burroughs 4329bab9cf Use correct database connection settings in docker default
Change-Id: I9c941d8b62f2015c2545124c16db610090a62a03
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/220912
Tested-by: Jenkins
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Bryan Petty <bpetty@instructure.com>
QA-Review: Jacob Burroughs <jburroughs@instructure.com>
Product-Review: Jacob Burroughs <jburroughs@instructure.com>
2019-12-16 18:06:56 +00:00
James Butters 49dfe90d6a add wait-for-it script to postres directory
wait-for-it script was left out from the postgres directory after
the update to the Dockerfile that relies on it. Adding the script
in that directory so our Dockerfile builds correctly.

Change-Id: I1c445937ff809877a7063a37eb5b1052e3ae5af5
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/217588
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Tested-by: Jenkins
Reviewed-by: Derek Bender <djbender@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
2019-11-18 16:02:27 +00:00
Derek Bender 1586a140ac Add pg_collkey to postgres image for docker builds
Closes: CCI-2

Test Plan:
- specs that require pg_collkey are ran in new jenkins

Change-Id: I530373f9855d124dfc3c302e0d340f6217b8f33a
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/215422
Reviewed-by: S. Jacob Powell <spowell@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Tested-by: Jenkins
QA-Review: Derek Bender <djbender@instructure.com>
Product-Review: Derek Bender <djbender@instructure.com>
2019-11-13 23:51:59 +00:00
Cameron Matheson e0804049cd run dynamodb in new jenkins
Change-Id: Ifc6676447ad065a30f3e8154444d5c00ed8afac3
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/211347
Tested-by: Jenkins
Reviewed-by: Robert Lamb <rlamb@instructure.com>
QA-Review: Robert Lamb <rlamb@instructure.com>
Product-Review: Robert Lamb <rlamb@instructure.com>
2019-10-31 17:10:55 +00:00
James Butters ea88c7087e spec: downgrade docker chromedriver
there are some bugs in the newest version causing spec failures.

Change-Id: I5b2864815f552831d273b74843e129228b581f55
Reviewed-on: https://gerrit.instructure.com/211810
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
2019-10-03 13:55:16 +00:00
James Butters a95e4b5c48 spec: update chromedriver version
this will get us up to chrome 77

Change-Id: I930a5a6d82f30d4fed0d8072a4cbec4e43742056
Reviewed-on: https://gerrit.instructure.com/211116
Tested-by: Jenkins
Reviewed-by: S. Jacob Powell <spowell@instructure.com>
Reviewed-by: Cameron Matheson <cameron@instructure.com>
QA-Review: S. Jacob Powell <spowell@instructure.com>
Product-Review: S. Jacob Powell <spowell@instructure.com>
2019-09-26 17:06:59 +00:00
James Williams 56a487811b spec: knapsack for selenium
Change-Id: I30c0c0006de8779dea1743d6c626022756f05d5a
Reviewed-on: https://gerrit.instructure.com/210564
Tested-by: Jenkins
Reviewed-by: James Williams <jamesw@instructure.com>
Reviewed-by: Rob Orton <rob@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
2019-09-25 14:13:39 +00:00
James Williams 18cad7be4c spec: undo security.yml overwrite
Change-Id: Id4a31fe3d3c8784b65730d7c62d3bd1ef68767ed
Reviewed-on: https://gerrit.instructure.com/210756
Reviewed-by: James Butters <jbutters@instructure.com>
Tested-by: Jenkins
QA-Review: James Williams <jamesw@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
2019-09-25 12:17:37 +00:00
James Williams bc1a16a557 spec: copy new jenkins config to container afterwards
instead of replacing the originals in the image

Change-Id: Ibb32bb32cf2487cf17eb4688eea30d19400b02a7
Reviewed-on: https://gerrit.instructure.com/210409
Tested-by: Jenkins
Reviewed-by: James Butters <jbutters@instructure.com>
QA-Review: James Williams <jamesw@instructure.com>
Product-Review: James Williams <jamesw@instructure.com>
2019-09-23 19:51:41 +00:00
James Williams 2768dda033 use knapsack in new jenkins rspec build
closes #CORE-3292 #CORE-3293

Change-Id: Id54c8568bd1ca45929f35926e0eebdd558e68a58
Reviewed-on: https://gerrit.instructure.com/207602
Reviewed-by: Cody Cutrer <cody@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
Product-Review: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins
2019-09-13 15:19:34 +00:00
Cody Cutrer c9aab282ba use rails built-in RedisCacheStore
RedisStore is no longer supported

somewhat surprisingly, the serialization formats are compatible, so we don't
need to do any namespacing

Change-Id: Iede3a023cada95313875f0ce419b649c364ee97c
Reviewed-on: https://gerrit.instructure.com/202663
Tested-by: Jenkins
Reviewed-by: Rob Orton <rob@instructure.com>
QA-Review: Rob Orton <rob@instructure.com>
Product-Review: Rob Orton <rob@instructure.com>
2019-08-09 20:22:56 +00:00
James Butters 946c69339d spec: update verion of chromedriver to new version of chrome
closes: GRADE-2211

Change-Id: Id5b0d91331dfb061a6eb304cd62d0e90709c9841
Reviewed-on: https://gerrit.instructure.com/195579
Reviewed-by: KC Naegle <knaegle@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
Tested-by: Jenkins
2019-05-31 19:52:50 +00:00
wdransfield eac5a15d71 Update dynamic settings lti keys entry
Test Plan:
Using docker canvas verify you can hit the
/api/lti/security/jwks endpoint and see three JWKs

Change-Id: I687cec8012f4ebfd1d9319e65b52343e6bae89bb
Reviewed-on: https://gerrit.instructure.com/188823
Tested-by: Jenkins
QA-Review: Marc Phillips <mphillips@instructure.com>
Product-Review: Weston Dransfield <wdransfield@instructure.com>
Reviewed-by: Marc Phillips <mphillips@instructure.com>
2019-04-12 20:08:05 +00:00
Derek Bender 38bdaa8b54 Smoke test docker image
Closes: GRADE-2048

Test Plan:
- specs pass
- canvas-image in new-jenkins passes

Change-Id: If8369df6467dd5842d8f19190ec5a952ce0f750b
Reviewed-on: https://gerrit.instructure.com/187292
Tested-by: Jenkins
QA-Review: Derek Bender <djbender@instructure.com>
Product-Review: Derek Bender <djbender@instructure.com>
Reviewed-by: Robert Lamb <rlamb@instructure.com>
2019-04-05 14:25:16 +00:00
Clay Diffrient ade362e515 Bump to Node 10
closes CORE-2329

There were some tests that were expecting a snapshot-like value
where it expected `new Date().toLocaleDateString()` to give something
Like “2016-7-11” but that was actually wrong. If you do
`new Date().toLocaleDateString()` in a browser it will give you
something like “7/11/2016”. And this new version of node matches what
a real browser would have done, so I just updated the specs so they
are looking for the correct format. This change does not actually
reflect a change in what a real user would see. Just what
jest/jsdom/node formats it as.

Test Plan:
  - check to make sure that the assignments 2 availability dates
    component produces markup exactly as it did before
  - Automated tests pass
  - Build canvas locally, everything passes.
  - Build canvas with docker, everything passes.

Change-Id: I74285cd6d9b251ca60ab79396e332cc3a419bcee
Reviewed-on: https://gerrit.instructure.com/177198
Tested-by: Jenkins
Reviewed-by: Brent Burgoyne <bburgoyne@instructure.com>
QA-Review: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Brent Burgoyne <bburgoyne@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
2019-03-22 17:29:36 +00:00
Derek Bender a8b10171e0 update docker selenium images
closes: QA-629

Change-Id: Ibff14673731a4214ed5a7896c016b0e3ffa70f7d
Reviewed-on: https://gerrit.instructure.com/170604
Tested-by: Jenkins
Reviewed-by: Colleen Pai <ipai@instructure.com>
Reviewed-by: James Butters <jbutters@instructure.com>
QA-Review: Derek Bender <djbender@instructure.com>
Product-Review: Derek Bender <djbender@instructure.com>
2018-11-02 20:11:41 +00:00
Derek Bender 1e31f18cd9 docs: add auto_open_devtools to docker
also fix code comments formatting

Change-Id: Idb507f00181bd56372d4c8fc5136c8b2576fb7fa
Reviewed-on: https://gerrit.instructure.com/168687
Tested-by: Jenkins
Reviewed-by: Ryan Shaw <ryan@instructure.com>
QA-Review: Derek Bender <djbender@instructure.com>
Product-Review: Derek Bender <djbender@instructure.com>
2018-10-17 18:13:17 +00:00
Marc Phillips 66ada6850f Add dc config to jwk set_keys
Previously the jwk set_keys was not pointing to any
data_center when it makes the call to set the keys.
This now will grab the configuration from consul of
the dc and set it as the data_center to put to.

ref PLAT-3361

Test Plan:
 n/a

Change-Id: I70e3cfb52ba557543ad203c516739a18cae17c26
Reviewed-on: https://gerrit.instructure.com/159839
Reviewed-by: Weston Dransfield <wdransfield@instructure.com>
Tested-by: Jenkins
Product-Review: Marc Alan Phillips <mphillips@instructure.com>
QA-Review: Marc Alan Phillips <mphillips@instructure.com>
2018-08-10 17:44:48 +00:00
wdransfield 59942f4ff8 LTI 1.3: Add security claims and sign with Canvas private key
Closes PLAT-3633, PLAT-3634

Test Plan:
- Do an LTI 1.3 launch in Canvas and verify the id token is
  signed with the current canvas secret key.
- Verify the following claims are included and correct:
  * exp
  * iat
  * iss
  * nonce
  * sub

Change-Id: I57699ac42bbe98a9fa03f82f3f9b9a16c6923011
Reviewed-on: https://gerrit.instructure.com/159855
Tested-by: Jenkins
Reviewed-by: Marc Alan Phillips <mphillips@instructure.com>
QA-Review: Marc Alan Phillips <mphillips@instructure.com>
Product-Review: Marc Alan Phillips <mphillips@instructure.com>
2018-08-09 21:33:03 +00:00
Nathan Mills 2bb1d541f3 update example lti keypairs
refs PLAT-3361

test-plan:

The updated examples should work

Change-Id: Ibea651d2846b740cb6b08e07b6d660e5e5812015
Reviewed-on: https://gerrit.instructure.com/157170
Reviewed-by: August Thornton <august@instructure.com>
QA-Review: August Thornton <august@instructure.com>
Tested-by: Jenkins
Product-Review: Nathan Mills <nathanm@instructure.com>
2018-07-12 20:35:06 +00:00
Marc Phillips 872a9329f1 Add lti JWK fallback for Development
Added lti JWK config for local development purposes using
LTI 1.3. Works with local and docker development.

closes: PLAT-3505

Test Plan:
n/a

Change-Id: Ib45f33d11027c608d6eb2397d29af6ef1878b2a7
Reviewed-on: https://gerrit.instructure.com/154194
Tested-by: Jenkins
Reviewed-by: Nathan Mills <nathanm@instructure.com>
Product-Review: Marc Alan Phillips <mphillips@instructure.com>
QA-Review: Marc Alan Phillips <mphillips@instructure.com>
2018-06-19 20:34:58 +00:00
Derek Bender d4577f8f07 update js-tests to node 8 and fix cmd
Change-Id: I2e5c1be87cb3e88a203379127891ed4b6782fc26
Reviewed-on: https://gerrit.instructure.com/145756
Reviewed-by: Marc Alan Phillips <mphillips@instructure.com>
Tested-by: Jenkins
Product-Review: Marc Alan Phillips <mphillips@instructure.com>
QA-Review: Marc Alan Phillips <mphillips@instructure.com>
2018-04-06 17:46:58 +00:00
Derek Bender c3fd3f2112 fix delayed_jobs redis client for docker
Change-Id: I7671a573ecc004c351e48c9ff6c2c7ad55aac3d3
Reviewed-on: https://gerrit.instructure.com/145158
Tested-by: Jenkins
Reviewed-by: Omar Khan <okhan@instructure.com>
Product-Review: Derek Bender <djbender@instructure.com>
QA-Review: Derek Bender <djbender@instructure.com>
2018-03-29 15:23:37 +00:00
Cameron Sutter 940bab380a panda token endpoint
closes MBL-9792

test plan:
- make a request to /api/v1/users/:id/pandata_token
  with param 'app_key' of value 'IOS_pandata_key'
- make the same call with a value of 'ANDROID_pandata_key'
- both should return a 200 code
  and a json object with a 'token' and a 'expires_at'

Change-Id: If993ad3c49b89a61ef8caa91d5f347250998070b
Reviewed-on: https://gerrit.instructure.com/144535
Reviewed-by: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins
QA-Review: Tucker McKnight <tmcknight@instructure.com>
Product-Review: Cameron Sutter <csutter@instructure.com>
2018-03-28 20:39:17 +00:00
Andrew Huff c6783ad4cb update instfs dynamic_settings examples
test plan: none

Change-Id: I34b1c44edbac29118c290c715eb22e12736eaa05
Reviewed-on: https://gerrit.instructure.com/137635
Reviewed-by: Jacob Fugal <jacob@instructure.com>
Tested-by: Jenkins
Product-Review: Andrew Huff <ahuff@instructure.com>
QA-Review: Andrew Huff <ahuff@instructure.com>
2018-03-07 20:58:17 +00:00
Ryan Shaw c1c93e1e14 Use node 8.9.4
If you are getting errors about “The engine "node" is incompatible with 
this module. Expected version ">=8.9.4”.” after applying this change,
It means you need upgrade your node to 8.9.4. to do so:

if you use nvm: `nvm install` inside the canvas dir
If you use brew: `brew upgrade node`
If you use apt-get: see https://github.com/nodesource/distributions
If you use docker: rebuild your docker container

Closes: CORE-704

Test plan:
* js tests should pass
* webpack and brandable_css should generate the exact same
  CSS and JS output as before.
* all of our build tooling, including docker stuff, should continue
  to work and use Node 8. 

If you know of something else that needs to be updated to use node 8 
everywhere, let me know

Change-Id: Ic019710c219d8b8c627ce03e0dffde731cfa2856
Reviewed-on: https://gerrit.instructure.com/136802
Tested-by: Jenkins
Reviewed-by: Clay Diffrient <cdiffrient@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
QA-Review: Ryan Shaw <ryan@instructure.com>
2018-01-03 20:41:37 +00:00
Tyler Pickett a0e14364b8 Update to Postgres 9.5 and fix installing pg_collkey
Fixes: SD-3169

Before rebuilding your image dump your existing 9.3 data:
  docker-compose start postgres
  docker-compose exec postgres pg_dumpall -c -U postgres > tmp/data.sql
  docker-compose stop postgres

Once that is done clean up the old container, image and volume:
  docker-compose rm --force postgres
  docker rmi canvaslms_postgres
  docker volume rm canvaslms_pg_data

Build the new image, start a container and populate it with your data:
  docker-compose build --pull postgres
  docker-compose start postgres
  cat tmp/data.sql | docker-compose exec postgres psql -U postgres

Change-Id: Ib01e02dd583be0447c13756e89cb470b972af8cc
Reviewed-on: https://gerrit.instructure.com/129977
Reviewed-by: Bryan Petty <bpetty@instructure.com>
Tested-by: Jenkins
QA-Review: Leo Abner <rabner@instructure.com>
Product-Review: Tyler Pickett <tpickett@instructure.com>
2017-10-18 14:08:38 +00:00
Jacob Burroughs ac15b8bf30 Fix docker pg build
Probably broken by the release of PG 10, but it could be something else.

test plan:
- Check out the commit
- Try `dc build --no-cache postgres`
- It should successfully build

Closes gh-1136

Change-Id: I78772a60cbf85ba1fa93957ecb6651e8f1b60068
Reviewed-on: https://gerrit.instructure.com/129878
Reviewed-by: Bryan Petty <bpetty@instructure.com>
Product-Review: Bryan Petty <bpetty@instructure.com>
QA-Review: Bryan Petty <bpetty@instructure.com>
Tested-by: Jenkins
2017-10-16 21:05:20 +00:00
Derek Bender 563fe17b91 remove redis_store from test env
fixes: GRADE-275

Change-Id: I6f4e99a86c5280d336b22b039626934c5ae83043
Reviewed-on: https://gerrit.instructure.com/126731
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: Derek Bender <djbender@instructure.com>
QA-Review: Derek Bender <djbender@instructure.com>
Tested-by: Jenkins
2017-09-20 15:42:09 +00:00
Tyler Pickett 099365aec1 Add rake task to populate Consul from dynamic_settings.yml
Fixes: CNVS-39293

Since we eliminated the pre-population functionality from our Consul
wrapper we needed something to conveniently populate the KV store.

Test Plan:
- Start a Consul server
- Run `bin/rake canvas:seed_consul`
- Verify that values were written to the KV store.

Change-Id: I340011b7d00ed4e3dd2918e3f101f6377fc72d7e
Reviewed-on: https://gerrit.instructure.com/126574
Reviewed-by: Cody Cutrer <cody@instructure.com>
Product-Review: Tyler Pickett <tpickett@instructure.com>
QA-Review: Cody Cutrer <cody@instructure.com>
Tested-by: Jenkins
2017-09-19 18:08:39 +00:00
Derek Bender 55ae3c74e7 Persist cassandra volume
fixes: GRADE-243

Allow cassandra's data to persist after using `docker-compose down
cassandra` where before this command would effectively wipe your database
This is in line with how the pg_data volumes work.

test plan:
- setup cassandra
- create a keyspace
- run `docker-compose down && docker-compose up -d` (-d for daemon)
- the previously create keyspace still exists

Change-Id: Ib58bec022eda79ad45352419e4fd33b07af7cf21
Reviewed-on: https://gerrit.instructure.com/124278
Tested-by: Jenkins
Reviewed-by: Shahbaz Javeed <sjaveed@instructure.com>
Reviewed-by: Matt Taylor <mtaylor@instructure.com>
QA-Review: KC Naegle <knaegle@instructure.com>
Product-Review: Derek Bender <djbender@instructure.com>
2017-09-01 18:19:46 +00:00