1. Jenkins容器内部署python

需要虚拟环境才可以安装python库

你可以使用 Docker 来安装 Jenkins 和 Python。下面是如何分步进行的简要指南:

1. 1 安装

1. 安装 Docker

首先,确保在你的系统上安装了 Docker。你可以按照官方文档的指南来安装 Docker:Docker 安装指南

2. 启动 Jenkins 容器

方法1:直接docker命令

你可以使用 Docker Hub 上的 Jenkins 镜像来运行 Jenkins 服务器。以下是如何在 Docker 中启动 Jenkins 容器的示例命令:

docker run -d -p 8080:8080 -p 50000:50000 --name jenkins jenkins/jenkins:lts

树莓派安装

在树莓派上使用 Docker 安装 Jenkins,您可以按照以下步骤操作:

  1. 首先,您需要拉取 Jenkins 的 Docker 镜像。由于树莓派使用的是 ARM 架构,因此需要找到一个支持该架构的 Jenkins 镜像。您可以尝试使用 jenkins4eval/jenkins¹。
docker pull jenkins4eval/jenkins
  1. 创建并运行 Jenkins 容器。在这个命令中,-d 参数让容器在后台运行,-p 参数用于端口映射,将容器内部端口绑定到指定的主机端口¹。
docker run -d -p 8080:8080 -p 50000:50000 --name jenkins jenkins4eval/jenkins

这将启动 Jenkins 容器,并将容器的 8080 端口映射到宿主机的 8080 端口,以及 50000 端口映射到宿主机的 50000 端口。你可以通过访问 http://localhost:8080 来访问 Jenkins 管理界面。在首次访问时,你需要提供初始管理员密码,可以通过以下命令来获取:

docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword

方法二:docker-compose

镜像地址:https://hub.docker.com/r/jenkins/jenkins/tags

version: '3'
services:

  jenkins:
    image: jenkins/jenkins:latest-jdk21
    container_name: jenkins
    user: "root"
    ports:
      - 8080:8080
      - 4000:4000
    volumes:
      - /mnt/nas/share/:/mnt/nas/share
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    environment:
      - LANG=C.UTF-8
      - JAVA_OPTS=-Dfile.encoding=UTF-8 -Djava.awt.headless=true
    restart: unless-stopped 

3. 安装 Python

你可以在 Jenkins 容器中安装 Python,以下是一个示例命令:

docker exec -u root -it jenkins apt-get update
docker exec -u root -it jenkins apt-get install -y python3 python3-pip

这将在 Jenkins 容器中更新包列表并安装 Python 3 和 pip。

4. 验证安装

你可以使用以下命令验证 Jenkins 和 Python 安装是否成功:

  • 访问 Jenkins 管理界面:http://localhost:8080,并登录。
  • 在 Jenkins 管理界面中,创建一个新的 Jenkins 作业,例如一个简单的“构建一个自由风格的软件项目”。
  • 在构建步骤中添加一个简单的 Shell 脚本,例如 echo "Hello, Jenkins!"
  • 保存并构建作业,观察构建是否成功。

在 Jenkins 中使用 Python 可能需要你在作业中设置相应的构建步骤,例如运行 Python 脚本或使用虚拟环境。你可以根据具体的需求进一步配置 Jenkins 作业。

请注意,这里的示例命令仅用于演示目的,你可以根据你的实际需求和项目配置来调整 Jenkins 和 Python 安装。此外,确保适应你的网络配置和安全性需求,例如为 Jenkins 设置适当的安全性和访问控制。

要将文件复制到 Jenkins 容器内,你可以使用 docker cp 命令。以下是在 Ubuntu 上的一般步骤:

假设你已经启动了 Jenkins 容器,容器名称为 jenkins-container,要将文件 local_file.txt 复制到容器的 /target_directory 目录中。

  1. 复制文件到 Jenkins 容器:
docker cp local_file.txt jenkins-container:/target_directory/

这将把本地文件 local_file.txt 复制到 Jenkins 容器内的 /target_directory 目录中。

  1. 进入 Jenkins 容器:
docker exec -it jenkins-container bash
  1. 在 Jenkins 容器内,你可以查看 /target_directory 目录中是否存在你复制的文件。

1.2安装python库

请确保将 local_file.txt 替换为你要复制的实际文件路径,jenkins-container 替换为你的 Jenkins 容器的名称,/target_directory 替换为你要将文件复制到的容器内目录。

这些步骤允许你将文件从本地系统复制到运行的 Jenkins 容器中。

这个错误提示表明你在一个外部管理的 Python 环境中尝试安装 Python 包。这种情况下,容器可能已经被配置为不允许直接在系统范围内安装 Python 包。

要解决这个问题,你可以考虑以下两种方法:

创建一个 Python 虚拟环境并在其中安装你需要的 Python 包。这种方式不会影响容器的全局 Python 环境,通常是比较安全的做法。

# 实体机运行版本根据python而定
docker exec -u root -it jenkins apt-get install python3.11-venv

 进入容器或者Jenkins里运行

docker exec -it jenkins-container bash

# 创建 Python 虚拟环境
python3 -m venv myenv
# 激活虚拟环境
source myenv/bin/activate
# 安装 Python 包
pip install opencv-python
# 在虚拟环境中运行你的脚本
python your_script.py
# 停用虚拟环境
deactivate

 

也可也用pipenv

 

apt install pipenv

2.pipenv

 

1.3 更改国内源

为了使用enco命令写入指定的阿里云防护源到 /etc/apt/sources.list 文件,请按照以下步骤操作:

假设 enco 是一个我们要使用的假想命令,实际上Linux没有名为enco的标准命令,这里我们将使用标准的命令来实现您想要的操作。在Linux系统中,通常可以使用 echo 命令结合重定向操作符 > 或 >> 来写入内容到文件中。> 用于创建新文件或覆盖现有文件的内容,而 >> 用于向现有文件追加内容。

  1. 打开终端或连接到您的服务器。

  2. 首先,创建/etc/apt/sources.list 文件,默认没有这个库:

    sudo touch /etc/apt/sources.list
  3. 为了写入或更新 /etc/apt/sources.list 文件,您可以使用 echo 和 sudo tee 命令来实现(假设 enco 是一个错别字,正确的操作应该是使用 echo)。以下命令会覆盖现有的 sources.list 文件内容,请确保这是您想要的操作:

    echo "deb http://mirrors.aliyun.com/debian/ bookworm main non-free contrib
    deb-src http://mirrors.aliyun.com/debian/ bookworm main non-free contrib
    deb http://mirrors.aliyun.com/debian-security bookworm-security main
    deb-src http://mirrors.aliyun.com/debian-security bookworm-security main" | tee /etc/apt/sources.list
  4. 更新APT的软件包列表:

    sudo apt-get update
  5. 检查更新过程中是否有错误发生。

通过这些步骤,您应该能够成功更新 /etc/apt/sources.list 文件,以使用阿里云的软件源。这将有助于提高软件包下载速度,并可能在某些情况下提供更及时的更新。