MAC OS下使用Vagrant+Docker+Jenkins,實(shí)現(xiàn)持續(xù)化集成

環(huán)境 :Vagrant + VirtualBox + Sublime Text 3

用以下命令建立軟連接,讓 sublime text 3 可以在命令行里面運(yùn)行

ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/local/bin/subl

啟動(dòng)一個(gè)虛擬機(jī)

mkdir jenkins
cd jenkins
vargrant init chef/centos7
# 編輯 Vagrantfile (使用命令 subl . )
# 取消掉注釋 (config.vm.network "private_network", ip: "192.168.34.11")
# 添加本機(jī)hosts (subl /etc/hosts)
# 添加 jenkins.local 192.168.34.11
vargrant up
vagrant ssh

進(jìn)行系統(tǒng)更新,安裝集成軟件

sudo yum -y update
sudo yum install -y zsh vim git
# 配置GitHub
ssh-keygen -t rsa -C "xxxxxxxx@qq.com"
cat ~/.ssh/id_rsa.pub
# 復(fù)制到你的key到Github上
ssh -T git@github.com
# 你可以看到
# Hi XXXX! You've successfully authenticated, but GitHub does not provide shell access.

安裝 ohmyzhs,和添加軟件源

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
vi .zshrc
# 添加plugins=(git yum)
yi -y epel-release
yi -y https://centos7.iuscommunity.org/ius-release.rpm
yum repolist
yu

添加了軟件源之后,可以ys php查看關(guān)于php的軟件包,你可以看到php70u開(kāi)頭的,這就是php7,這樣就可以不像上次我寫的文章那樣安裝瞎折騰了。

yum 插件的使用詳解

Alias   Command                             Description
ys      yum search                          Search package
yp      yum info                            Show package info
yl      yum list                            List packages
ygl     yum grouplist                       List package groups
yli     yum list installed                  Print all installed packages
ymc     yum makecache                       Rebuilds the yum package list
yu      sudo yum update                     pgrade packages
yi      sudo yum install                    Install package
ygi     sudo yum groupinstall               Install package group
yr      sudo yum remove                     Remove package
ygr     sudo yum groupremove                Remove pagage group
yrl     sudo yum remove --remove-leaves     Remove package and leaves
yc      sudo yum clean all                  Clean cache

安裝Jenkins和Docker

yi -y java-1.8.0-openjdk
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
yu
yi -y jenkins
yi -y docker

啟動(dòng)與測(cè)試Docker、Jenkins

systemctl start docker
systemctl start jenkins
systemctl enable docker
systemctl enable jenkins 
sudo docker 
# 看是否顯示出命令,必須用sudo運(yùn)行

給Jenkins添加運(yùn)行sudo權(quán)限

sudo vi /etc/sudoers 
# 添加 jenkins ALL=NOPASSWD: ALL

在本機(jī)訪問(wèn) jenkins.local:8080

安裝Jenkins的Github插件

系統(tǒng)管理 → 管理插件 → 可選插件 → GitHub Plugins

安裝Docker加速器,拉去鏡像

進(jìn)入DaoCloud官網(wǎng),注冊(cè)登錄,進(jìn)入控制臺(tái),點(diǎn)擊加速器,按照步驟安裝。

dao pull centos

打開(kāi)Jenkins網(wǎng)頁(yè)

新建 → (名稱:RubyRpc,構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目) 
→ 源代碼管理 (Git地址:https://github.com/MiYogurt/docker-jenkins-sample.git)
→ 增加構(gòu)建步驟(Execute shell)
# 輸入一下內(nèi)容
IMAGE="jenkins-rpc"
CONTAINER="jenkins-rpc"
MNT="$WORKSPACE/.."
sudo docker build -t $IMAGE . 
sudo docker run --name $CONTAINER -d -v "$MNT:/opt/project" $IMAGE /bin/bash -c 'cd /opt/project/workspace && rake spec'
sudo docker attach $CONTAINER
RC=$(sudo docker wait $CONTAINER)
sudo docker rm $CONTAINER
exit $RC
→ 保存
→ 構(gòu)建

這個(gè)東西我弄了3天,說(shuō)一下其中踩到的坑

1.我開(kāi)始想用Docker構(gòu)建一個(gè)Jenkins+Docker的鏡像,但是DockerBook中提供的源碼,有問(wèn)題,怎么都調(diào)試不好。
2.我直接拉取官方的Jenkins,運(yùn)行之后發(fā)現(xiàn),這個(gè)鏡像里面沒(méi)有安裝Docker,所以無(wú)法使用 。
3.我在MacOS上面安裝Jenkins,他會(huì)報(bào)一個(gè)docker命令找不到,使用sudo又需要密碼,我Google了很多,還是沒(méi)有解決,最終放棄,jenkins用戶好像也添加不進(jìn)Docker組,MAC里面沒(méi)有usermod命令,Docker服務(wù)端又是運(yùn)行在docker-machine上面的。
4.Github Plugins 需要你先配置好git與Github的公鑰,要不然拉取源碼不允許。
5.docker.sock的權(quán)限是600所以只能用sudo docker運(yùn)行。shell里面所有相關(guān)命令都應(yīng)該是sudo docker。
6.在Vagrant中,原來(lái)的代碼倉(cāng)庫(kù)里面是用的ubuntu:14.04鏡像,運(yùn)行的時(shí)候,老是apt-get update失敗,我克隆了代碼倉(cāng)庫(kù),自己修改了源,阿里云,中科大,163,搜狐,教育網(wǎng)。各種都不行。最后沒(méi)辦法,使用的Centos鏡像構(gòu)建,最終一次成功。終于是松了一口氣。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容