Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore: enable manual testing of migrations (#5645)
## About the changes This adds a Makefile to make it easy to test migrations from one version of Unleash to another. The script depends on [docker compose V2](https://docs.docker.com/compose/migrate/) **Before starting**: make sure you're inside test-migrations folder and run `make clean` to be in a clean state. We can run 2 versions of Unleash side by side with a shared database (the second version will apply migrations to the DB): ```shell UNLEASH_DOCKER_IMAGE=unleashorg/unleash-server:5.6.10 make start-unleash # defaults to port 4242 UNLEASH_DOCKER_IMAGE=unleashorg/unleash-server:latest make start-another-unleash # defaults to port 4243 make test # run basic UI tests against port 4242 (first image) EXPOSED_PORT=4243 make test # run basic UI tests against port 4243 ``` This also enables us to test our local repository with our code of Unleash server running at port 4244 (`EXPOSE_PORT=4444 make run-current` if you want to change it): ```shell UNLEASH_DOCKER_IMAGE=unleashorg/unleash-server:5.6.10 make start-unleash # defaults to port 4242 make run-current # exposes the current backend at 4244 ``` You can also connect the latest UI to any of the ports specified above, starting the UI at port 3000: ```shell EXPOSED_PORT=4242 make run-current-ui # exposed port defaults to 4244 which is the port of the current backend ```
- Loading branch information
1 parent
fa087fb
commit 1338496
Showing
4 changed files
with
142 additions
and
15 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,107 @@ | ||
## Use UNLEASH_DOCKER_IMAGE to override the docker image used for testing | ||
## Examples: | ||
## - UNLEASH_DOCKER_IMAGE=unleashorg/unleash-server:latest | ||
## - UNLEASH_DOCKER_IMAGE=unleashorg/unleash-server:4.12.6 | ||
## - UNLEASH_DOCKER_IMAGE=ghcr.io/ivarconr/unleash-enterprise:latest | ||
## - UNLEASH_DOCKER_IMAGE=ghcr.io/ivarconr/unleash-enterprise:5.6.0 | ||
ifndef UNLEASH_DOCKER_IMAGE | ||
override UNLEASH_DOCKER_IMAGE = unleashorg/unleash-server:latest | ||
endif | ||
|
||
# default action | ||
.PHONY: default | ||
default: | ||
@echo "Usage: make [command]" | ||
@echo "" | ||
@echo "This helps testing the impact of latest migrations into an old version of Unleash, helping us answer the following questions:" | ||
@echo " - Can we safely upgrade to the latest version from version X?" | ||
@echo " - If we need to rollback to the previous version, can we do that?" | ||
@echo "" | ||
@echo "Environment variables:" | ||
@echo " - UNLEASH_DOCKER_IMAGE: docker image used for start-unleash command" | ||
@echo " - EXPOSED_PORT: port used for start-unleash command where Unleash will be exposed. Also specifies which port will be used for the UI tests" | ||
@echo "" | ||
@echo "The most common way of using this makefile is to run 'make start-unleash test' followed by manual exploration of Unleash at http://localhost:4242" | ||
@echo "" | ||
@echo "You can also explore the current version running 'make run-current' and exploring the new version at http://localhost:3000" | ||
@echo "" | ||
@echo "Example:" | ||
@echo " - UNLEASH_DOCKER_IMAGE=unleashorg/unleash-server:5.6.0 make start-unleash test" | ||
@echo "" | ||
@echo "If you just want to test one version and then another one you can simply run these two commands one after the other:" | ||
@echo " UNLEASH_DOCKER_IMAGE=unleashorg/unleash-server:4.12.6 make start-unleash" | ||
@echo " UNLEASH_DOCKER_IMAGE=unleashorg/unleash-server:5.6.10 make start-another-unleash" | ||
@echo "The old version will run on http://localhost:4242 and the new one on http://localhost:4243" | ||
@echo "" | ||
@echo "Commands available (you can manually run them one by one in this specific order):" | ||
@echo " 1. clean: clean up before or after the test" | ||
@echo " 2. start-unleash: Start docker with the previous version specified by UNLEASH_DOCKER_IMAGE" | ||
@echo " 3. start-another-unleash: same as above, but runs another instance side by side" | ||
@echo " 4. apply-migrations: Apply migrations from HEAD" | ||
@echo " 5. prepare: Install dependencies to run the test" | ||
@echo " 6. test: Run UI tests (you can specify EXPOSED_PORT to run the tests against a different port)" | ||
@echo " 7. run-current: Run the current version of Unleash from this local repository" | ||
@echo " 8. start-another-unleash: Starts another docker instance of Unleash with the image specified by UNLEASH_DOCKER_IMAGE" | ||
|
||
.PHONY: prepare | ||
prepare: | ||
@echo "Preparing the environment..." | ||
@yarn --cwd .. install --frozen-lockfile --ignore-scripts | ||
|
||
|
||
.PHONY: apply-migrations | ||
apply-migrations: prepare | ||
@echo "Applying migrations from HEAD... $(git rev-parse HEAD)" | ||
@DATABASE_URL=postgres://postgres:unleash@localhost:5432/unleash DATABASE_SSL=false yarn --cwd .. db-migrate up | ||
|
||
|
||
.PHONY: run-current-ui | ||
run-current-ui: prepare | ||
@yarn install --cwd ../frontend | ||
@UNLEASH_API=http://localhost:$${EXPOSED_PORT:-4244} DATABASE_URL=postgres://postgres:unleash@localhost:5432/unleash DATABASE_SSL=false yarn --cwd ../frontend dev | ||
@echo "You can manually validate current Unleash at http://localhost:3000 and compare with previous version" | ||
|
||
.PHONY: run-current | ||
run-current: prepare start-db | ||
@HTTP_PORT=$($${EXPOSED_PORT:-4244}) DATABASE_URL=postgres://postgres:unleash@localhost:5432/unleash DATABASE_SSL=false yarn --cwd .. dev:backend | ||
@echo "You can manually validate current Unleash at http://localhost:$${EXPOSED_PORT:-4244} and compare with previous version" | ||
@echo "Waiting for Unleash to be healthy at port $${EXPOSED_PORT:-4244}..." | ||
@while ! curl -s "http://localhost:$${EXPOSED_PORT:-4244}/health"; do sleep 0.1; done | ||
@echo "\nUnleash is now running at http://localhost:$${EXPOSED_PORT:-4244}" | ||
|
||
.PHONY: test | ||
test: | ||
@echo "Running tests against $${EXPOSED_PORT:-4242}..." | ||
@EXPOSED_PORT=$${EXPOSED_PORT:-4242} yarn --cwd ../frontend e2e:oss | ||
@echo "You can manually validate Unleash at http://localhost:$${EXPOSED_PORT:-4242}" | ||
@echo "If you want to test the current version (HEAD of this git repo) side-by-side, execute make run-current" | ||
@echo "After all, you clean up by running 'make clean'" | ||
|
||
.PHONY: start-unleash | ||
start-unleash: | ||
@echo "Starting docker..." | ||
@UNLEASH_DOCKER_IMAGE=$(UNLEASH_DOCKER_IMAGE) docker compose up unleash -d | ||
@echo "Waiting for Unleash to be healthy at port $${EXPOSED_PORT:-4242}..." | ||
@while ! curl -s "http://localhost:$${EXPOSED_PORT:-4242}/health"; do sleep 0.1; done | ||
@echo "\n$(UNLEASH_DOCKER_IMAGE) is now running at http://localhost:$${EXPOSED_PORT:-4242}" | ||
|
||
.PHONY: start-another-unleash | ||
start-another-unleash: | ||
@echo "Starting docker..." | ||
@EXPOSED_PORT=$${EXPOSED_PORT:-4243} UNLEASH_DOCKER_IMAGE=$(UNLEASH_DOCKER_IMAGE) docker compose up db another-unleash -d | ||
@echo "Waiting for Unleash to be healthy at port $${EXPOSED_PORT:-4243}..." | ||
@while ! curl -s "http://localhost:$${EXPOSED_PORT:-4243}/health"; do sleep 0.1; done | ||
@echo "\n$(UNLEASH_DOCKER_IMAGE) is now running at http://localhost:$${EXPOSED_PORT:-4243}" | ||
|
||
.PHONY: start-db | ||
start-db: | ||
@echo "Starting docker..." | ||
@docker compose up db -d | ||
@echo "Waiting for DB to be healthy..." | ||
@sleep 3 | ||
@echo "\nDone waiting for DB to be healthy..." | ||
|
||
.PHONY: clean | ||
clean: | ||
@echo "Cleaning up docker..." | ||
@docker compose stop && docker compose rm -f |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters