lsb_release -a
查看docker
sudo apt update
bashCopy code
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce
sudo systemctl start docker
sudo systemctl enable docker
sudo docker --version
现在,Docker已经成功安装在您的Ubuntu系统上。您可以使用docker
命令来管理和运行容器。
git
打开终端:可以通过按下Ctrl
+ Alt
+ T
键组合,或者在应用程序搜索中找到“终端”。
运行以下命令以更新软件包列表:
sudo apt update
安装Git:
sudo apt install git
安装完成后,可以通过运行以下命令来验证安装是否成功,并显示安装的Git版本:
git --version
现在,你已经成功在Ubuntu系统上安装了Git。你可以使用git
命令来管理代码库、版本控制和其他Git操作。如果你还不熟悉Git的使用,可以查阅Git的文档或教程,以便更好地理解和利用其功能。
jdk
自行下载,这里举例为 jdk-17_linux-x64_bin.tar.gz Java Downloads | Oracle 中国
sudo tar -zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/local
然后就可以通过 "cd /usr/local"和“pwd”查看具体路径,以便后面配置,这里给出示例的路径:
/usr/local/jdk-17.0.8
maven
自行下载,这里举例为 apache-maven-3.9.4-bin.tar.gz Maven – Download Apache Maven
sudo tar -zxvf apache-maven-3.9.4-bin.tar.gz -C /usr/local
然后就可以通过 "cd /usr/local"和“pwd”查看具体路径,以便后面配置,这里给出示例的路径:
/usr/local/apache-maven-3.9.4
jenkins
jenkins的安装可以在这个地址下载链接Jenkins download and deployment
后台运行 Jenkins:
使用以下命令在后台运行 Jenkins:
java -jar jenkins.war --httpPort=8080
这将在 8080 端口启动 Jenkins。如果您希望使用不同的端口,请更改 --httpPort
参数的值。
访问 Jenkins Web 界面:
在浏览器中输入 http://localhost:8080
,然后按照 Jenkins 配置向导中的指示进行设置。在需要输入管理员密码时,请查找 Jenkins 日志中的初始密码,并在配置向导中使用它。
将 Jenkins 配置为服务(可选):
如果您希望将 Jenkins 配置为系统服务,以便在系统启动时自动运行,您可以创建一个 Systemd 服务单元。您可以创建一个名为 /etc/systemd/system/jenkins.service
的文件,并在其中添加以下内容:
plaintextCopy code[Unit]
Description=Jenkins Server
After=network.target
[Service]
User=
ExecStart=/usr/bin/java -jar /path/to/jenkins.war --httpPort=8080
Restart=always
[Install]
WantedBy=multi-user.target
请将
替换为您的用户名,并将 /path/to/jenkins.war
替换为您实际下载的 Jenkins WAR 文件的路径。然后,使用以下命令启用和启动服务:
bashCopy codesudo systemctl enable jenkins
sudo systemctl start jenkins
打开页面后会有一些基础的配置和插件的安装记得选默认的(因为,你也不知道需要什么插件,当然我也不知道),自行安装一下,如果要查看管理员密码的话,可以使用
cat命令+[页面提示的路径]
进入后,打开点击系统管理,在其中找到插件管理,在第二个选项中安装Docker相关的插件
这个是我已经安装的(OS:因为不知道哪个对应哪个,所以全点啦)
所有的插件安装完成后,继续回服务器中重启jenkins
sudo systemctl restart jenkins
还是回到系统管理中,找到全局工具配置打开,看图配置吧,只要路径对就行了
然后再次新建一个凭证,选择
这里只需要输入Secret即可,这个值是Github的访问密钥,大概生成步骤为:
进入Github,点击头像,选择Settings,滑到最后选择Developer Settings,点击Personal access tokens下第一个直接生成,然后填写就行。
然后备注写成token,点击创建
好,现在凭证配置完毕,到时候需要用到的时候,可以来此查看。
接下来还是系统管理中点开系统配置,找到GitHub的位置,进行连接测试
这个名称就是你的GitHub的用户名,记得替换,凭证,选择token凭证,进行测试,如果不行,请重新配置token,或重新生成token (tnnd,这苦不能我一个受!)
好!很有精神!现在所有配置就完成了,到这里就可以新建一个Job来搭建部署了!
好,到这里,就可以进行构建部署了,为了演示方便,我将使用下面的Java项目来当做示例:
ZhMenX的测试项目,可以下载下来调试一下。如果,我记得绑定了资源,可以查看下。
然后就是把这个项目放到你的github上面了
之后就是新建任务了
我们这里选择流水线(小声BB:目前只尝试过这个)命名为Test
这里就是配置的地方,选择Github项目的选项,然后输入自己的github项目地址
然后就是触发器的构建
这里我使用了轮询(我也想使用Github hook,但是不会,有会的大神,请教教我,我找不到那个jenkins的URL)
最后就是定义流水钱的脚本了,这里我提供一个示例:
pipeline {
agent any
tools {
// 指定使用的JDK工具
jdk 'jdk17'
}
environment {
JDK_VERSION = '17'
MAVEN_VERSION = '3.9.4'
DOCKER_IMAGE_NAME = 'test_java'
MAVEN_HOME = '/usr/local/apache-maven-3.9.4' // 设置Maven的路径
DOCKER_HOME = '/usr/bin/docker' // 设置Docker的路径
PATH = "${tool 'jdk17'}/bin:${MAVEN_HOME}/bin:${DOCKER_HOME}:${env.PATH}"
}
stages {
stage('Checkout') {
steps {
// 检出代码库到工作目录
checkout([
$class: 'GitSCM',
branches: [[name: '*/master']], // 指定主分支名称
userRemoteConfigs: [[
url: '[email protected]:ZhMenX/Test.git', // GitHub仓库URL需要替换为自己的
credentialsId: '' // 您的凭证ID 替换为自己的,这个就是ssh那个
]]
])
}
}
stage('Build and Test') {
steps {
// 构建和测试Spring Boot项目
sh 'mvn clean install'
}
}
stage('Dockerize') {
steps {
script {
def dockerImageTag = "${DOCKER_IMAGE_NAME}:${BUILD_NUMBER}"
// 检查是否存在同名容器并停止
def existingContainerId = sh(script: "docker ps -aq -f name=${DOCKER_IMAGE_NAME}", returnStdout: true).trim()
if (existingContainerId) {
echo "Stopping existing container: ${existingContainerId}"
sh "docker stop ${existingContainerId}"
}
// 检查是否存在同名镜像
def existingImageId = sh(script: "docker images -q ${DOCKER_IMAGE_NAME}", returnStdout: true).trim()
if (existingImageId) {
echo "Deleting existing image: ${existingImageId}"
// 停止使用镜像的容器
def runningContainers = sh(script: "docker ps -aq -f ancestor=${existingImageId}", returnStdout: true).trim()
if (runningContainers) {
sh "docker stop ${runningContainers}"
}
// 删除镜像
sh "docker rmi -f ${existingImageId}"
}
sh "docker build -t ${dockerImageTag} ." // 构建 Docker 镜像
sh "docker run -d -p 8090:8090 ${dockerImageTag}" // 运行 Docker 容器
}
}
}
}
}
最后补充一下:当需要修改端口时,测试项目中dockerfile和application.yml都需要修改,以及流水线脚本。
OK,到这里就完成了,当然,很大概是运行不成功的,哈哈哈哈哈哈哈哈,感受痛苦吧!
原因,主机密钥的配置问题2
解决方案:
ssh -T [email protected]
ssh-keyscan github.com >> ~/.ssh/known_hosts
当前用户没有docker权限,这个不管事的话,只能试试重启大法了
sudo usermod -aG docker $USER
作为经历过docker 权限错误洗礼的我来说,我也没啥其他办法,擦…
docker run -d --name jenkins-dind --privileged --user root -v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts
,但是这样并不能解决jenkins执行docker在脚本中执行docker run
等命令,提示docker:not found的问题