Estoy intentando ejecutar el siguiente subst
comando para reemplazar una cadena /var/jenkins_home
con otra /srv/jenkins-slave-1/data
para que el valor HOST_LOG_DIR
cambie de /var/jenkins_home/workspace/ts_myapp_testing_integration-tests
a
/srv/jenkins-slave-1/data/workspace/ts_myapp_testing_integration-tests
pero cuando ejecuto el objetivo del archivo MAKE, substtest
el valor de HOST_LOG_FILE
permanece sin cambios (consulte la captura de pantalla).
WORKSPACE := "/var/jenkins_home/workspace/ts_myapp_testing_integration-tests"
JENKINS_HOME := "/var/jenkins_home"
JENKINS_HOME_HOST_PATH := "/srv/jenkins-slave-1/data"
HOST_LOG_DIR := $(subst $(JENKINS_HOME),$(JENKINS_HOME_HOST_PATH),$(WORKSPACE))
.PHONY: substtest, print_env
substtest: print_env
print_env:
@echo "WORKSPACE is ${WORKSPACE}"
@echo "JENKINS_HOME is ${JENKINS_HOME}"
@echo "JENKINS_HOME_HOST_PATH is ${JENKINS_HOME_HOST_PATH}"
@echo "HOST_LOG_DIR is ${HOST_LOG_DIR}"][1]][1]
Lo extraño es cuando lo reemplazo $(JENKINS_HOME)
con el valor de ruta real /var/jenkins_home
, es decir
HOST_LOG_DIR := $(subst /var/jenkins_home,$(JENKINS_HOME_HOST_PATH),$(WORKSPACE))
entonces funciona como se esperaba,
Necesito arreglar esto para que funcione sin la sustitución codificada.
Respuesta1
JENKINS_HOME := "/var/jenkins_home"
Deberíanocite los valores de las variables en Makefiles. Esto no es un shell, las comillas no son especiales de ninguna manera y no se eliminan.
WORKSPACE := /var/jenkins_home/workspace/ts_myapp_testing_integration-tests
JENKINS_HOME := /var/jenkins_home
JENKINS_HOME_HOST_PATH := /srv/jenkins-slave-1/data
HOST_LOG_DIR := $(subst $(JENKINS_HOME),$(JENKINS_HOME_HOST_PATH),$(WORKSPACE))