jenkins的安装与使用

6.3.3 安装jenkins

sudo wget -O /etc/yum.repos.d/jenkins.repo \
    https://pkg.jenkins.io/redhat/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io-2023.key
sudo yum upgrade
# Add required dependencies for the jenkins package
# 手动下载:https://download.oracle.com/java/21/latest/jdk-21_linux-aarch64_bin.rpm
yum install jdk-21_linux-aarch64_bin.rpm
sudo yum install fontconfig
sudo yum install jenkins

# 如果gpgcheck不通过
sudo yum install --nogpgcheck fontconfig java-21-openjdk

# sudo yum install jenkins 安装失败,手动下载rpm安装
# http://pkg.jenkins.io/redhat-stable/jenkins-2.516.3-1.1.noarch.rpm
yum install jenkins-2.516.3-1.1.noarch.rpm

sudo systemctl enable jenkins
sudo systemctl start jenkins
sudo systemctl status jenkins

# 设置防火墙
YOURPORT=8080
PERM="--permanent"
SERV="$PERM --service=jenkins"

firewall-cmd $PERM --new-service=jenkins
firewall-cmd $SERV --set-short="Jenkins ports"
firewall-cmd $SERV --set-description="Jenkins port exceptions"
firewall-cmd $SERV --add-port=$YOURPORT/tcp
firewall-cmd $PERM --add-service=jenkins
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload
  • cat /var/lib/jenkins/secrets/initialAdminPassword
  • yum --nogpgcheck install git

ip地址:8080 root/fubo123456

6.3.3 docker安装jenkins

成功版:https://www.bilibili.com/video/BV1iZWNzHE8F/?spm_id_from=333.1391.0.0&p=7&vd_source=824d8f61906b474c0974b8dce18a69fd

  • docker pull jenkins/jenkins:lts-jdk17
    dcoker pull jenkins/jenkins:2.319.1-lts
    
  • 编写docker-compose.yml

    mkdir -p /usr/local/docker/jenkins_home
    cd /usr/local/docker/jenkins_home
    vim docker-compose.yml
    
    version: "3.1"
    services:
    	jenkins:
    		image: jenkins/jenkins:2.319.1-lts
    		container_name: jenkins
    		ports:
    			- 8080:8080
    			- 50000:50000
    		volumes:
    			- ./data/:/var/jenkins_home/
    
  • 启动容器

    mkdir data
    chmod 777 data/
    docker compose up -d
    docker ps
    

截屏2025-10-15 14.16.44

  • 查询密码

    docker logs -f 容器id
    

![image-20251015141828257](/Users/mac/Library/Application Support/typora-user-images/image-20251015141828257.png)

密码:f93c7c0c2d7d4504a65f1e886589b67a
  • 登陆页面,下载插件

截屏2025-10-15 14.20.41

image-20251015152302455

docker内部执行不了docker命令

  • 第一种方式

    • 先通过dockerfile,构建一次镜像

    • 在通过docker compos jenkins-docker构建镜像

    • 缺点,就是每次启动容器后,都要进入修改docker.sock的权限

    • - 如果出现没有执行docker.dcok的权限
      
        docker exec -it -u root jenkins bash
        chmod 777 /var/run/docker.scok
      
FROM jenkins/jenkins:2.528.1-lts-jdk21

USER root
RUN apt-get update && \
    apt-get install -y docker.io && \
    chmod 666 /var/run/docker.sock && \
    usermod -aG docker jenkins

USER jenkins
# 构建jenkins带docker的镜像
docker build -t jenkins-docker .
version: "3.1"
services:
  jenkins:
    image: jenkins-docker:latest
    container_name: jenkins
    ports:
      - 8080:8080
      - 50000:50000
    volumes:
      - ./data/:/var/jenkins_home/
      - /Users/mac/.docker/run/docker.sock:/var/run/docker.sock
      - /Users/mac/.docker/daemon.json:/etc/docker/daemon.json
   # environment:
    #  - DOCKER_HOST=unix:///var/run/docker.sock  # 确保 Jenkins 使用正确的 Docker 路径
  • 第二种方式
    • 直接通过docker-compose.yml构建
    • Docker-compose up -d
version: "3.1"
services:
  jenkins:
    image: jenkins/jenkins:2.528.1-lts-jdk21
    container_name: jenkins
    ports:
      - 8080:8080
      - 50000:50000
    volumes:
      - ./data/:/var/jenkins_home/
      - /Users/mac/.docker/run/docker.sock:/var/run/docker.sock
      - /Users/mac/.docker/daemon.json:/etc/docker/daemon.json
    user: "root"
    command: >
      sh -c "apt update && apt upgrade -y docker.io && 
             chmod 777 /var/run/docker.sock && 
             /usr/local/bin/jenkins.sh"
  • 第三种方式:手动执行
docker-compose up -d
docker exec -it -u root jenkins bash
# 在容器内执行(以 root 用户)
apt-get update
apt-get install -y docker.io
 
# 验证
docker version

6.3.4 Jenkins安装插件

  • 问题:服务时间跟https://updates.jenkins.io/update-center.json不同步,ssl不通过

    sudo chronyc makestep
    
  • 修改下载源

    vim /usr/local/docker/jenkins_home_lts-jdk17/data/updates/default.json  # docker部署的
    vim //var/lib/jenkins/updates/updates/default.json  # 裸机上部署的
    :%s/updates.jenkins.io\/download/mirrors.huaweicloud.com\/jenkins/g
    :%s/mirrors.huaweicloud.com\/jenkins/repo.huaweicloud.com\/jenkins/g
    
  • 更改更新源

    http://mirror.esuni.jp/jenkins/updates/update-center.json
    https://repo.huaweicloud.com/jenkins/updates/update-center.json
    https://mirrors.huaweicloud.com/jenkins/updates/update-center.json
    
  • 手动下载

    https://updates.jenkins.io/download/plugins/
    下载到./data/plugins下面
    然后重启docker才能加载成功
    
  • 需要的插件

    # 需要的插件
    Git Parameter
    Publish Over SSH
    pipline
    view
    

6.3.5 配置jenkins

  • 将依赖的环境比如jdk,conda,maven文件夹,复制到/usr/local/docker/jenkins_home_lts-jdk17/data/目录下
  • 通过publish over ssh配置远程连接的服务器(目标服务器需要安装docker,最好是同样版本的)

image-20251015180149073

6.3.6 配置cicd自由风格工作流

  • 创建item,配置gitimage-20251015181611579

  • config 配置git

image-20251015181934705

  • 容器内查看拉区的代码

image-20251015182233587

  • Mac制作docker依赖镜像

    # 使用Python 3.11官方镜像作为基础镜像
    FROM python:3.11-slim
    
    # 设置工作目录
    WORKDIR /app
    
    # 设置环境变量
    ENV PYTHONDONTWRITEBYTECODE=1
    ENV PYTHONUNBUFFERED=1
    ENV FLASK_APP=app.py
    ENV FLASK_ENV=production
    
    # 安装系统依赖
    RUN apt-get update && apt-get install -y \
        gcc \
        g++ \
        libffi-dev \
        libssl-dev \
        && rm -rf /var/lib/apt/lists/*
    
    # 复制requirements文件
    COPY requirements.txt .
    
    # 安装Python依赖
    RUN pip install --no-cache-dir -r requirements.txt
    
    /Users/mac/Desktop/wk/project_AIBrand/03 code/backend
    docker build -t aibrand-python-env:v1 .
    
    #推送到私有仓库,但是需要在服务器上传连接私有仓库,不如直接shell文件上传方便
    # docker tag aibrand-backend-env  bobbbbbb/aibrand-backend-env:latest
    # docker push bobbbbbb/aibrand-backend-env:latest
    
    # 镜像迁移到服务器
    docker save -o aibrand-python-env-v1.tar aibrand-python-env:v1
    # 文件传输到服务器
    docker load -i aibrand-python-env-v1.tar
    
  • 配置build shell

image-20251015205103360

#!/bin/bash
cd 03\ code/backend/
echo "########build image#########"
docker compose build --no-cache
echo "########start service#########"
docker compose up -d
echo "########done#########"
# 配置jenkins启动docker的权限
sudo usermod -aG docker jenkins  # 将 jenkins 用户加入 docker 组
sudo systemctl restart docker   # 重启 Docker 服务
sudo systemctl restart jenkins  # 重启 Jenkins(可选)
sudo -u jenkins docker ps  # 检查 Jenkins 用户是否能访问 Docker
  • 重新bulid,项目已更新,并重新部署

6.3.7 通过pipeline构建cicd工作流

pipeline {
    agent any
    stages {
        stage('拉取git') {
            steps {
                checkout scmGit(branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[url: 'https://gitee.com/fubob/git-practise.git']])
            }
        }
        
                stage('代码检测') {
            steps {
                echo '通过sonarQube代码质量检测 - 成功'
            }
        }
        
                        stage('镜像构建') {
            steps {
                echo '通过docker构建镜像 - 成功'
            }
        }
        
            stage('将镜像推送到harbor') {
            steps {
                echo '将镜像推送到harbor - 成功'
            }
        }
        
                    stage('通过publish ssh over通知服务器') {
            steps {
                echo '通过publish ssh over通知服务器 - 成功'
            }
        }
        
    }
}

6.4 拉取代码

# 切换到main分支,上线的分支
git tag v1.0.0
git push origin v1.0.0

jenkins构建git拉取参数

image-20251020190009799

根据tag进行guild

image-20251020190051327

posted @ 2026-01-12 20:11  付十一。  阅读(4)  评论(0)    收藏  举报