Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 1 addition & 5 deletions .env.sample
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,10 @@ UPLOADS_FILE_STORAGE=django.core.files.storage.FileSystemStorage
CIRRUS_REMOTE_SETTING_REFRESH_RATE_IN_SECONDS=10
CIRRUS_REMOTE_SETTING_URL=http://kinto:8888/v1/buckets/main/collections/nimbus-web-experiments/records
CIRRUS_REMOTE_SETTING_PREVIEW_URL=http://kinto:8888/v1/buckets/main-workspace/collections/nimbus-web-preview/records
CIRRUS_APP_ID=demo-app-beta
CIRRUS_APP_NAME=demo_app
CIRRUS_CHANNEL=beta
CIRRUS_FML_PATH=./feature_manifest/sample.yml
CIRRUS_SENTRY_DSN=
CIRRUS_SENTRY_TRACES_SAMPLE_RATE=1
CIRRUS_SENTRY_PROFILES_SAMPLE_RATE=1
CIRRUS_INSTANCE_NAME=
CIRRUS_ENV_NAME=test_instance_stage
CIRRUS_GLEAN_MAX_EVENTS_BUFFER=20
CIRRUS_URL=http://cirrus-experimenter:8001/v2/features/
CIRRUS_URL=http://cirrus:8001/v2/features/
52 changes: 19 additions & 33 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,6 @@ COMPOSE_LEGACY = ${COMPOSE} -f docker-compose-legacy.yml
COMPOSE_TEST = docker compose -f docker-compose-test.yml
COMPOSE_TEST_RUN = ${COMPOSE_TEST} run --name experimenter_test
COMPOSE_PROD = docker compose -f docker-compose-prod.yml $$(${COMPOSE_CIRRUS})
COMPOSE_INTEGRATION = ${COMPOSE_PROD} -f docker-compose-integration-test.yml $$(${COMPOSE_CIRRUS})
COMPOSE_INTEGRATION_RUN = ${COMPOSE_INTEGRATION} run --name experimenter_integration
DOCKER_BUILD = docker buildx build

WORKFLOW := build
EPOCH_TIME := $(shell date +"%s")
Expand Down Expand Up @@ -111,42 +108,30 @@ fetch_external_resources: jetstream_config install_nimbus_cli feature_manifests
update_kinto: ## Update latest Kinto/Remote Settings container
docker pull mozilla/kinto-dist:latest

compose_build: ## Build containers
$(COMPOSE) build

build_megazords:
$(DOCKER_BUILD) -f application-services/Dockerfile -t experimenter:megazords application-services/

update_application_services: build_megazords
update_application_services:
docker bake megazords
docker run \
-v ./application-services/application-services.env:/application-services/application-services.env \
experimenter:megazords \
/application-services/update-application-services.sh

build_dev: ssl build_megazords
$(DOCKER_BUILD) --target dev -f experimenter/Dockerfile -t experimenter:dev experimenter/
build_dev: ssl
docker bake default

build_integration_test: ssl build_megazords
$(DOCKER_BUILD) -f experimenter/tests/integration/Dockerfile -t experimenter:integration-tests experimenter/
build_integration_test: ssl
docker bake integration-tests

build_test: ssl build_megazords
$(DOCKER_BUILD) --target test -f experimenter/Dockerfile -t experimenter:test experimenter/
build_test: ssl
docker bake experimenter-test

build_ui: ssl
$(DOCKER_BUILD) --target ui -f experimenter/Dockerfile -t experimenter:ui experimenter/

build_prod: ssl build_megazords
$(DOCKER_BUILD) --target deploy -f experimenter/Dockerfile -t experimenter:deploy experimenter/
build_prod: ssl
docker bake prod

compose_stop:
$(COMPOSE) kill || true
$(COMPOSE_INTEGRATION) kill || true
$(COMPOSE_PROD) kill || true
$(COMPOSE) --profile dev --profile prod --profile integration-tests kill || true

compose_rm:
$(COMPOSE) rm -f -v || true
$(COMPOSE_INTEGRATION) rm -f -v || true
$(COMPOSE_PROD) rm -f -v || true
$(COMPOSE) --profile dev --profile prod --profile integration-tests rm -f -v || true

docker_prune:
docker container prune -f
Expand Down Expand Up @@ -183,10 +168,11 @@ check_and_report: build_test ## Only to be used on CI

test: build_test ## Run tests
$(COMPOSE_TEST_RUN) experimenter sh -c '$(WAIT_FOR_DB) $(PYTHON_TEST)'

pytest: test

start: build_dev ## Start containers
$(COMPOSE) up
start: build_dev ## Start containers
$(COMPOSE) --profile dev up

up: start

Expand Down Expand Up @@ -227,7 +213,7 @@ migrate: build_dev ## Run database migrations
bash: build_dev
$(COMPOSE_RUN) experimenter bash

refresh: kill build_dev compose_build refresh_db ## Rebuild all containers and the database
refresh: kill build_dev refresh_db ## Rebuild all containers and the database

refresh_db: # Rebuild the database
$(COMPOSE_RUN) -e SKIP_DUMMY=$$SKIP_DUMMY experimenter bash -c '$(WAIT_FOR_DB) $(PYTHON_MIGRATE)&&$(LOAD_LOCALES)&&$(LOAD_COUNTRIES)&&$(LOAD_LANGUAGES)&&$(LOAD_FEATURES)&&$(LOAD_DUMMY_EXPERIMENTS)'
Expand Down Expand Up @@ -282,13 +268,13 @@ CIRRUS_GENERATE_DOCS = python cirrus/generate_docs.py
CIRRUS_COVERAGE_JSON := $(TEST_RESULTS_DIR)/$(TEST_FILE_PREFIX)unit__coverage.json
CIRRUS_JUNIT_XML := $(TEST_RESULTS_DIR)/$(TEST_FILE_PREFIX)integration__results.xml

cirrus_build: build_megazords
cirrus_build:
$(CIRRUS_ENABLE) $(DOCKER_BUILD) --target deploy -f cirrus/server/Dockerfile -t cirrus:deploy --build-context=fml=experimenter/experimenter/features/manifests/ cirrus/server/

cirrus_build_dev: build_megazords
cirrus_build_dev:
$(CIRRUS_ENABLE) $(DOCKER_BUILD) --target dev -f cirrus/server/Dockerfile -t cirrus:dev --build-context=fml=experimenter/experimenter/features/manifests/ cirrus/server/

cirrus_build_test: build_megazords
cirrus_build_test:
$(CIRRUS_ENABLE) $(COMPOSE_TEST) build cirrus

cirrus_bash: cirrus_build_dev
Expand Down
12 changes: 6 additions & 6 deletions cirrus/server/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@ FROM python-builder AS dev
WORKDIR /cirrus

# Copy specific Rust components
COPY --from=experimenter:megazords /application-services/megazords/cirrus/libcirrus.so /application-services/libcirrus.so
COPY --from=experimenter:megazords /application-services/megazords/cirrus/cirrus.py /application-services/cirrus_sdk.py
COPY --from=experimenter:megazords /application-services/megazords/cirrus/fml.py /application-services/fml_sdk.py
COPY --from=megazords /application-services/megazords/cirrus/libcirrus.so /application-services/libcirrus.so
COPY --from=megazords /application-services/megazords/cirrus/cirrus.py /application-services/cirrus_sdk.py
COPY --from=megazords /application-services/megazords/cirrus/fml.py /application-services/fml_sdk.py

ENV PYTHONPATH=$PYTHONPATH:/application-services

Expand Down Expand Up @@ -68,9 +68,9 @@ RUN groupadd --gid $USER_GID $USERNAME \
WORKDIR /cirrus

# Copy specific Rust components
COPY --from=experimenter:megazords /application-services/megazords/cirrus/libcirrus.so /application-services/libcirrus.so
COPY --from=experimenter:megazords /application-services/megazords/cirrus/cirrus.py /application-services/cirrus_sdk.py
COPY --from=experimenter:megazords /application-services/megazords/cirrus/fml.py /application-services/fml_sdk.py
COPY --from=megazords /application-services/megazords/cirrus/libcirrus.so /application-services/libcirrus.so
COPY --from=megazords /application-services/megazords/cirrus/cirrus.py /application-services/cirrus_sdk.py
COPY --from=megazords /application-services/megazords/cirrus/fml.py /application-services/fml_sdk.py

# Copy Python site packages and scripts
COPY --from=python-builder /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages
Expand Down
2 changes: 2 additions & 0 deletions cirrus/server/cirrus/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -303,6 +303,8 @@ async def compute_features_enrollments_v2(


async def fetch_schedule_recipes() -> None:
print("fetch_schedule_recipes")

live_failed = False
preview_failed = False

Expand Down
101 changes: 101 additions & 0 deletions docker-bake.hcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
group "default" {
targets = ["experimenter-dev", "experimenter-deploy", "cirrus-deploy", "nginx"]
}

group "prod" {
targets = ["experimenter-deploy", "cirrus-deploy", "nginx"]
}

group "integration-tests" {
targets = ["default", "rust-sdk"]
}

group "cirrus" {
targets = ["cirrus-deploy", "cirrus-dev"]
}

group "demo" {
targets = ["demo-app-frontend", "demo-app-backend"]
}

target "megazords" {
context = "./application-services"

tags = ["experimenter:megazords"]
}

target "experimenter" {
matrix = {
item = [
{
build_target = "deploy"
},
{
build_target = "dev"
},
{
build_target = "test"
}
]
}

tags = ["experimenter:${item.build_target}"]
name = "experimenter-${item.build_target}"

context = "./experimenter"
target = "dev"

contexts = {
megazords = "target:megazords"
}
}

target "cirrus" {
matrix = {
item = [
{
build_target = "deploy"
},
{
build_target = "dev"
}
]
}

name = "cirrus-${item.build_target}"
tags = ["cirrus:${item.build_target}"]

context = "./cirrus/server"
target = "deploy"
contexts = {
fml = "./experimenter/experimenter/features/manifests/"
megazords = "target:megazords"
}
}

target "nginx" {
tags = ["experimenter:nginx"]

context = "./nginx"
}

target "rust-sdk" {
tags = ["experimenter:integration-tests"]

context = "./experimenter/tests/integration"
contexts = {
megazords = "target:megazords"
}
}

target "demo-app-backend" {
tags = ["demo-app:backend"]

context = "./demo-app/server"
}

target "demo-app-frontend" {
tags = ["demo-app:frontend"]

context = "./demo-app/frontend"
}
42 changes: 0 additions & 42 deletions docker-compose-cirrus.yml

This file was deleted.

44 changes: 0 additions & 44 deletions docker-compose-integration-test.yml

This file was deleted.

18 changes: 0 additions & 18 deletions docker-compose-legacy.yml

This file was deleted.

Loading