關(guān)于在 git hooks 中使用 curl 觸發(fā)編譯:
假設(shè)項(xiàng)目名字叫 Two, 項(xiàng)目的 Authentication Token 為 ABC(同上).
方法1 . 在 Manage Jenkins -> Configure Global Security 中去掉 “Prevent Cross Site Request Forgery exploits” 選項(xiàng),然后就可以使用下述命令觸發(fā)編譯了:
curl --user 'USER:PASSWD' -X POST "http://localhost:8080/job/Two/build?token=ABC"
// or
curl --user 'USER:PASSWD' -X POST "http://localhost:8080/job/Two/build" --data token=ABC--data delay=0sec
// 或者不使用密碼,使用 user API token: 點(diǎn)擊用戶名-> Configure 顯示 API Token
curl -u guowei:173ey74ac39d284u610c83c6fd32847e -X POST http://localhost:8080/job/Two/build?token=ABC
方法2 . 如果選中了 “Prevent Cross Site Request Forgery exploits” 選項(xiàng),則需要先獲得一個(gè) CSRF protection token,然后再將這個(gè) token 作為HTTP請(qǐng)求的 header 發(fā)送過去:
curl -u guowei:38e2427ac39d5a5f810c83c6fd39ee80 http://localhost:8080/crumbIssuer/api/json
// 你將獲得一個(gè)返回json數(shù)據(jù),例如:
{"_class":"hudson.security.csrf.DefaultCrumbIssuer","crumb":"39v8495d439i36cbd93b928461u1fe15","crumbRequestField":"Jenkins-Crumb"}
// 然后再這樣觸發(fā)編譯:
curl -u guowei:38e2427ac39d5a5f810c83c6fd39ee80 -H "Jenkins-Crumb:39v8495d439i36cbd93b928461u1fe15" -X POST http://localhost:8080/job/Two/build?token=ABC
如果覺得麻煩,可以寫成這樣一個(gè)腳本:
#!/bin/bash
CRUMB=$(curl -s 'http://guowei:38e2427ac39d5a5f810c83c6fd39ee80 @localhost:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)')
curl -u guowei:38e2427ac39d5a5f810c83c6fd39ee80 -H "$CRUMB" -X POST "http://localhost:8080/job/Two/build" --data token=ABC --data delay=0sec
see link: http://zdk./jenkins-remote-build-trigger-with-bitbucket-hook
方法3 . 在新建 Job 的時(shí)候選擇 Poll SCM, Schedule 可以為空. 使用這個(gè)方式只有在 git server 端代碼有更新時(shí)才會(huì)觸發(fā)build,沒有更新不會(huì)觸發(fā)。
在 git server 的 post-receive hook 中插入以下代碼:
curl http://localhost:8080/git/notifyCommit?url=ssh://git@xxx.git&branches=master
在 Job 的界面中會(huì)出現(xiàn)一個(gè) Git Polling Log 的選項(xiàng),點(diǎn)進(jìn)去可以看到日志信息。
see link: https://wiki./display/JENKINS/Git+Plugin
lftp 自動(dòng)從服務(wù)器上下載更新程序包:
#!/bin/bash
cd ~
USER=guowei
PASSWD=xxxxxx
IP=192.168.1.13
REMOTEDIR="abc/efg"
FILENAME=$(lftp -c "open -u $USER,$PASSWD $IP; cd $REMOTEDIR && cls myfile*")
if [ "$FILENAME" != "" ]; then
lftp $USER:$PASSWD@$IP << EOF
cd $REMOTEDIR
mget -E myfile*
quit
EOF
echo "$FILENAME download successfully, extract? (y/n)"
read ans
# now check if $x is "y"
if [ "$ans" == "y" ] || [ "$ans" == "Y" ]; then
tar -xvf $FILENAME
echo "update ok!"
else
echo "update aborted!"
fi
else
echo "Cat not login to server: $USER@$IP"
fi
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
|