viva
  • 主页
  • 开发
    • IDE环境
      • Vim
      • VSCode
        • code-server
        • theia
    • Golang手册
    • Ansible
    • SaltStack
      • salt-api
    • Python
      • Q&A
      • Hello,world!
      • 类型
        • 数字
        • 字符串
        • 列表
        • 元组
        • 集合
        • 字典
      • 语法
        • 流程控制
        • 循环
      • 工具
        • pip
        • pyenv
        • selenium
      • 示例
    • Shell
    • Vue
      • ant-design
      • vue-material
    • Java
  • 随笔
    • WSL2
    • Git
    • Markdown
      • mermaid
    • Linux
      • 时钟同步
      • 账号
      • 文件
      • SSH
      • systemd
      • TLS加密
        • Openssl
      • 存储
        • rsync
        • NFS
      • 路由
      • 日志采集
        • Journalctl
        • Fluentd
          • 根据字段匹配对日志进行结构化
        • Logstash
    • 虚拟化
      • Hyper-V
      • PXE
    • 命令行工具
      • zsh
    • Nexus3
    • 堡垒机
      • JumpServer
    • 测试工具
      • ioping
      • apache bench
      • dd
      • postman
    • 开源项目管理
      • Github
    • 软件包管理
    • 网络镜像源
    • 网关
      • Nginx
  • 存储
    • Ceph
      • 安装
      • 故障处理
    • Etcd
    • Mysql
  • 网络
    • Overlay网络
    • IPVS
    • 网络工具
      • tshark
      • tcpdump
    • 防火墙
      • nftables
      • firewalld
      • iptables
    • 域名解析
      • dig
      • nslookup
      • dnsmasq
    • 代理
      • Clash
      • Redsocks
      • Redsocks2
      • COW
      • Proxfier
  • 云原生
    • 容器
      • Docker
        • Dockerfile
        • docker-compose
      • Podman
      • 原理
        • Chroot
        • Namespace
        • Cgroup
    • 镜像仓库
      • Harbor
    • Kubernetes
      • 部署
        • Kind
        • Minikube
        • kubespray
      • CNI
        • Flannel
        • OVS
        • Calico
      • Operator
        • OperatorSDK
      • StorageClass
      • Q&A
    • Openshift
      • 集群部署
      • 快速使用
    • Prometheus
      • prometheus-operator
      • kube-prometheus
      • Thanos
        • 组件
          • Bucket
          • Check
          • Compact
          • Querier
          • Receiver
          • Ruler
          • Sidecar
          • Store
        • 参考资料
      • Cortex
        • 组件
          • Alertmanager
          • Config
          • Distributor
          • Ingester
          • Querier
          • Query Frontend
          • Ruler
        • 参考资料
      • Thanos与Cortex方案对比
      • 参考资料
      • Q&A
    • Skywalking
    • Rook
    • Helm
    • Istio
    • 应用部署
      • Nexus
      • RabbitMQ
    • 参考资料
  • DevOps
    • 开源DevOps平台
    • CICD
      • Jenkins
    • 参考资料
  • 机器学习
    • Kubeflow
      • 示例
由 GitBook 提供支持
在本页
  • 项目地址
  • 快速开始
  • Q&A
  1. DevOps
  2. CICD

Jenkins

上一页CICD下一页参考资料

最后更新于2年前

项目地址

快速开始

1、创建 Dockerfile,在 Jenkins 镜像中预装 Blue Ocean 插件(可选)

mkdir /opt/jenkins && cd /opt/jenkins
Dockerfile
FROM jenkins/jenkins:2.263.4-lts-jdk11
USER root
RUN apt-get update && apt-get install -y apt-transport-https \
       ca-certificates curl gnupg2 \
       software-properties-common
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
RUN apt-key fingerprint 0EBFCD88
RUN add-apt-repository \
       "deb [arch=amd64] https://download.docker.com/linux/debian \
       $(lsb_release -cs) stable"
RUN apt-get update && apt-get install -y docker-ce-cli
USER jenkins
RUN jenkins-plugin-cli --plugins blueocean:1.24.4

2、构建 Jenkins 镜像(可选)

docker build -t jenkins:2.263.4-lts-jdk11-blueocean .

3、创建 docker-compose.yml 文件

docker-compose.yml
services:
  jenkins:
    # 如果无需预装 Blue Ocean 插件,可以直接使用官方镜像
    image: 'jenkins:2.263.4-lts-jdk11-blueocean'
    restart: always
    environment:
      DOCKER_HOST: 'tcp://docker:2376'
    ports:
      - '80:8080'
      - '50000:50000'
    volumes:
      - '/data/jenkins/certs:/certs/client:ro'
      - '/data/jenkins/home:/var/jenkins_home'
    links:
      - "dind:docker"
  dind:
    image: 'docker:dind'
    restart: always
    environment:
      DOCKER_TLS_CERTDIR: '/certs'
    ports:
      - '2376:2376'
    volumes:
      - '/data/jenkins/certs:/certs/client'
      - '/data/jenkins/home:/var/jenkins_home'
    privileged: true

4、创建 Jenkins 数据目录并授权

mkdir -p /opt/jenkins/home
chown 1000:1000 /opt/jenkins/home

5、启动 Jenkins

docker-compose up -d

6、获取 Jenkins 管理员初始密码

cat /data/jenkins/home/secrets/initialAdminPassword

7、浏览器访问 Jenkins 地址 http://<ip>:80,使用管理员初始密码登录

Q&A

如何配置gitlab webhook触发流水线执行

在 Gitlab 项目中进入 Setting -> Webhook,填入上方生成的 URL 与 Token 密钥,保存后即可发送测试

在 Webhook 条件触发时,可在 Jenkins 流水线上看到任务被调用执行

通过Webhook触发的流水线中可以使用下参数:

gitlabBranch
gitlabSourceBranch
gitlabActionType
gitlabUserName
gitlabUserUsername
gitlabUserEmail
gitlabSourceRepoHomepage
gitlabSourceRepoName
gitlabSourceNamespace
gitlabSourceRepoURL
gitlabSourceRepoSshUrl
gitlabSourceRepoHttpUrl
gitlabMergeRequestTitle
gitlabMergeRequestDescription
gitlabMergeRequestId
gitlabMergeRequestIid
gitlabMergeRequestState
gitlabMergedByUser
gitlabMergeRequestAssignee
gitlabMergeRequestLastCommit
gitlabMergeRequestTargetProjectId
gitlabTargetBranch
gitlabTargetRepoName
gitlabTargetNamespace
gitlabTargetRepoSshUrl
gitlabTargetRepoHttpUrl
gitlabBefore
gitlabAfter
gitlabTriggerPhrase

在 Jenkins 的插件管理中安装 ,然后在流水线中勾选启用 GitLab webhook,记录下方的 URL,为了安全起见,展开高级选项并生成一串 token 密钥。

Gitlab 插件
GitHub - jenkinsci/jenkins: Jenkins automation serverGitHub
Logo