• 在Docker中运行gocd


    gocd是一个持续集成的工具,可视化效果非常好

    运行gocd-server

    1
    2
    3
    4
    5
    docker run -d --name server 
    -p8153:8153 -p8154:8154
    -v /path/to/godata:/godata
    -v /path/to/go:/home/go
    gocd/gocd-server:v18.1.0

    我们就可以通过http://go-server-ip:8153来访问gocd-server的web了

    运行gocd-agent

    1
    2
    3
    4
    5
    6
    7
    docker run -d --name gocd 
    -e AGENT_AUTO_REGISTER_KEY=53f57d90-c749-4758-b430-5af341117b0e
    -e AGENT_AUTO_REGISTER_RESOURCES=diagnosis,bj
    -e AGENT_AUTO_REGISTER_ENVIRONMENTS=bj
    -e AGENT_AUTO_REGISTER_HOSTNAME=diagnosis_bj
    -e GO_SERVER_URL=https://go-server-ip:8154/go
    gocd/gocd-agent-centos-7:v18.1.0

    其中AGENT_AUTO_REGISTER_KEY是在gocd-server的配置中。
    执行完之后,就可以在web中看到添加的agent。

    安装插件

    1
    2
    cd /path/to/godata/plugins/external
    wget https://github.com/gocd-contrib/script-executor-task/releases/download/0.3/script-executor-0.3.0.jar

    DOOD

    我们通常希望在agent中执行docker命令在宿主中建立镜像运行容器网上大家把这种技术称之为DOOD(docker outside of docker)。
    docker命令只能在root权限下执行,但是gocd的脚本是在go用户下运行的所以会报错,解决办法就是想办法让脚本切换到root下运行脚本,具体办法如下:

    创建su文件

    su的文件内容如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #%PAM-1.0
    auth sufficient pam_rootok.so
    # Uncomment the following line to implicitly trust users in the "wheel" group.
    auth sufficient pam_wheel.so trust use_uid
    # Uncomment the following line to require a user to be in the "wheel" group.
    auth required pam_wheel.so use_uid
    auth substack system-auth
    auth include postlogin
    account sufficient pam_succeed_if.so uid = 0 use_uid quiet
    account include system-auth
    password include syste 大专栏  在Docker中运行gocdm-auth
    session include system-auth
    session include postlogin
    session optional pam_xauth.so

    创建dockerfile制作dood-gocd镜像

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    FROM gocd/gocd-agent-centos-7:v18.1.0
    RUN yum install -y yum-utils
    device-mapper-persistent-data
    lvm2
    RUN yum-config-manager
    --add-repo
    https://download.docker.com/linux/centos/docker-ce.repo
    RUN yum install -y docker-ce
    RUN yum -y install sudo
    RUN echo 'go ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
    RUN gpasswd -a go wheel
    COPY su /etc/pam.d/su
    RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    RUN echo 'Asia/Shanghai' >/etc/timezone

    这里的root方案就是在脚本中调用su root切换到root账户,并且取消输入密码。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    docker build -t gocd-agent-dood .

    docker run -d --name gocd
    -e AGENT_AUTO_REGISTER_KEY=53f57d90-c749-4758-b430-5af341117b0e
    -e AGENT_AUTO_REGISTER_RESOURCES=diagnosis,bj
    -e AGENT_AUTO_REGISTER_ENVIRONMENTS=bj
    -e AGENT_AUTO_REGISTER_HOSTNAME=diagnosis_bj
    -e GO_SERVER_URL=https://go-server-ip:8154/go
    -v /var/run/docker.sock:/var/run/docker.sock
    gocd-agent-dood

    上面命令里的挂载就是把宿主机的docker.sock挂载到容器中,这样我们就能在gocd-agent-dood的容器中运行dock命名在宿主机上创建镜像运行容器了。

    script如下:

    1
    2
    3
    4
    su - root <<EOF
    xxx
    xxx
    xxx
  • 相关阅读:
    Unity 类似FingerGestures 的相机跟随功能
    protected 学习
    Unity 学习Json篇
    Unity 动态加载 Prefab
    iTween基础之iTweenPath(自定义路径移动)
    Unity连Photon服务器入门详解
    如何用unity3d实现发送带附件的邮件
    【转】【风宇冲】Unity3D教程宝典之Web服务器篇
    unity Editor编辑器插件脚本学习
    收集整理Android开发所需的Android SDK、开发中用到的工具
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12267957.html
Copyright © 2020-2023  润新知