jenkins+docker+Android编译

本文主要讲述如何在docker中配置编译环境,并将docker作为Jenkins任务的一个节点

一、安装配置

1、安装

针对ubuntu15.04 vivid

1、手动下载docker.io deb包(安装包:https://mirrors.tuna.tsinghua.edu.cn/ubuntu/pool/universe/d/docker.io/)

目前可用最新1.6 (docker.io_1.6.2~dfsg1-1ubuntu4~14.04.1_amd64.deb)

 

2、手动安装

sudo dpkg –i *.deb

 

3、sudo ln -sf/usr/bin/docker.io /usr/local/bin/docker

 

4、检查

dokcer –v

 

========================================================

卸载旧版本

sudo apt-get remove docker docker-engine docker.io

 

ubuntu其他版本

安装

方式一:

$ sudo apt-get update

 

$ sudo apt-get installlinux-image-extra-$(uname -r) linux-image-extra-virtual

 

$ sudo apt-get update

$ sudo apt-get install apt-transport-httpsca-certificates curl software-properties-common

$ curl -fsSLhttps://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

$ sudo apt-key fingerprint 0EBFCD88

$ sudo add-apt-repository "deb[arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs)stable"

安装最新版

$ sudo apt-get update

$ sudo apt-get install docker-ce

安装指定版本(可指定稳定版)

$ apt-cache madison docker-ce

 

$ sudo apt-get installdocker-ce=<VERSION>

 

方式二:

1、添加docker源

cat>/etc/apt/sources.list.d/docker-main.list<<EOF

deb[arch=amd64] http://mirrors.aliyun.com/docker-engine/apt/repo ubuntu-xenialmain

EOF

2、Add Docker’sofficial GPG key:

curl -fsSLhttps://apt.dockerproject.org/gpg | sudo apt-key add -

3、更新源和升级系统

apt-get update 

4、卸载旧版本docker

apt-get purge lxc-docker*

5、列出docker版本

apt-cache policy docker-engine

6、安装指定版本

apt-get install -y docker-engine=xxxxx

 

2、配置

/etc/init/docker.conf

/etc/init.d/docker

 

/etc/default/docker

配置DOCKER_OPTS='-H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock'

 

/lib/system/system/docker.service配置

EnvironmentFile=-/etc/default/docker

然后,修改: ExecStart=/usr/bin/dockerd -d -H fd://  ,改成: ExecStart=/usr/bin/docker -d -H fd:// $DOCKER_OPTS

或ExecStart=/usr/bin/dockerd -d -H fd:// -H tcp://0.0.0.0:2376 -Hunix:///var/run/docker.sock

PS:对于 1.12 以前的版本,/usr/bin/dockerd换成/usr/bin/docker

 

注:真正起作用的配置是/etc/init/docker.conf和/etc/default/docker

其中/etc/init.d/docker.config部分的exec"$DOCKERD" $DOCKER_OPTS --raw-log启动docker

/etc/default/docker中的配置生效

重新加载配置并且重新启动

sudo systemctl daemon-reload

sudo systemctl restart docker

 

sudo service docker restart

 

3、获取镜像

sudo docker pull ubuntu

docker run -i -t ubuntu /bin/bash:运行ubuntu镜像


运行hello world
sudo docker run ubuntu /bin/echo hello world

 

4、增加docker组

确保已经安装docker,且当前用户可以不加sudo来使用docker。

sudo groupadd docker
sudo gpasswd -a ${USER} docker
newgrp docker
sudo service docker restart

sudo systemctl restart docker

 

二、dokcer容器基础环境

 

docker run –v /local_dir:/tmp -it ubuntu:yourimage/bin/bash

进入容器

不需要拷贝文件,docker run –it ubuntu:yourimage /bin/bash

 

apt-get update

apt install net-tools # ifconfig
apt install iputils-ping # ping

apt-get install vim

 

apt-get install openssh-server

vim /etc/ssh/sshd_config,修改下面两个配置

PermitRootLogin yes  
UsePAM no

service ssh start

 

安装jdk(Remote Filing System Root下放上jdk目录,版本至少高于1.6),jenkins连接需要用到

 

apt-get install git

 

Crtl+d 或者exit 退出容器

dokcer ps –a 查看容器id

 

docker commit contained ubuntu:tag 提交修改,保存Image

 

三、docker容器编译环境

1、准备环境

 

新建用户

adduser hongyang

输入密码

 

apt-get update

apt-get install sudo

vi /etc/sudoers

增加一行

# Allow members of group sudo to executeany command

%sudo ALL=(ALL:ALL) ALL

hongyang          ALL=(ALL:ALL) ALL

 

切换用户

su hongyang

cd /home/hongyang/

 

建立工作目录

mkdir jenkins_workspace

mkdir workspace

 

git config --global user.name "yourname"

git config --global user.email "youremail"

 

ssh-keygen –t rsa

如果需要git clone代码,配置id_rsa.pub与git服务器

 

2、编译环境

确保已安装python

如果python已安装,python提示command not found

执行sudo ln –s /usr/bin/python2.7 /usr/bin/python

 

sudo apt-get update

sudo apt-get install python-pip

sudo pip install pexpect,oss2,paramiko,python-mysqldb

 

安装jdk(可安装在/usr/lib/jvm/jdk1.6.0_45),Yx编译需要1.6(android编译要求jdk6)

gcc

vi /etc/profile

export JAVA_HOME=/home/hongyang/software/jdk1.6.0_45

exportCLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH

exportPATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

export PATH=/home/hongyang/software/gcc-arm-none-eabi-4_9-2015q1/bin:$PATH

 

source /etc/profile

Jenkins Global ToolConfiguration中设置jdk路径

Job中选择所设置jdk

--

确保已有repo

repo clone代码

 

sudo apt-get installgit-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-devlib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev  lib32z1-dev  libgl1-mesa-dev g++-multilib  mingw32 tofrodos python-markdown libxml2-utils

 

安装busybox

sudo apt-get install busybox

 

apt-get update遇到Could notexecute 'apt-key' to verify signature (is gnupg installed?)

chown root:root /tmp

chmod 1777 /tmp

 

编译内核出现mkimage找不到

"mkimage" command not found -U-Boot images will not be built
make[1]: *** [arch/arm/boot/uImage] Error 1
make: *** [uImage] Error 2

解决方法是将uboot中tools文件夹下的mkimage文件复制到/usr/bin文件夹下即可。

 

Android编译只能在make versions3.81 and 3.82

解决步骤:

1、下载3.81或3.82版本的make压缩包

地址:ftp://ftp.gnu.org/gnu/make/

2、将make压缩包放到Ubuntu任意目录下解压

tar -xjvf make-3.81.tar.bz2

3、进入make-3.81目录

./configure

make

sudo make install

注意:中间一般不会出现错误,第三个命令必须加sudo给一个root权限,否则低版本的make安装不了。

4、查看make的版本

   make –v

 

提示:每次进入docker镜像执行一次source /etc/profile

Shell脚本文件中提示source :command notfound,需要执行sudo dpkg-reconfigure dash,选择no

 

四、搭建本地docker镜像仓库

 

1、下载registry镜像

$ docker pull registry  

2、接着我们运行registry镜像运行一个registry容器:

sudo docker run -d -p 5000:5000 registry 选择-d选项是为了让这个容器在后台运行。

默认情况下,会将仓库存放于容器内的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地一个目录挂载到容器内的/tmp/registry下,我将/opt/data/registry目录挂载到/tmp/registry目录下,如果你本地没有这个目录需要新创建,同时需要给/opt/data/registry目录扩大权限

chmod +777 /opt/data/registry  

此处有坑:默认情况下是在容器内的/tmp/registry目录下,但是我的容器镜像是存放在容器中的/var/lib/registry  这个位置。

我是搭建完毕之后,上传一个镜像之后然后使用 find / -name ***查到的位置

 docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry  

3、本地镜像的push

建立镜像库首先我们应当将镜像push到本地镜像仓库中,我们以image id 504332db8051 为例:

sudo docker tag 504332db8051127.0.0.1:5000/tomcat

sudo docker push 127.0.0.1:5000/tomcat

这样我们就将镜像传到本地镜像库了。再通过 sudo docker images查看就能看到以127.0.0.1:5000/tomcat的镜像。

4、本地服务器pull镜像

本地服务器首先需要安装好docker,然后根据IP地址来pull镜像,举例来说我刚才建立镜像的主机IP是192.168.163.133,我们在局域网其他主机上执行以下指令:

sudo docker pull192.168.163.133:5000/tomcat

需要去修改我们镜像下载服务器的docker配置文件在/etc/default/docker添加一行:

DOCKER_OPTS="--insecure-registry192.168.163.133:5000"这样就能顺利的从本地镜像库中下载镜像了。

或者是在/etc/sysconfig/docker文件中添加

OPTIONS='--selinux-enabled--insecure-registry 192.168.163.133:5000'

 

搭建registry UI

1、创建工作目录

$ mkdir -p hyper-docker-registry-web-config/frontend hyper-docker-registry-web-config/registry  

$ cd hyper-docker-registry-web-config  

 

2、建一个用于 registry 的配置文件

$ vim registry/config.yml

version: 0.1

log:

 level: info

 formatter: text

 fields:

   service: registry-srv

   environment: production

storage:

 cache:

   layerinfo: inmemory

 filesystem:

   rootdirectory: /var/lib/registry

 delete:

    #要在 ui 上能够删除镜像,enable 的值必须是 true

   enabled: true

http:

 addr: :5000

 debug:

addr: :5001

 

3、新建一个用于 ui 的配置文件

$ vim frontend/config.yml 

registry: 

  #Docker registry url 

 url: http://registry-srv:5000/v2 

  #Docker registry fqdn 

 name: localhost:10050 

  #To allow image delete, should be false 

 readonly: false 

 auth: 

    #Disable authentication 

enabled: false

 

4、新建一个启动脚本

$ vim startup.sh 

   #! /bin/bash 

     

    #registry 监听主机的 10050 端口,并将镜像文件存储在主机的 /var/lib/registry/storage 中。 

   docker run -d -p 10050:5000--restart=always --name registry-srv -v $(pwd)/registry/:/etc/docker/registry:ro-v /var/lib/registry/storage:/var/lib/registry registry:2 

     

    #ui 监听主机的 10080 端口 

docker run -d -p 10080:8080  --name registry-web --link registry-srv:srv-v $(pwd)/frontend/:/conf/:ro hyper/docker-registry-web 

 

5、启动

$ chmod +x startup.sh  

$ ./startup.sh  

等启动完成,就可以通过 http://localhost:10080 访问 ui,且可以在 ui 上浏览/删除镜像了。

上传镜像

sudo docker tag 504332db8051 127.0.0.1:10050/ubuntu:base

sudo docker push 127.0.0.1:10050/ubuntu:base

下拉镜像

需要

DOCKER_OPTS="--insecure-registry192.168.163.133:10050"

然后sudo docker pull 192.168.163.133:10050/ubuntu:base

 

五、Jenkins配置

1、安装Docker插件

2、在jenkins的系统管理----系统设置:

   i.添加云---Docker

     192.168.20.72为docker所在宿主机ip,宿主机dokcer设置中配置了

DOCKER_OPTS='-H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock'

    ii.添加dockerimages 模板

    这里要注意:Hostname是slave容器所在宿主主机名,即ip 

           Port bindings 设置IP后生成的slave容器是32783:22,不然连不上

 

 

其中SSH方式要求镜像中安装了sshd

默认不启动sshd,需要在进入容器后启动sshd,可以在Docker Command中执行/bin/bash,然后启动脚本文件,文件中启动sshd

例如:/bin/bash /root/start_ssh.sh

#!/bin/bash

 

service ssh start

source /etc/profile

top

 

top命令是为了让docker容器一直启动,不然命令执行完容器就退出,完成继续后面的操作。

 

3、job设置

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 在使用JenkinsDocker的过程中,需要进行一些配置和安装步骤。首先,由于在Jenkins机器上Docker是使用root用户运行的,而Jenkins是使用普通用户jenkins运行的,所以需要配置jenkins用户可以使用docker命令。可以通过修改sudoers文件来实现,具体命令如下:\[1\] ``` \[root@osb30 ~\]# visudo jenkins ALL=(root) NOPASSWD: /usr/bin/docker ``` 其次,需要新建一个Jenkins用户,并进行相关配置。可以通过以下命令来创建Jenkins用户并设置密码: ``` \[root@osb30 ~\]# groupadd jenkins \[root@osb30 ~\]# useradd -g jenkins jenkins \[root@osb30 ~\]# echo "wisedu" | passwd --stdin jenkins &> /dev/null ``` 接下来,可以使用Docker安装Jenkins。首先拉取Jenkins镜像: ``` docker pull jenkins/jenkins ``` 然后为Jenkins建立挂载目录并设置权限: ``` mkdir /home/nc/software/jenkins/ sudo chown -R 1000:1000 /home/nc/software/jenkins/ ``` 最后,运行Jenkins镜像并进行初始化: ``` docker run -d -p 8080:8080 -p 50000:50000 --name jenkins --privileged=true -v /home/nc/software/jenkins:/var/jenkins_home jenkins/jenkins ``` 其中,-d表示以守护线程运行,即后台运行;-p表示Docker容器和端口的映射,后面的是容器的端口,前面的是宿主机的端口;-v表示数据卷的映射,后面是容器内的文件夹地址,前面为宿主机的地址。最后,可以通过浏览器打开http://ip:8080进行初始化。\[3\] #### 引用[.reference_title] - *1* *2* [Jenkins+Docker持续集成](https://blog.csdn.net/weixin_30892987/article/details/98066958)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [springboot+jenkins+docker自动化部署](https://blog.csdn.net/qq_34838643/article/details/103863359)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值