服务器搭建Jenkins流水线

环境

Jenkins+Gitee+k8s+阿里云服务器, Jenkins单独用一台2c2g的服务器作为打包机部署Jenkins,k8s使用三台2c4g云服务器搭建,配置都很低,学生党云上玩玩
服务器系统ubuntu20.04
jenkins版本(2.414.3)目前最新版
java11

这里做个版本说明,jenkins3.几(好像是3.8,忘记了)之后的版本就不支持jdk8了
所以要是要使用jdk8需要下载之前的版本的jenkins

部署

Jenkins+Gitee+阿里云镜像容器服务+k8s部署前端vue项目
部署流程
本地push代码到gitee触发Jenkins自动拉取代码打包成docker镜像上传到阿里云镜像容器服务然后再到k8s里面去更新镜像

安装JDK11

apt-get update
apt-get -y install openjdk-11-jdk

java --version

安装Git

apt-get -y install git

# 然后生成密钥配置到Gitee
ssh-keygen -t rsa -C "你的邮箱"

安装maven

我选的版本是maven-3.8.3,这个根据自己喜好选择

# 自己找个maven的国内镜像下载吧,这个官网很慢,我后面写的笔记就懒得找了
wget https://archive.apache.org/dist/maven/maven-3/3.8.3/binaries/apache-maven-3.8.3-bin.tar.gz

tar -zxvf apache-maven-3.8.3-bin.tar.gz 

解压然后配置一下阿里云镜像源,环境变量,自己网上找找,就不详细写了

Docker安装

自行百度教程

Jenkins安装

默认 Ubuntu 软件包中包含的 Jenkins 版本通常落后于项目本身的最新可用版本。为确保您拥有最新的修复和功能,请使用项目维护的包来安装 Jenkins。

首先,将存储库密钥添加到系统:

wget -q -O - https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo apt-key add -
# 添加密钥后,系统将返回OK。

# 接下来,让我们将 Debian 软件包存储库地址附加到服务器的sources.list:

sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt update
# 最后,我们将安装 Jenkins 及其依赖项。

sudo apt install jenkins

# 然后启动,启动默认8080端口,端口没有开放的开放一下
sudo systemctl start jenkins

# 查看状态
sudo systemctl status jenkins

Jenkins设置

通过ip:8080访问Jenkins服务
从服务器上获取Jenkins初始密码

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

在这里插入图片描述
然后直接推荐插件安装
在这里插入图片描述
然后用admin登录就行了
在这里插入图片描述
然后直接全部下一步就进去了
进去之后改一下admin的密码
在这里插入图片描述
装完之后到插件管理里面下载gitee、publish over ssh、Nodejs、Git Parameter勾选下载完重启,重启一下Jenkins

然后在系统管理–>系统配置里面配置一下gitee
在这里插入图片描述
没有令牌通过旁边的gitee地址去获取一下回来添加
在这里插入图片描述
还是这里面配置一下ssh
在这里插入图片描述

然后配置一下nodejs,选择自己要用的nodejs版本就行
系统管理–>全局工具配置
在这里插入图片描述

开始部署前端vue项目

新建流水线
在这里插入图片描述
然后配置gitee推送通知jenkins
需要填写的链接和密码都在jenkins里面生成
在这里插入图片描述

在这里插入图片描述
然后接下来就是添加几个git parameters 包括阿里云镜像仓库登录账号密码,k8s机器ssh登录ip和密码,后面的脚本会用到

下面在执行docker命令的时候会报错,是因为jenkins没有docker权限,改一下权限就行
当然这是偷懒方法,正确的做法是把用户加入到docker权限组里面去

chmod -R 777 /var/run/docker.sock

这里直接粘贴Jenkinfiles脚本了,上边按着jenkins里面的配置配自己需要的就行了,我太懒了,懒得写了,需要交流可以私信我

pipeline {
    agent any

    environment {
        APP_NAME = ''
        REGISTRY = 'r'
        NAMESPACE = ''
    }

    stages {
        stage('拉取代码') {
            steps {
                echo '***************git pull*****************'
                checkout scmGit(branches: [[name: '*/${branch}']], extensions: [], userRemoteConfigs: [[url: 'https://gitee.com/****']])
                echo '**************拉取最新代码成功**************'
            }
        }
        stage('前端打包') {
            steps {
                echo '*****前端开始打包******'
                nodejs('NODEJS_14.19.0') {
                    // 设置镜像源
                    sh "npm config set registry https://registry.npm.taobao.org"
                    sh "npm install"
                    sh "npm run build"
                }
                echo '****前端打包成功****'
            }
        }
        stage('制作镜像推送到阿里云镜像服务') {
            steps {
                echo '***开始知制作和上传镜像***'
                withCredentials([usernamePassword(credentialsId: 'Docker',usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]){
                    sh '''echo "$PASSWORD" | docker login $REGISTRY -u "$USERNAME" --password-stdin
                          docker build -t $REGISTRY/******:$APP_NAME .
                          docker push $REGISTRY/********:$APP_NAME'''
                }
                echo '*******镜像制作上传阿里云镜像服务完成******'
            }
        }
        stage('部署到k8s') {
            steps {
                echo '*****开始部署到k8s*****'
                echo '*****登录k8s-master机器*****'
                sshPublisher(publishers: [sshPublisherDesc(configName: 'k8s-master-0', transfers: [sshTransfer(cleanRemote: false, excludes: '', 
                execCommand: 'kubectl set image *******', 
                execTimeout: 120000, 
                flatten: false, 
                makeEmptyDirs: false, 
                noDefaultExcludes: false,
                patternSeparator: '[, ]+', 
                remoteDirectory: '', 
                remoteDirectorySDF: false, 
                removePrefix: '', sourceFiles: '')],
                usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true)])
            }
        }
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值