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.
Now I have I gitlab-ci file that has the following content in it:
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:
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
.
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.
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.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.