# Incluir las variables de entorno mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST))) root_dir := $(patsubst %/,%,$(dir $(mkfile_path))) include $(root_dir)/.env assets := package.json yarn.lock $(shell find app/assets/ app/javascript/ -type f) public/assets-production: $(assets) rm -rf $@ RAILS_ENV=production bundle exec rake assets:precompile mv public/assets $@ find $@ -type f -name "*.gz" | sed -re "s/\.gz$$//" | xargs -r brotli -k -9 public/packs-production: public/packs rm -rf $@ mv $< $@ find $@ -type f | xargs -r brotli -k -9 mkdir -p $< touch $@ assets: public/assets-production public/packs-production serve: bundle exec rails s -b "ssl://0.0.0.0:3000?key=config/sutty.local.key&cert=config/sutty.local.crt" # Limpiar los archivos de testeo clean: rm -rf _sites/test-* _deploy/test-* # Generar la imagen Docker build: assets time docker build --build-arg="RAILS_MASTER_KEY=`cat config/master.key`" -t sutty/sutty . save: time docker save sutty/sutty:latest | gzip | ssh root@sutty.nl docker load load: ssh root@sutty.nl sh -c "gunzip -c sutty.latest.gz | docker load" # Crear el directorio donde se almacenan las gemas binarias ../gems/: mkdir -p $@ ifeq ($(MAKECMDGOALS),convert-gems) gem_dir := $(shell readlink -f ../gems) gems := $(shell bundle show --paths | xargs -I {} sh -c 'test -f {}/ext/*/extconf.rb && basename {}') gems += $(shell bundle show --paths | xargs -I {} sh -c 'test -f {}/ext/extconf.rb && basename {}') gems := $(patsubst %-x86_64-linux,%,$(gems)) gems_musl := $(patsubst %,$(gem_dir)/%-x86_64-linux-musl.gem,$(gems)) gems_gnu := $(patsubst %,$(gem_dir)/%-x86_64-linux.gem,$(gems)) endif $(gem_dir)/%-x86_64-linux-musl.gem: docker run \ -v $(gem_dir):/srv/gems \ -v `readlink -f ~/.ccache`:/home/builder/.ccache \ -e HTTP_BASIC_USER=$(HTTP_BASIC_USER) \ -e HTTP_BASIC_PASSWORD=$(HTTP_BASIC_PASSWORD) \ -e GEM=`echo $* | sed -re "s/-[^-]+$$//"` \ -e VERSION=`echo $* | sed -re "s/.*-([^-]+)$$/\1/"` \ -e JOBS=2 \ --rm \ sutty/gem-compiler:latest $(gem_dir)/%-x86_64-linux.gem: HTTP_BASIC_USER=$(HTTP_BASIC_USER) \ HTTP_BASIC_PASSWORD=$(HTTP_BASIC_PASSWORD) \ GEM=`echo $* | sed -re "s/-[^-]+$$//"` \ VERSION=`echo $* | sed -re "s/.*-([^-]+)$$/\1/"` && \ cd $(dir $@) && \ gem fetch --source=https://gems.sutty.nl --platform=ruby \ --version $${VERSION} $${GEM} && \ gem compile -V --prune $${GEM}-$${VERSION}.gem && \ gem inabox -o $@ \ --host https://$${HTTP_BASIC_USER}:$${HTTP_BASIC_PASSWORD}@gems.sutty.nl # Compilar todas las gemas binarias y subirlas a gems.sutty.nl para que # al crear el contenedor no tengamos que compilarlas cada vez convert-gems: $(gems_musl) dirs := $(patsubst %,root/%,data sites deploy public) $(dirs): mkdir -p $@ test-container: $(dirs) docker run -v $(PWD)/root/data:/srv/http/data \ -v $(PWD)/root/sites:/srv/http/_sites \ -v $(PWD)/root/deploy:/srv/http/_deploy \ -v $(PWD)/root/public:/srv/http/_public \ -v $(PWD)/config/credentials.yml.enc:/srv/http/config/credentials.yml.enc \ -e RAILS_MASTER_KEY=`cat config/master.key` \ -e RAILS_ENV=production \ -it \ --rm \ --name=sutty \ sutty/sutty /bin/sh