Skip to content
Snippets Groups Projects
Select Git revision
  • master
  • cvh
  • main
3 results

test.cc

Blame
  • basic.mk 2.21 KiB
    # Configuration
    
    ## Server
    SERVER_USER := mmustermann
    SERVER_HOST := hyrican-1-extern
    
    ## Python Environment
    SERVER_CONDA_PATH := /opt/conda
    SERVER_CONDA_ENV := ~/envs/ml
    PYTHON_VERSION := 3.10
    PYTHON_PACKAGES := tensorflow-cpu ipympl mypy jupyter pystan \
    	matplotlib seaborn scikit-learn openpyxl odfpy pyarrow \
    	geopandas descartes pyogrio optuna plotly tqdm spyder \
    	jax-jumpy moviepy shimmy-atari gymnasium-box2d \
    	ipywidgets notebook lxml fastparquet zstandard \
    	contextily networkx pyvis netgraph keras pip
    
    ## Project Paths
    LOCAL_PROJECT_DIR := .
    REMOTE_PROJECT_DIR := ~/akis/my_project
    
    ## Project Files
    MAIN_SCRIPT := main.py
    LOG_FILE := progress.log
    
    ## File Transfer
    LOCAL_UPLOAD_FILES := main.py scripts data/*.pkl
    LOCAL_DOWNLOAD_DIR := output
    REMOTE_DOWNLOAD_FILES := output/*.svg output/*.pkl
    
    ## Misc
    COPY_LINKS_AS_FILES := false
    
    # ---
    
    LOGIN := $(SERVER_USER)@$(SERVER_HOST)
    SSH := ssh $(LOGIN)
    RSYNC := rsync --archive --compress --progress $(if $(filter true,$(COPY_LINKS_AS_FILES)),--copy-links)
    MAMBA := source $(SERVER_CONDA_PATH)/etc/profile.d/conda.sh && mamba # TODO: mamba.sh
    CONDA := source $(SERVER_CONDA_PATH)/etc/profile.d/conda.sh && conda
    
    .PHONY: install upload run kill log download delete
    
    help: # list targets and usage
    	@awk '/^[a-zA-Z0-9_-]+:/{print $1}' makefile
    
    install: # install conda environment
    	$(SSH) '\
    		$(MAMBA) create -p $(SERVER_CONDA_ENV) python=$(PYTHON_VERSION) $(PYTHON_PACKAGES)\
    	'
    
    upload: # upload project files from client to server
    	$(RSYNC) --relative $(foreach file,$(LOCAL_UPLOAD_FILES),$(LOCAL_PROJECT_DIR)/$(file)) $(LOGIN):$(REMOTE_PROJECT_DIR)
    
    run: # execute main script on server
    	$(SSH) '\
    		cd $(REMOTE_PROJECT_DIR);\
    		$(CONDA) activate $(SERVER_CONDA_ENV);\
    		python $(MAIN_SCRIPT);\
    		$(CONDA) deactivate;\
    	'
    
    kill: # terminate the running script on the server
    	$(SSH) '\
    		pkill -f $(MAIN_SCRIPT)\
    	'
    
    log: # show the last lines of the log file
    	$(SSH) '\
    		cd $(REMOTE_PROJECT_DIR) && tail -f $(LOG_FILE)\
    	'
    
    download: # download output files from server to client
    	$(RSYNC) $(LOGIN):$(REMOTE_PROJECT_DIR)/$(REMOTE_DOWNLOAD_FILES) $(LOCAL_PROJECT_DIR)/$(LOCAL_DOWNLOAD_DIR)
    
    delete: # remove/delete all project files on server
    	$(SSH) '\
    		rm -rf $(REMOTE_PROJECT_DIR)\
    	'