23 Commits

Author SHA1 Message Date
741a725f52 update docker-compose to docker compose
[skip-crystalball]
[change-merged]
[build-registry-path=jenkins/canvas-lms/dockercomposeupdate]

Change-Id: Id8dac2c65a5b586fc5e419bbd83ecf565a71e33e
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/357959
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
Build-Review: James Butters <jbutters@instructure.com>
Reviewed-by: Gergely Máté <gergely.mate@instructure.com>
2024-10-25 13:25:20 +00:00
eaa5b23e17 restart stopped containers after update
update script prompts you to stop containers,
but previously it never restarted them

Change-Id: Id93d128755ea0ad176b429857b24fa15ec2649c7
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/332200
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Jacob DeWar <jacob.dewar@instructure.com>
QA-Review: Jacob DeWar <jacob.dewar@instructure.com>
Product-Review: Jake Oeding <jake.oeding@instructure.com>
2023-11-06 22:25:14 +00:00
5a89713b86 remove bundle check and just bundle install
the bundle check was falsely reporting as dependencies met
with updates to Gemfile.rails70.local.partial. Remove the bundle
check and just run bundle install, if there are not updates
it's still fast and doesn't cost any time

Test Plan:
-with a clean state
  -downgrade a gem in Gemfile.rails70.lock.partial
   e.g. strscan (3.0.6) -> 3.0.5
-run docker_dev_setup.sh
-confirm gem version in Gemfile.rails70.lock
-restore the gem in Gemfile.rails70.lock.partial
-run docker_dev_update
  -the gem is updated in Gemfile.rails70.lock to match
   Gemfile.rails70.lock.partial

Change-Id: Ide32d45667502df7882b374de4773b63f687d153
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/315997
Reviewed-by: Andrea Cirulli <andrea.cirulli@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>
2023-04-13 22:22:25 +00:00
73a7fb0827 No more mutagen
macOS and docker desktop's support of virtiofs is a better path forward

Test plan:
  - Docker setup script works on MacOS

Closes FOO-2982

Change-Id: Ibb64390420bfa7ade82f00d962282db41917a89a
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/294699
Reviewed-by: Caleb Guanzon <cguanzon@instructure.com>
Reviewed-by: Charley Kline <ckline@instructure.com>
Reviewed-by: James Butters <jbutters@instructure.com>
QA-Review: Caleb Guanzon <cguanzon@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
2022-06-27 15:33:24 +00:00
9d324b8b5a support linux without mutagen docker setup
we should still support a docker dev setup on linux without mutagen.

flag = none

Change-Id: I73874c7f5650070a237e15f5928a0e2886a1b573
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/288913
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Bobby Buten <bobby.buten@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
2022-04-05 17:53:32 +00:00
08965f67ca remove dinghy from docker_dev scripts
dinghy is deprecated so we are removing it from our docker setup
scripts, now defaulting to mutagen with docker desktop for mac.

flag = none
closes: DE-1099

Test Plan:
-Jenkins passes
-run docker_dev_setup from clean machine
  -setup uses mutagen with docker desktop on mac
  -setup uses mutagen with docker on linux
  -dinghy_http_proxy can still be used
-if dinghy machine found running, fail script with message

Change-Id: I1916c16807e7893174f32074674125cec93bcb40
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/287535
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Andrea Cirulli <andrea.cirulli@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
2022-03-24 19:36:22 +00:00
d8d1078abf update docker_dev scripts to work with latest mutagen release
update docker_dev script to use mutagen 0.13.0, new dependency
mutagen-compose, update commands to use mutagen-compose.

closes: DE-1014
flag = none

Test Plan:
-Jenkins passes
-docker_dev_setup passes with all required dependcies
-with beta version of mutagen
  -docker_dev_setup fails, alerting to missing dependency
-with mutagen 0.13.0, without mutagen-compose
  -docker_dev_setup fails, alerting to missing dependency
-with docker desktop installed to Docker/Desktop.app
  -docker_dev_setup does not fail

Change-Id: I3e18403912ee2a362c306da2df88eb58faa39db1
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/283663
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Isaac Moore <isaac.moore@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
2022-01-27 19:57:22 +00:00
3b110d0aea Provide option to force rebuild containers
add rebuild option to docker_dev_update to force rebuild
of docker containers.

flag = none

Test Plan:
-Run docker_dev_update script with no options, no dockerfile changes
  -script does not rebuild containers nor prompts to stop running containers
-docker_dev_update --rebuild
  -prompt to stop running containers
  -containers are rebuilt
-docker-compose_update --update-code
  -prompted to stop containers
  -containers not rebuilt
-docker_compose_update --rebuild --update-code
  -prompted to stop containers
  -code rebased
  -containers rebuilt

Change-Id: I8deb365b8c1f53bfd3806bdb0bf87e2b4dff85ee
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/268129
Reviewed-by: Kyle Rosenbaum <krosenbaum@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
2021-06-30 19:29:16 +00:00
cc32af3ccd Revert "asset install in Dockerfile"
This reverts commit 655cecbd5d006de1a4d559109f6d6d934aec8376.

Reason for revert: broke dev environments

Change-Id: I97f47a8ef7ac369b3cb30e448a3cfa9997c03930
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/267650
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Kyle Rosenbaum <krosenbaum@instructure.com>
Reviewed-by: Andrea Cirulli <andrea.cirulli@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
2021-06-29 13:36:09 +00:00
655cecbd5d asset install in Dockerfile
move asset compiling into the Dockerfile allowing for a simpler
docker dev setup.

flag = none
closes: DE-696,DE-365

Test Plan:
-mac normal setup
-mac mutagen setup
-linux normal setup
-linux mutagen setup

Change-Id: I7e178c1ca91ee1908c4af55e03ec0010f5abce8e
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/266332
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: Kyle Rosenbaum <krosenbaum@instructure.com>
Reviewed-by: Andrea Cirulli <andrea.cirulli@instructure.com>
2021-06-24 19:25:48 +00:00
e38b3a49be add support for mutagen setup and update.
flag = none
closes: DE-529

Test Plan:
Test All On Linux and Mac
-docker_dev_setup without mutagen
  -test with dinghy not created, down, missing
-docker_dev_setup with mutagen
  -with docker desktop not running
  -with and without dory
-docker_dev_update with and without mutagen
  -with update-code option and without
-update_canvas for local is not broken
-following Next Steps, all works for mutagen

Change-Id: I7690dc2d919cf1b9d8af86200ec8439da9135d16
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/262293
QA-Review: James Butters <jbutters@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Andrea Cirulli <andrea.cirulli@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
2021-04-27 19:46:36 +00:00
2b55c483cc rebuild images with changes to Dockerfile
flag = none
closes: DE-627

Test Plan:
-jenkins build passes
-tested locally with a fake master
 sha that was used to rebase and detect
 changes to Dockerfile

Change-Id: Ia9a930b005f240d8382dff2c143848a84912303c
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/263700
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Aaron Ogata <aogata@instructure.com>
Reviewed-by: Andrea Cirulli <andrea.cirulli@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
2021-04-27 15:04:35 +00:00
c2bf287a2b set DOCKER env var to true, following our standard
flag = none
refs: DE-529

Test Plan:
-Jenkins docker smoke build passes
-running canvas_update local does not use docker commands
-running docker_dev_setup and docker_dev_update still works
 and use docker commands.

Change-Id: I44c0cd535f6857bebf6a3290efae6800c62c7c77
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/263235
Reviewed-by: Andrea Cirulli <andrea.cirulli@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>
2021-04-20 17:11:45 +00:00
16cea75a47 move to docker-compose exec
to save time and clear up logs, start web contain and
dependant services then run docker-compose exec instead
of docker-compose run --rm for each command. No more
waiting for container to spin up and stop, also clears
the logs of all those extra messages.

closes: DE-593
flag = none

Test Plan:
-run docker_dev_setup.sh, should be no noticable difference
-run docker_dev_update.sh, should be no noticable difference
-Jenkins local-docker-dev build passes
-canvas_update for local non-docker still works

Change-Id: Id1e72f8af948905385aed6769a8d793d962e2e1f
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/262258
QA-Review: Andrea Cirulli <andrea.cirulli@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Reviewed-by: Andrea Cirulli <andrea.cirulli@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
2021-04-13 15:43:53 +00:00
174e242745 update script to use new function name trap_result
flag = none

Change-Id: I876e9918888242ccea1158898379a9e4054f588f
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/262761
Reviewed-by: Andrea Cirulli <andrea.cirulli@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>
2021-04-12 21:15:42 +00:00
868a98a807 rename intro_message and make it more general
The function intro_message is a general function and should
not print a particular message when invoked, also it has been rename
to better represent what the function is actually doing.

refs DE-470
flag = none

test-plan:
- docker_dev_update runs successfully
- canvs_update runs successfully

Change-Id: I6f49eb756ff4bb2549f900ada7bdf05bcbf1345b
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/262436
Reviewed-by: Aaron Ogata <aogata@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
QA-Review: Andrea Cirulli <andrea.cirulli@instructure.com>
Product-Review: Andrea Cirulli <andrea.cirulli@instructure.com>
2021-04-07 20:57:40 +00:00
6e11d6868c move functions to common.sh
move shared functions to common.sh. Move common.sh to
script/common/utils/common.sh

closes: DE-571
flag = none

Test Plan:
-running docker_dev_setup succeeds
-running docker_dev_update succeeds
-running rebase_canvas_and_plugins succeeds

Change-Id: I4d74369f9c88854d1bb4ac0b3b990f5045f24506
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/261153
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: Andrea Cirulli <andrea.cirulli@instructure.com>
2021-03-22 15:27:48 +00:00
d1ccb225bf add telemetry to docker_dev_update
Add the ability to track command status and duration of
docker_dev_update

refs DE-550
flag = none

test-plan:
- ensure docker_dev_update work on Mac and Linux
without the telemetry. Using multiple combination
no flags, update-code, skip-canvas, skip-plugins etc.
- ensure the above is true also when telemetry is
enabled

Change-Id: I5d6f8185dd7d344c783e302deb6597e95692e44a
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/261026
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: James Butters <jbutters@instructure.com>
QA-Review: Andrea Cirulli <andrea.cirulli@instructure.com>
Product-Review: Andrea Cirulli <andrea.cirulli@instructure.com>
2021-03-19 15:48:51 +00:00
2b45e82021 abstract canvas build steps into separate script
closes: DE-567
flag = none

Test Plan:
-Jenkins passes
-docker_dev_setup.sh still works
-docker_dev_update.sh still works
-rebase_canvas_and_plugins.sh still works

Change-Id: I044ba0d3d8539a1e87bb0fef67f3b82855f4ab2c
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/260842
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Andrea Cirulli <andrea.cirulli@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
2021-03-17 20:19:41 +00:00
3a1eb90728 remove common_build_steps
remove common_build_steps and move those functions into
script/common.sh where they can be reused in all scripts.
Fix the docker-smoke build to still work with the move.

flag = none

Test Plan:
-Jenkins passes
-Local-docker-dev build passes
-docker_dev_setup script still works
-docker_dev_update script still works
-rebase_canvas_and_plugins script still works


Change-Id: I0300b90d631701a36ede5bfa52fad7e2406bb209
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/260384
Reviewed-by: Aaron Ogata <aogata@instructure.com>
Reviewed-by: Andrea Cirulli <andrea.cirulli@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>
2021-03-11 15:15:39 +00:00
e88fc72df0 refactor docker_dev_update with improvements
closes: DE-499

Improve the flow of docker_dev_update, incorporate new
rebase_canvas_and_plugins script.

Test Plan:
- Jenkins Passes
- Run docker_dev_update with no uncommitted changes
  -no command options; script updates docker containers
  -with --update-code; rebases repos, updates docker
  -try a variety of skip-plugins and skip-canvas
    -script skips repos as expected
-Run with uncommitted changes to canvas or a plugin
  -no command options; updates docker containers
  -with update-code; prompted to stash or skip
    -rebases correctly if stashed
  -use different combinations of skip-canvas and
   skip-plugins; script will skip as expected

Change-Id: I6cf96f2455ca798bc37d8b324190b955ab8bdaa1
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/259133
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Andrea Cirulli <andrea.cirulli@instructure.com>
QA-Review: Andrea Cirulli <andrea.cirulli@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
2021-03-09 15:01:32 +00:00
248482a351 Add docker-compose.override.yml to .gitignore
This is in an attempt to
1. Prevent unpredictable behavior when
running docker-compose without specifying
docker-compose files (intentionally or
unintentionally *This is exactly a problem
I found that caused issues, running the defaults on accident)
2. Follow more closely what other projects
are doing, they don’t have the override committed
3. Follow typical industry standard,
from what I’ve seen, such as
https://blog.sentry.io/2019/02/28/exception-perceptions-docker

test plan:
Running ./script/docker_dev_setup.sh with no
docker-compose.override.yml
in the root directory will print the message
"Copying default configuration from
docker-compose.override.yml.example to
docker-compose.override.yml" and copy the file in.

Running ./script/docker_dev_setup.sh with an existing
docker-compose.override.yml will simply print
"docker-compose.override.yml exists, skipping
copy of default configuration"

Also check that the documentation changes
sufficiently explain the new
process and what to expect.

The file shouldn't be in the root of the
directory in the repo anymore,
in order to prevent unwanted default behavior
(requires explicit naming
of docker-compose files)
There should be a
docker-compose.override.yml.example in the config
folder for reference.

• Add `docker-compose.override.yml` to `.gitignore`
• Leave a copy of the current
`docker-compose.override.yml` in
`config/docker-compose.override.yml.example`
• Delete `docker-compose.override.yml`
from the root directory

fixes CORE-3409

Change-Id: I9cffeb52f2cc233061f78de10fcb240c09743542
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/214116
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Tested-by: Jenkins
Reviewed-by: Robert Lamb <rlamb@instructure.com>
QA-Review: S. Jacob Powell <spowell@instructure.com>
Product-Review: S. Jacob Powell <spowell@instructure.com>
2019-11-15 20:48:08 +00:00
4159e09bc0 Match services docker workflow.
Fixes OUT-2367

There are now two scripts:
- docker_dev_setup.sh: will create / recreate the service
  and all databases locally
- docker_dev_update.sh: can be used to migrate the local
  master branch. Will also pull plugin changes and run the
  relevant migrations.

Both scripts now directly use parts of canvas_update under the hood,
which will hopefully make future workflow changes less painful.

Test Plan:
- With docker:
  - optional: create a new canvas checkout
    (you can use a different directory name to avoid destroying your
     current database)
  - git fetch
  - check out this gerrit, and use `git checkout -b 2367` to
    create a branch for it
  - git checkout origin/master~200
  - git checkout 2367 -- script
  - ./script/docker_dev_setup.sh (follow all prompts)
  - docker-compose up -d
  - login, accept the terms of use
  - docker-compose down
  - git checkout master
  - ./script/docker_dev_update.sh -n code
  - docker-compose up -d
  - login, verify you are not asked for terms of use and the school name
    is the same as before.
  - docker-compose down
  - ./script/docker_dev_setup.sh again (nuke the old database,
    change the root account name)
  - docker-compose up -d
  - login, accept the terms of use, verify the new account name

Change-Id: Ie40600d7ea1e90633d9139b4cc1cf853695ac8f8
Reviewed-on: https://gerrit.instructure.com/151547
Tested-by: Jenkins
Reviewed-by: Michael Brewer-Davis <mbd@instructure.com>
Reviewed-by: Augusto Callejas <acallejas@instructure.com>
QA-Review: Dariusz Dzien <ddzien@instructure.com>
Product-Review: Neil Gupta <ngupta@instructure.com>
2018-08-14 17:08:58 +00:00