我有一个Spring Boot应用程序推送到gitlab,并且我正在尝试编写一个脚本,以使用gitlab-ci.yml将此应用程序部署到远程服务器。以下是文件的内容:
image: maven:3-jdk-8
services:
- docker:dind
## Path to store maven dependencies
cache:
paths:
- .m2/
stages:
- build
- deploy
build:
stage: build
# script to test and create war file - app.war
deploy:
stage: deploy
dependencies:
- build
script:
- "#!/bin/sh"
- chmod og= $PRODUCTION_SERVER_PASSWORD
- scp -i "$PRODUCTION_SERVER_PASSWORD" -o StrictHostKeyChecking=no target/app.war $PRODUCTION_SERVER_USER@$PRODUCTION_SERVER:/home/ubuntu/wars
- ssh -i "$PRODUCTION_SERVER_PASSWORD" -o StrictHostKeyChecking=no $PRODUCTION_SERVER_USER@$PRODUCTION_SERVER mysqldump -u ubuntu -p$MYSQL_PASSWORD app > /home/ubuntu/dumps/app.sql;
# rest of the script to deploy the application
environment:
name: production
url: <server-url>
when: manual
在部署之前,我试图将现有数据库app
的备份放入文件app.sql
中。但是当我触发deploy
阶段时,它在行上失败
- ssh -i "$PRODUCTION_SERVER_PASSWORD" -o StrictHostKeyChecking=no $PRODUCTION_SERVER_USER@$PRODUCTION_SERVER mysqldump -u ubuntu -p$MYSQL_PASSWORD app > /home/ubuntu/dumps/app.sql;
该错误表示类似这样的内容:
/ bin / bash:第95行:/home/ubuntu/dumps/app.sql:否 这样的文件或目录
当然,目前没有这样的文件app.sql
。但是,目录/home/ubuntu/dumps
存在,并且我试图在此目录中创建此文件app.sql。当我直接在服务器上运行mysqldump
时,它可以正常工作,但会导致gitlab-ci错误。任何有关如何进行数据库备份的想法/指针将不胜感激。谢谢。