Jenkins/git連携
提供: 初心者エンジニアの簡易メモ
jenkinsにgitを入れる
$ wget -O jenkins-cli.jar http://localhost:8080/jnlpJars/jenkins-cli.jar $ java -jar jenkins-cli.jar -s http://localhost:8080 install-plugin git $ java -jar jenkins-cli.jar -s http://localhost:8080 safe-restart $ rm jenkins-cli.jar $ /etc/rc.d/init.d/jenkins restart $ cd /var/lib/jenkins/.ssh $ sudo -u jenkins -H ssh-keygen -t rsa -C jenkins@example.jp $ chmod 700 ../.ssh
githubのときはこちらも
$ sudo -u jenkins ssh -T git@github.com $ sudo -u jenkins git config --global user.email "jenkins@example.jp" $ sudo -u jenkins git config --global user.name "jenkins"
以下エラーが出るとき
ERROR: Error cloning remote repo 'origin'
jenkins側サーバの
vi /var/lib/jenkins/.ssh/id_rsa.pub
をgit側サーバの
vi /home/[user1]/.ssh/authorized_keysに追加
- 一度jenkinsユーザでssh接続
sudo -u jenkins ssh user1@server1
管理画面設定(git
- リポジトリURLにssh://[uname]@[localhost]/var/git/[repo1].git
- Branches to buildをmasterに
管理画面設定(github
- リポジトリURLにssh://git@github.com/[uname]/[repo1].git
- Branches to buildをmasterに
テンプレ配信
- 管理画面でビルド/シェル実行を追加し
- 以下を追加
sh /var/lib/jenkins/deploy/deploy.sh
- rsyncのsshのnoパス設定追加
- 一度jenkinsユーザでssh接続
sudo -u jenkins ssh user1@server1
例:fuelphp
- /var/lib/jenkins/deploy/deploy.sh
#!/bin/bash
DIR=$(cd $(dirname $0);pwd)
SERVERS="user1@127.0.0.2 user1@127.0.0.2"
SERVER_DIR=/var/www/fuelphp/project1
EXCLUDE=$DIR/conf/exclude.conf
GIT_REPO_DIR=/var/lib/jenkins/jobs/project1_deploy/workspace/
if [ `whoami` != "jenkins" ]; then
echo "It is not jenkins user. Please run with jenkins user."
exit
fi
echo "*****************************************************************"
echo 'timestamp set'
for FILE in `git ls-files`; do
if fuel/app/views|fuel/app/themes ; then
TIME=`git log --pretty=format:%ci -n1 $FILE`
echo $TIME'\t'$FILE
STAMP=`date -d "$TIME" +"%y%m%d%H%M.%S"`
touch -t $STAMP $FILE
fi
done
#echo "*****************************************************************"
#echo 'dry-run exec'
#for SERVER in $SERVERS; do
# echo "-${SERVER}---------------------------------------"
# echo "rsync --dry-run -avuz --exclude-from=${EXCLUDE} ${GIT_REPO_DIR} ${SERVER}::${SERVER_DIR} --links --delete-after"
# rsync --dry-run -avuz --exclude-from=${EXCLUDE} ${GIT_REPO_DIR} ${SERVER}::${SERVER_DIR} --links --delete-after| grep -v /$
#done
echo "*****************************************************************"
echo 'deploy exec'
for SERVER in $SERVERS; do
echo "-${SERVER}---------------------------------------"
echo `date` >> $LOG_FILE_RSYNC
echo "rsync -avuz --exclude-from=${EXCLUDE} ${GIT_REPO_DIR} ${SERVER}::${SERVER_DIR} --links --delete-after"
rsync -avuz --exclude-from=${EXCLUDE} ${GIT_REPO_DIR} ${SERVER}::${SERVER_DIR} --links --delete-after| grep -v /$
done
echo 'deploy completed!!'
- /var/lib/jenkins/deploy/conf/exclude.conf
*.tmp logs .gitmodules CHANGELOG.md CONTRIBUTING.md README.md TESTING.md composer.json composer.lock composer.phar public/index.php fuel/vendor fuel/packages fuel/core fuel/app/vendor fuel/app/migrations fuel/app/config fuel/app/classes fuel/LICENSE fuel/.htaccess oil fuel/app/tasks fuel/app/bootstrap.php public/.htaccess
