Sometimes you can't use Git over SSH in a project, hence you'll use HTTP (e.g. due to network constraints). I'm struggling to get this working, and I can't see any related information in our README.
My modulesync.yml looks like this:
---
git_base: https://gitlab.example.com/
branch: managed-update
The repository is private, hence I need to authenticate. It's not 100% clear how to do that properly (not taking hardcoding https://username:password@gitlab.example.com/ into consideration). The error I get is this one:
Syncing some/project
Cloning repository fresh
Cloning from https://gitlab.example.com/some/project.git
Error while updating some/project
/usr/local/bundle/gems/git-1.7.0/lib/git/lib.rb:989:in `command': git '-c' 'color.ui=false' clone '--' 'https://gitlab.example.com/some/project.git' 'modules/some/project' 2>&1:Cloning into 'modules/some/project'... (Git::GitExecuteError)
fatal: could not read Username for 'https://gitlab.example.com': No such device or address
from /usr/local/bundle/gems/git-1.7.0/lib/git/lib.rb:78:in `clone'
from /usr/local/bundle/gems/git-1.7.0/lib/git/base.rb:29:in `clone'
from /usr/local/bundle/gems/git-1.7.0/lib/git.rb:98:in `clone'
from /usr/local/bundle/gems/modulesync-2.0.0/lib/modulesync/git.rb:58:in `pull'
from /usr/local/bundle/gems/modulesync-2.0.0/lib/modulesync.rb:115:in `manage_module'
from /usr/local/bundle/gems/modulesync-2.0.0/lib/modulesync.rb:176:in `block in update'
from /usr/local/bundle/gems/modulesync-2.0.0/lib/modulesync.rb:173:in `each'
from /usr/local/bundle/gems/modulesync-2.0.0/lib/modulesync.rb:173:in `update'
from /usr/local/bundle/gems/modulesync-2.0.0/lib/modulesync/cli.rb:142:in `update'
from /usr/local/bundle/gems/thor-1.0.1/lib/thor/command.rb:27:in `run'
from /usr/local/bundle/gems/thor-1.0.1/lib/thor/invocation.rb:127:in `invoke_command'
from /usr/local/bundle/gems/thor-1.0.1/lib/thor.rb:392:in `dispatch'
from /usr/local/bundle/gems/thor-1.0.1/lib/thor/base.rb:485:in `start'
from /usr/local/bundle/gems/modulesync-2.0.0/bin/msync:8:in `<top (required)>'
from /usr/local/bundle/bin/msync:23:in `load'
from /usr/local/bundle/bin/msync:23:in `<main>'
Just for the sake of completeness, the setup uses the vshn/modulesync Docker image and roughly this CI configuration on GitLab:
update_repository:
image: vshn/modulesync:latest
variables:
GITLAB_BASE_URL: ${CI_SERVER_URL}
GITLAB_TOKEN: ${SECRET_TOKEN}
GIT_COMMITTER_NAME: Edda Example
GIT_COMMITTER_EMAIL: edda@example.com
script: msync --pr --pr-labels=managed-update --force
Note that the GITLAB_BASE_URL ad GITLAB_TOKEN is really just for creating the merge request (via GitLab's API).
Document how this shall be done
Using Git over HTTP is probably possible as an alternative.
If we want to suggest using a token for the normal Git operation we should explain how to do this in the README.
Sometimes you can't use Git over SSH in a project, hence you'll use HTTP (e.g. due to network constraints). I'm struggling to get this working, and I can't see any related information in our README.
My
modulesync.ymllooks like this:The repository is private, hence I need to authenticate. It's not 100% clear how to do that properly (not taking hardcoding
https://username:password@gitlab.example.com/into consideration). The error I get is this one:Just for the sake of completeness, the setup uses the vshn/modulesync Docker image and roughly this CI configuration on GitLab:
Note that the
GITLAB_BASE_URLadGITLAB_TOKENis really just for creating the merge request (via GitLab's API).Document how this shall be done
Using Git over HTTP is probably possible as an alternative.
If we want to suggest using a token for the normal Git operation we should explain how to do this in the README.