chore: make release — образы в реестр по умолчанию, архив по out=file
- out=registry (по умолчанию): release зависит от push, в build/<ver>/ — только compose, .env и README с docker compose pull. - out=file: как раньше — образы и rabbitmq/redis/postgres в .tar.gz. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
0e10fb671d
commit
9d616e1f4f
2 files changed
+22
-10
No files matched your search
@@ -45,7 +45,8 @@ help:
|
||||
@echo "make clean - удалить $(WHEELS_DIR)/"
|
||||
@echo "make build [ver=latest] - собрать образы $(API_IMAGE):<ver> и $(WORKER_IMAGE):<ver>"
|
||||
@echo "make push ver=<ver> - собрать образы и отправить в $(REGISTRY)"
|
||||
@echo "make release ver=<ver> - собрать образы и пакет для деплоя в build/<ver>/ (compose, .env, образы .tar.gz)"
|
||||
@echo "make release ver=<ver> [out=registry|file] - собрать образы и пакет для деплоя в build/<ver>/ (compose, .env);"
|
||||
@echo " образы: registry — push в $(REGISTRY) (по умолчанию), file — архив .tar.gz"
|
||||
@echo "make up - собрать и запустить локально: api, worker, rabbitmq, redis"
|
||||
@echo "make down - остановить локальный стенд"
|
||||
@echo "make logs - логи api и worker"
|
||||
@@ -158,33 +159,43 @@ test-browser: build
|
||||
xvfb-run -a --server-args="-screen 0 1920x1080x24" python -m pytest -m browser -p no:cacheprovider -s'
|
||||
|
||||
RELEASE_DIR := build/$(ver)
|
||||
# куда деваются образы при make release: registry — push в $(REGISTRY), file — архив .tar.gz в $(RELEASE_DIR)/
|
||||
out ?= registry
|
||||
|
||||
ifneq ($(filter release push,$(MAKECMDGOALS)),)
|
||||
ifeq ($(ver),latest)
|
||||
$(error Укажите версию: make release ver=v0.0.2)
|
||||
endif
|
||||
ifeq ($(filter $(out),registry file),)
|
||||
$(error out=registry или out=file, а не "$(out)")
|
||||
endif
|
||||
endif
|
||||
|
||||
release: build
|
||||
@echo "make release $(ver) -> $(RELEASE_DIR)/"
|
||||
ifeq ($(out),file)
|
||||
RELEASE_RUN := docker load -i robotex-$(ver).tar.gz
|
||||
else
|
||||
RELEASE_RUN := docker compose pull
|
||||
endif
|
||||
|
||||
release: $(if $(filter file,$(out)),build,push)
|
||||
@echo "make release $(ver) [out=$(out)] -> $(RELEASE_DIR)/"
|
||||
@mkdir -p $(RELEASE_DIR)
|
||||
sed -e 's|image: .*$(API_IMAGE):.*|image: $(REGISTRY)/$(API_IMAGE):$(ver)|' \
|
||||
-e 's|image: .*$(WORKER_IMAGE):.*|image: $(REGISTRY)/$(WORKER_IMAGE):$(ver)|' \
|
||||
docker-compose.prod.yml > $(RELEASE_DIR)/docker-compose.yml
|
||||
cp dot_env $(RELEASE_DIR)/.env
|
||||
ifeq ($(out),file)
|
||||
# сторонние образы (rabbitmq, redis, postgres) кладутся в архив; при out=registry сервер берёт их с Docker Hub
|
||||
for img in $(DEPS_IMAGES); do docker image inspect $$img >/dev/null 2>&1 || docker pull $$img; done
|
||||
# TODO: я хочу парамтером управлять сохранить в файл или отправить в свой реджестри
|
||||
# if produce == file:
|
||||
docker tag $(API_IMAGE):$(ver) $(REGISTRY)/$(API_IMAGE):$(ver)
|
||||
docker tag $(API_IMAGE):$(ver) $(REGISTRY)/$(API_IMAGE):$(ver)
|
||||
docker tag $(WORKER_IMAGE):$(ver) $(REGISTRY)/$(WORKER_IMAGE):$(ver)
|
||||
docker save $(REGISTRY)/$(API_IMAGE):$(ver) $(REGISTRY)/$(WORKER_IMAGE):$(ver) $(DEPS_IMAGES) | gzip > $(RELEASE_DIR)/robotex-$(ver).tar.gz
|
||||
# else:
|
||||
# docker push docker.sokolab.xyz/$(API_IMAGE):$(ver) docker.sokolab.xyz/$(WORKER_IMAGE):$(ver) docker.sokolab.xyz/$(DEPS_IMAGES)
|
||||
endif
|
||||
@printf '%s\n' \
|
||||
'# Robotex $(ver)' \
|
||||
'' \
|
||||
'```bash' \
|
||||
'docker load -i robotex-$(ver).tar.gz' \
|
||||
'$(RELEASE_RUN)' \
|
||||
'docker compose up -d' \
|
||||
'```' \
|
||||
'' \
|
||||
|
||||
@@ -204,7 +204,8 @@ Releases:
|
||||
|
||||
```bash
|
||||
make build ver=v0.1.0 # docker images robotex-api:v0.1.0 and robotex-worker:v0.1.0
|
||||
make release ver=v0.1.0 # images + deploy bundle in build/v0.1.0/ (compose, .env, images .tar.gz)
|
||||
make release ver=v0.1.0 # push images to docker.sokolab.xyz + deploy bundle in build/v0.1.0/ (compose, .env)
|
||||
make release ver=v0.1.0 out=file # same, but images go to build/v0.1.0/robotex-v0.1.0.tar.gz instead of the registry
|
||||
```
|
||||
|
||||
Details (Xvfb, tini, `/dev/shm`, env settings, load measurements) — [docs/Deployment.md](docs/Deployment.md).
|
||||
Reference in new issue
Block a user