• Jenkins使用笔记


    Jenkins使用笔记

    Jenkins是一款开源的CI/CD工具。用于自动化各种任务,包括构建、测试、部署。其主要功能通过插件拓展来实现。

    Blue Ocean 是官方推荐的一款皮肤蓝色版皮肤。

    安装Jenkins环境

    需安装JDK8.0、docker、blueocean、gitlab。此处默认docker已安装

    1、安装JDK

    下载解压包,到本地,然后上传到远端解压。后,配置java运行环境。

    https://blog.csdn.net/pdsu161530247/article/details/81582980
    

    2、安装Jenkins

    # 拉镜像
    docker pull jenkinsci/blueocean # 官网推荐用这个镜像
    # 查看镜像
    docker images
    # 建镜像实例
    docker run ^
      -u root ^ # 以root权限运行。如果jenkins用到某些宿主机程序又没有权限,可以通过添加权限分组解决
      --rm ^ #退出删除
      -d ^ #后台运行模式
      --name jenkins
      -p 49154:8080 ^
      -p 50000:50000 ^
      -v jenkins-data:/var/jenkins_home ^ # 目录映射,将容器卷映射到外部环境,方便查看
      -v /var/run/docker.sock:/var/run/docker.sock ^ # 将容器内的套接字映射到宿主机上,否则jenkins运行docker会报错。原因是jenkins容器内没运行docker守护进程,要使用宿主上的进程
      jenkinsci/blueocean 
      
    # 查容器
    docker ps -a
    # 进入容器命令行
    docker exec -it jenkins /bin/bash
    # 查初始化密码
    cat /var/jenkins_home/secrets/initialAdminPassword
    

    注意,首次登录后要创建管理员用户。admin/123

    docker run -u root --name jenkins --rm -d -p 49154:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean
    

    3、安装Gitlab

    # 下载社区版
    docker pull gitlab/gitlab-ce
    # 安装社区版 gitlab
    docker run --detach \
    	--hostname gitlab-server \
    	--publish 443:443 --publish 80:80 --publish 22:22 \
    	--name gitlab \
    	--restart always \
    	--volume /srv/gitlab/config:/etc/gitlab \
    	--volume /srv/gitlab/logs:/var/log/gitlab \
    	--volume /srv/gitlab/data:/var/opt/gitlab \
    	gitlab/gitlab-ce:latest
    # 修改配置
    vi /srv/gitlab/config/gitlab.rb
    # 修改本机访问地址
    external_url 'http://192.168.xx.xx/'
    # 重启
    docker restart gitlab
    

    4、初始化Gitlab项目

    1、gitlab创建空白项目
    2、本地创建vue工程
    3、本地工程内打开git bash命令行,设置gitlab空白项目为远端
    	git remote add origin <gitlab addr>
    4、git fetch origin # 同步远端
    5、git pull origin
    6、git add . # 提交代码
    7、git commit -m  'msg..'
    8、git push origin master # 合并代码
    

    打包前端工程并部署镜像

    首个例子采用blueocean自由风格方式在jenkins交互界面创建脚本,达到自动编译、制作镜像、部署镜像能力。

    要实现这个目标,需要:

    1. Jenkins拉取到gitlab上的代码
    2. Jenkins的工作空间安装node_modlues依赖、将工程打包成dist
    3. 制作Docker镜像
    4. 运行镜像

    1、初始化工程

    在vue工程根目录下创建Dockerfile文件docker build指令根据该文件去制作镜像。此处以nginx为基础镜像,将前端包拷贝到/usr/share/nginx/html下,这样可以利用nginx的默认配置达到部署目的。

    FROM nginx
    COPY dist/ /usr/share/nginx/html
    

    截图中jenkins文件是声明式流水线文件script内预制相应要执行的脚本;nginx.config设置nginx配置项,方便替换nginx镜像内的默认配置文件。本例采用脚本式流水线只需添加Dockerfile即可。

    git add Dockerfile # 将镜像文件提交到gitlab
    git commit -m ''
    git push origin
    

    2、配置Jenkins环境

    安装gitlab插件、安装nodeJs插件。如果不装Nodejs插件,则在流水线上无法选择node环境。

    # 登录Jenkins
    # 1.安装插件
    Dashboard>系统管理>插件管理>可选插件。搜索并安装
    # 2.配置全局环境
    Dashboard>系统管理>全局工具配置。 找到NodeJS,安装NodeJS 14.17.5(我本地的版本)
    

    3、创建流水线

    # 1、创建流水线
    Dashboard>新建任务>构建一个自由风格的软件项目
    # 2、设置源码地址,并添加凭证
    1)源码管理选择git,Repository URL输入工程地址
    2)Credentials 的右下角选择高级,配置上gitlab的用户名、密码。再选择该凭证
    3)选择构建*/master
    # 3、构建环境
    1)选择Provide Node & npm bin/ folder to PATH # 如果没配NodeJS环境,此处会没有选项
    2)选择配置的Node版本
    # 4、构建
    1)安装打包
    echo $PATH
    node -v
    npm -v
    npm install
    npm run build
    2)制作镜像,启动镜像
    docker stop myApp || true \
     && docker rm myApp || true \
     && docker build  -t myApp  . \
     && docker run -d -p 8989:80 --name myApp myApp
    

    工程的容器会运行在宿主机上。

    Jenkins启停操作

    可以直接通过URL方式进行启停操作。

    • restart 重启
    • reload 重载
    • exit 停止
    http://192.168.xx.xx:49154/restart
    
    http://192.168.xx.xx:49154/reload
    
    http://192.168.xx.xx:49154/exit
    

    Jenkins升级

    删除原来的Jenkins容器,jenkinsci/blueocean,使用新镜像jenkins/jenkins用相同的命令参数创建容器,里面相关配置跟原来的内容一样。因为创建容器时把券映射到了相同的地方。

    附录

    问题1:gitalab启动容器后一直处在"starting"状态,登录报502。

    解决办法:重启、重装、或者直接将其装在容量达标的物理机上。

    我的是重启多次,在某一刻可用了。报502是因为gitlab中/opt/gitlab/var/unicorn/unicorn.pid迟迟没有启动。过了几个小时再去看,状态变"healthy"了。

    问题2:jenkins使用docker命令,报守护进程未启动。

    原因:jenkins是容器模式运行,无法使用宿主的Docker进程,安装Docker插件后,Jenkins容器内docker守护进程没有启动。

    解决办法:网上给出1、在jenkins的镜像基础上再加一层Docker镜像。2、套接字文件上添加tcp映射一个端口到宿主机上。可再容器内用docker -H tcp://ip:prot command方式访问出去。3、启动jenkins容器时将套接字映射到宿主机上,容器内可直接使用宿主机的docker进程。

    我使用方法3,-v /var/run/docker.sock:/var/run/docker.sock将存储卷映射出去。此外可能还要添加docker角色运行Jenkins,否则可能会没权限。我是再启动时添加-u root

    问题3:报指定代理"docker"无效WorkflowScript: 4: Invalid agent type "docker" specified.

    解决办法:安装Docker、DockerPiple插件

    问题4:执行shell脚本报Permission denied没有权限

    sh 'chmod 777 ./cicd/*.sh'
    
    敌人总是会在你最不想它出现的地方出现!
  • 相关阅读:
    Flash/Flex学习笔记(30):不用startDrag和stopDrag的对象拖动
    Flash/Flex学习笔记(33):如何用As3协同Flash CS IDE控制MovieClip实例
    Flash/Flex学习笔记(26):AS3自定义右键菜单
    Flash/Flex学习笔记(32):播放音乐并同步显示lyc歌词(适用于Silverlight)
    Flash/Flex学习笔记(35):如何正确监听Stage对象的事件
    jQuery autoComplete 自动完成 支持中文
    黑马程序员视频学习下载地址记录一下
    汉语分词系统 网址
    【转】Lucene.Net 详解
    MongoDB开发学习 开天辟地,经典入门 解决关系型数据库大数据量处理的瓶颈问题
  • 原文地址:https://www.cnblogs.com/longhx/p/15741552.html
Copyright © 2020-2023  润新知