2016-07-10 1 views
1

私はGitlabでプライベートプロジェクトを作成しました。リポジトリからプロジェクトをダウンロードした後にプロジェクトを開始するための簡単なデプロイメントスクリプトを書き留めようとしています。 Ubuntuのbash環境を使ってスクリプトを実行します。プライベートキーを使用してGitlabからプライベートプロジェクトをダウンロードする方法

私は、単純なカールのコマンドを使用して公共事業と同じことをやった:

curl -fSL "https://gitlab.com/MyUsername/MyProject/repository/archive.zip?ref=master" -o project.zip 

answersがGitlabのユーザー名+パスワードまたはprivate_tokenを使用して、民間のプロジェクトのために同じことを行う方法を示すそこにありますし、 curlコマンド。しかし、私はGitlabで提供されている "デプロイメントキー"機能を使うことを好みます。

ssh-keygen -t rsa -C "$your_email" 

をそしてGitlabに私のプロジェクトのキーを展開する公開鍵ファイルをアップロードする:これまでのところ、私はそれがGitlab's documentationによって指示された通りやりました。私の質問は、私が私のプロジェクトの最新リビジョンをダウンロードしなければならない秘密鍵をどのように使用すればいいのですか? curlまたはscpなどを使用する必要がありますか?プロジェクトがグループに属する場合の例も含めてください。

答えて

2

SSH秘密鍵はHTTPS接続に使用できません。したがって、SSHで公開されているサービスを使用する必要があります。この場合は、git clone(または、既存のクローンがあれば理想的には、git fetchを増分更新することを意味します)、その後にgit archiveが続きます。それが最後の更新以降の変更のみを引っ張るので、あなたが作成した最初のクローン、git fetch、地元git archiveをやって持ったら

#!/bin/bash 
#  ^^^^-- /bin/bash, not /bin/sh, or the [[ ]] syntax isn't guaranteed to work 

# change or parameterize these 
[email protected]:group/repo.git 
repo_dir=/path/to/local-dir 
output_path=/path/to/archive.zip 

if [[ -d $repo_dir ]]; then 
    (cd "$repo_dir" && exec git fetch) || exit 
else 
    git clone "$repo_path" "$repo_dir" || exit 
fi 

# and to create the archive 
cd "$repo_dir" && git archive --format=zip -o "$output_path" origin/master 

は、実際にはより多くの帯域幅効率の良い全体のzipファイルをダウンロードするよりもです。


秘密鍵が~/.ssh/id_rsaとして保存されている場合は、自動的に使用されます。それ以外の場合は

Host gitlabhost.com # substituting the real hostname 
    User git # use the username "git" connecting to this host by default 
    IdentityFile /path/to/your/id_rsa # if not in the default location 
+0

のようなファイルエントリを作成するといいでしょうが、秘密鍵はどこで使用されていますか? – Mehran

+0

'〜/ .ssh/id_rsa'として保存されていれば、SSH経由でサーバーと通信するときには' git clone'と 'git fetch'によって自動的に使用されます(OpenSSHクライアントでは'git')。それ以外の場合は '〜/ .ssh/config'エントリを作成して' gitlabhost.com'に特定の鍵を守らせることができます。これらのコマンドはその設定ファイルを自動的に尊重します。 –

+0

... '〜/ .ssh/config'ファイルエントリの明示的な例を示すために、デフォルトではない' id_rsa'ファイルを指定するように編集しました。 –

関連する問題