我是新手,我开始使用GitlabCICD。
我的项目目录中有docker-compose.yml。我想使用scp命令将其上传到远程服务器,以便可以使用docker-compose up部署远程服务器。我成功地将SSH远程服务器了。
这就是我到目前为止所得到的。
在gitlab-ci.yml中,我有
image: docker:19
services:
- docker:dind
stages:
- build
- package
- deploy
cache:
paths:
- .m2/repository
variables:
MAVEN_OPTS: "-Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository"
maven-build:
image: maven:3-jdk-8
stage: build
script: "mvn package -B"
artifacts:
paths:
- target/*.jar
docker-build:
stage: package
script:
- docker version
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker pull $CI_REGISTRY_IMAGE:latest || true
- docker build --cache-from $CI_REGISTRY_IMAGE:latest --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA --tag $CI_REGISTRY_IMAGE:latest .
- docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
- docker push $CI_REGISTRY_IMAGE:latest
deploy:
stage: deploy
variables:
GIT_STRATEGY: none
only:
- master
before_script:
- apk update && apk add openssh-client bash
script:
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
- echo "$PATH_TO_PROJECT"
- mkdir -p ~/.ssh
- ssh-keyscan -H $SSH_SERVER_IP >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
- scp -o StrictHostKeyChecking=no docker-compose.yml $SSH_USER@$SSH_SERVER_IP:${PATH_TO_PROJECT};
- ssh $SSH_USER@$SSH_SERVER_IP
"docker login -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD} ${CI_REGISTRY} &&
cd ${PATH_TO_PROJECT} && docker-compose down && docker pull ${CI_REGISTRY_IMAGE}:latest && docker-compose up -d && docker image prune -f"
问题是,尽管我的项目目录中有docker-compose.yml,但在行scp -o StrictHostKeyChecking=no docker-compose.yml $SSH_USER@$SSH_SERVER_IP:${PATH_TO_PROJECT};
上,“ docker-compose.yml没有这样的文件或目录”会发生错误。
我尝试使用echo "$PATH_TO_PROJECT" && cd $PATH_TO_PROJECT
,但发生错误“无法CD到...没有这样的文件或目录”。
这是我的项目:
我该如何解决?