[英]Gitlab pipeline deploy using rsync
I'm trying to deploy all the content of the current git repository (including branch and commit) and deploy that to a remote server using rsync.我正在尝试部署当前 git 存储库的所有内容(包括分支和提交)并使用 rsync 将其部署到远程服务器。
Now I have I gitlab-ci file that has the following content in it:现在我有一个 gitlab-ci 文件,其中包含以下内容:
image: ubuntu:18.04
.init_development_ssh: &init_development_ssh |
eval $(ssh-agent -s)
mkdir -p ~/.ssh
chmod 700 ~/.ssh
[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
ssh-add <(echo "$STAGING_PRIVATE_KEY")
.tag: &tag
tags:
- pixel-rp
stages:
- lint
- deploy
linting code:
# Use the LUA image
image: mhndev/docker-lua
<<: *tag
stage: lint
before_script:
- luarocks install luacheck
script: luacheck fx-server-data
allow_failure: true
deploy to testing:
<<: *tag
stage: deploy
before_script:
- apt -y update && apt -y upgrade && apt install -y openssh-client rsync sshpass
- *init_development_ssh
script:
- sshpass -p "$SSH_PASS" -e "ssh -p 2222" rsync -rav --exclude='.git/' --exclude='.gitlab-ci.yml' --delete-excluded /builds/pixel-rp/pixel-server/ user@IP:/home/user/FXServer/server-data/
The error I get is我得到的错误是
> Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters
-f filename Take password to use from file
-d number Use number as file descriptor for getting password
-p password Provide password as argument (security unwise)
-e Password is passed as env-var "SSHPASS"
With no parameters - password will be taken from stdin
-P prompt Which string should sshpass search for to detect a password prompt
-v Be verbose about what you're doing
-h Show help (this screen)
-V Print version information
At most one of -f, -d, -p or -e should be used
Conflicting password source
Now I'm not a linux expert, but the parameters that are "required" to keep in mind are the following:现在我不是 linux 专家,但要记住的“必需”参数如下:
Anyone who knows how I can take all the content (exclude some files) and "push" that to my remote server as "continious delivery"?任何知道我如何获取所有内容(不包括某些文件)并将其“推送”到我的远程服务器作为“连续交付”的人?
According to the manpage of sshpass , you can specify the password in the command line using the option -p
and tell sshpass to use the password from the environment variable SSHPASS
when using the option -e
.根据sshpass的联机帮助页,您可以使用选项
-p
在命令行中指定密码,并在使用选项-e
时告诉 sshpass 使用来自环境变量SSHPASS
的密码。
As you can only specify the password once but you used both options, sshpass does not know where to take the password from (from the command line or the environment variable) and therefor fails.由于您只能指定一次密码但同时使用了两个选项,因此 sshpass 不知道从哪里获取密码(从命令行或环境变量),因此失败。
The options -f
(to read from a file) and -d
(to read from a file descriptor) also can't be used in combination with any of the other options.选项
-f
(从文件中读取)和-d
(从文件描述符中读取)也不能与任何其他选项结合使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.