.gitlab-ci.yml
파일을 설정할 때 문제가 있습니다. 이전 커밋을 지우고 싶습니다. 따라서 (Debian) 서버에서 최신 커밋과 이전 커밋 만 사용할 수 있습니다. 커밋이 제대로 전환되지만, 이전 폴더에 유지하고있는 경우, 그러나 rm -rf $(readlink <link>)
Gitlab CI 스크립트의 심볼릭 링크 대상을 삭제하는 방법은 무엇입니까?
으로 삭제되지 않습니다 - 어떤 이유로, 스크립트가 실행될 때, 그것은 예상대로 작동하지 않습니다를 들어
동일한 SSH 서버에서 동일한 사용자와 동일한 단계를 수행하면rm -rf $(readlink <link>)
은 실제 symlink 대상 (예상되는 동작)을 성공적으로 삭제합니다. CI 스크립트에서 동일한 작업을 수행하면 대상이 삭제되지 않습니다.
어쩌면 일부 변수가 빠져 나오거나 괄호가 필요하지 않습니까?
이 내 (트리밍) .gitlab-ci.yml
파일입니다
variables:
SSH_USER: "[email protected]"
PROJECT_DIR: "/domains/example.com/project-name"
DEPLOY_DIR: "${PROJECT_DIR}/deploy"
STAGING_TEMP_DIR: "${PROJECT_DIR}/staging-temp"
# is this correct?
DELETE_STAGING_TEMP: "'$$(readlink -f ${STAGING_TEMP_DIR})'"
stages:
- build
- deploy
- post-deploy
Post Deploy staging:
stage: post-deploy
script:
# switch last version
- ssh $SSH_USER mv ${PROJECT_DIR}/staging-previous ${STAGING_TEMP_DIR} || true
- ssh $SSH_USER mv ${PROJECT_DIR}/staging-latest ${PROJECT_DIR}/staging-previous || true
- ssh $SSH_USER rm -rf ${DELETE_STAGING_TEMP}
- ssh $SSH_USER unlink ${STAGING_TEMP_DIR} || true
- ssh $SSH_USER ln -s ${DEPLOY_DIR}/${CI_COMMIT_REF_NAME}/${CI_COMMIT_SHA} ${PROJECT_DIR}/staging-latest
내가이 변형을 시도 :
variables:
SSH_USER: "[email protected]"
PROJECT_DIR: "/domains/example.com/project-name"
DEPLOY_DIR: "${PROJECT_DIR}/deploy"
STAGING_TEMP_DIR: "${PROJECT_DIR}/staging-temp"
Post Deploy staging:
stage: post-deploy
script:
# switch last version
- ssh $SSH_USER mv ${PROJECT_DIR}/staging-previous ${STAGING_TEMP_DIR} || true
- ssh $SSH_USER mv ${PROJECT_DIR}/staging-latest ${PROJECT_DIR}/staging-previous || true
# is this correct?
- ssh $SSH_USER rm -rf "$(readlink -f ${STAGING_TEMP_DIR})"
- ssh $SSH_USER unlink ${STAGING_TEMP_DIR} || true
- ssh $SSH_USER ln -s ${DEPLOY_DIR}/${CI_COMMIT_REF_NAME}/${CI_COMMIT_SHA} ${PROJECT_DIR}/staging-latest
그냥 참고 : ${PROJECT_DIR}/staging-previous
및 ${PROJECT_DIR}/staging-latest
커밋하는 심볼릭 링크입니다.
비슷한 문제가있는 사람이 있습니까? 또는 오래된 (더 이상 필요하지 않은) 커밋을 삭제하는 다른 방법을 사용합니까?