anolis os 8.9安装jenkins

一、系统版本

# cat /etc/anolis-release 
Anolis OS release 8.9

二、安装

# dnf install -y epel-release

# wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo

# rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key

三、安装jdk node

下载:Java Archive Downloads - Java SE 21

# tar -zxf jdk-21.0.5_linux-x64_bin.tar.gz -C /usr/local/

下载:Index of /dist/v20.13.1/

# tar -xf node-v20.13.1-linux-x64.tar.xz -C /usr/local/

# vi /etc/profile

export JAVA_HOME=/usr/local/jdk-21.0.5

export NODE_HOME=/usr/local/node-v20.13.1-linux-x64
export PATH=${MAVEN_HOME}/bin:$JAVA_HOME/bin:${NODE_HOME}/bin:${PATH}

# source /etc/profile

# java --version
java 21.0.5 2024-10-15 LTS
Java(TM) SE Runtime Environment (build 21.0.5+9-LTS-239)
Java HotSpot(TM) 64-Bit Server VM (build 21.0.5+9-LTS-239, mixed mode, sharing)

# node -v
v20.13.1
[root@jekins-anolis-2-100 local]# npm -v
10.5.2

# npm config set registry http://registry.npmmirror.com

# npm install -g pnpm

# pnpm -v
10.3.0

四、安装jenkins

# dnf install jenkins -y

三、启动

# vi /usr/lib/systemd/system/jenkins.service

Environment="JAVA_HOME=/usr/local/jdk-21.0.5"

# systemctl daemon-reload

# systemctl daemon-reload
# systemctl start jenkins

# systemctl enable jenkins

四、配置

修改密码:

点击继续使用admin账户后的密码,如果忘记修改密码退出后,按下面操作:

# cat /var/lib/jenkins/secrets/initialAdminPassword

五、安装插件

语言:

六、配置

6.1 nodejs配置

6.2 git配置

七、kubernetes配置

7.1 账户配置

7.2 clouds配置

八、jenkins使用docker问题解决

8.1 提示docker:permission denied

# cd /var/run/

# ls -lh docker.sock

srw-rw----  1 root           docker            0 2月  12 11:39 docker.sock

# chmod o+rw docker.sock 
# ls -lh docker.sock 
srw-rw-rw- 1 root docker 0 2月  12 11:39 docker.sock

8.2  denied: requested access to the resource is denied

# docker login 192.168.x.x

会在宿主目录生成下面文件:

# ls .docker/
config.json

拷贝到/var/lib/jenkins下,并修改权限:

# cp -r .docker /var/lib/jenkins/

# chown -R jenkins:jenkins /var/lib/jenkins/.docker
# ls -lh /var/lib/jenkins/.docker
-rw------- 1 jenkins jenkins  80 2月  12 14:14 config.json

九、jenkins配置k8s的managed files

十、测试代码

def gitlab_auth="20968eb7-xxxx-xxxx-xxxx-xxxxxxxxxx"
def gitlab_url="http://git.kyc.com/20220712dev/platform-crm.git"
def k8s_auth = "1b56a2fa-7117-xxxx-xxxx-xxxxxxxxxxxx"
pipeline {
  agent any
  environment {
      IMAGE_BUILD="${BUILD_ID}"
      JOB_NAME="${env.JOB_NAME}"
  }
  parameters {
      choice (choices: ['master'], description: '指定配置文件',name: 'config')
  }
  stages {
      stage('拉取代码'){
          steps {checkout([$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], userRemoteConfigs: [[credentialsId: "${gitlab_auth}", url: "${gitlab_url}"]]])
          }
      }
      stage('daima代码编译'){
          steps {
          sh """
          cd ${JOB_NAME}
          echo "代码编译"
          source /etc/profile
          
          node --version
          npm config set prefix '~/.npm-global'
          npm config set registry https://registry.npmmirror.com
          npm install -g pnpm
          pnpm install
          npm run build
          cd dist/
          tar -czf ../dist.tar ./*
          """
          }
      }
      stage('Dockerfile'){
            steps{
                sh '''
                cd ${JOB_NAME}
                cat > Dockerfile <<EOF
FROM registry.openanolis.cn/openanolis/nginx:1.14.1-8.6
ADD dist.tar /usr/share/nginx/html
EOF
                '''
            }
        }
        stage('制作上传镜像'){
            steps{
                sh '''
                cd ${JOB_NAME}
                docker build -t 192.168.2.51/crm/${JOB_NAME}:${IMAGE_BUILD} .
                docker push 192.168.2.51/crm/${JOB_NAME}:${IMAGE_BUILD}
                docker rmi 192.168.2.51/crm/${JOB_NAME}:${IMAGE_BUILD}
                '''
            }
        }
        stage('远程清理'){
            steps{
                sh '''
                cd ${JOB_NAME}
                rm -rf dist.tar
                '''
            }
        }
        stage('yaml'){
            steps{
                sh '''
                cat > /var/lib/jenkins/workspace/${JOB_NAME}/${JOB_NAME}/${JOB_NAME}.yaml <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
  name: crm-web
  namespace: crm
spec:
  replicas: 2
  selector:
    matchLabels:
      app: crm-web
  template:
    metadata:
      labels:
        app: crm-web
    spec:
      containers:
      - name: crm-web
        image: 192.168.2.51/crm/${JOB_NAME}:${IMAGE_BUILD}
        ports:
        - containerPort: 80
        envFrom:
        volumeMounts:
        - name: crm-web
          mountPath: /usr/share/nginx/html/environment.js
          subPath: environment.js
        - name: tz
          mountPath: /etc/localtime
        livenessProbe:
          tcpSocket:
            port: 80
          initialDelaySeconds: 40
          periodSeconds: 10
        readinessProbe:
          tcpSocket:
            port: 80
          initialDelaySeconds: 40
          periodSeconds: 10
      volumes:
      - name: crm-web
        configMap:
          name: environment
          items:
          - key: "environment.js"
            path: "environment.js"
      - name: tz
        hostPath:
          path: /etc/localtime
      dnsPolicy: "None"
      dnsConfig:
        nameservers:
          - 10.96.0.10
        searches:
          - svc.cluster.local
          - cluster.local
---
apiVersion: v1
kind: Service
metadata:
  name: crm-web
  namespace: crm
spec:
  type: NodePort
  selector:
    app: crm-web
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
    nodePort: 31641
EOF
                '''
            }
        }
        stage('应用发布'){
            steps{
                configFileProvider([configFile(fileId: "${k8s_auth}", targetLocation: "admin.kubeconfig")]){
                sh"""
                cd ${JOB_NAME}
                kubectl apply -f ${JOB_NAME}.yaml -n crm --kubeconfig=../admin.kubeconfig
                """
                }
            }
        }
        stage("info"){
          steps{
              sh """
              echo "${JOB_NAME}使用的端口号是:192.168.2.34:31641"
              """
          }
      }
  }
}

--kubeconfig=../admin.kubeconfig

这个需要根据实际目录去写:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/968402.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python办公自动化之PDF

python版本&#xff1a;3.13.1 开发工具&#xff1a;pycharm 安装三方库&#xff1a;pypdf2 、pdfplumber、pymupdf 一、从PDF中提取文字 用Python从PDF中提取文字-CSDN博客 二、从PDF中提取表格 用Python从PDF中提取表格-CSDN博客 三、拆分和合并PDF文件 用Python拆…

变化检测相关论文可读list

一些用得上的&#xff1a; 遥感变化检测常见数据集https://github.com/rsdler/Remote-Sensing-Change-Detection-Dataset/ 代码解读&#xff1a;代码解读 | 极简代码遥感语义分割&#xff0c;结合GDAL从零实现&#xff0c;以U-Net和建筑物提取为例 NeurIPS2024: https://mp.w…

ASP.NET Core SignalR案例:导入英汉词典

Ecdict 下载词典文件stardict.7z&#xff0c;解压&#xff0c;stardict.csv是一个CSV格式的文本文件&#xff0c;文件的第一行是表头&#xff0c;除第一行外&#xff0c;其他每行文本是一个单词的相关信息&#xff0c;用逗号分隔的就是各个列的值。英汉词典ECDICT中导入单词到…

元宵佳节,我的创作纪念日:技术之路的回顾与展望

今天是元宵节&#xff0c;一个象征着团圆与美好的节日。巧合的是&#xff0c;今天也是我作为技术博客博主的创作纪念日。在这个特别的日子里&#xff0c;我想和大家分享我的创作故事&#xff0c;回顾初心、总结收获、展望未来&#xff0c;同时也希望能为正在技术道路上探索的你…

python实现常见数学概率分布

常见正态分布 1.贝塔分布1.1 概率密度函数1.2参数对分布形状的影响1.3 应用场景1.4 python实现 2. 帕累托分布&#xff08;80/20法则&#xff09;3. 正态分布&#xff08;高斯分布&#xff09;3.1 正态分布对应性质3.2 正态分布对应图像![在这里插入图片描述](https://i-blog.c…

本地生活案例列表案例

1.实现导航跳转 2.设置标题内容并创建编译模式 3.获取并且渲染商铺列表数据 获取数据 渲染页面 4.实现初步上拉加载效果 4.1配置loading效果 4.3配置上拉触底距离&#xff0c;并且使页码值自增加1&#xff0c;获取更多数据 节流处理 5.判断数据是否加载完毕 当没有后续数据了…

.NET版Word处理控件Aspose.Words教程:使用 C# 删除 Word 中的空白页

Word 文档中的空白页会使其看起来不专业并扰乱流程。用户会遇到需要删除 Word 中的空白页的情况&#xff0c;但手动删除它们需要时间和精力。在这篇博文中&#xff0c;我们将探讨如何使用 C# 删除 Word 中的空白页。 本文涵盖以下主题&#xff1a; C# 库用于删除 Word 中的空…

Unity崩溃后信息结合符号表来查看问题

目录 SO文件符号表对调试和分析的重要性调试方面分析方面 错误数据安装Logcat解释符号表设置符号文件路径生成解析 相关参考 SO文件 so 文件&#xff08;Shared Object File&#xff0c;共享目标文件&#xff09;和符号表紧密相关&#xff0c;它们在程序的运行、调试和分析过程…

mapbox进阶,添加绘图扩展插件,裁剪线

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️MapboxDraw 绘图控件二、🍀添加绘图扩…

DeepSeek:从入门到精通

在人工智能飞速发展的今天&#xff0c;DeepSeek作为一款备受瞩目的AI工具&#xff0c;正以其强大的功能和开源理念改变着我们的生活和工作方式。本文将带你深入了解DeepSeek&#xff0c;从基础入门到进阶应用&#xff0c;助你快速掌握这一前沿工具。 文末有详细资料可下载 文末…

【清晰教程】通过Docker为本地DeepSeek-r1部署WebUI界面

【清晰教程】本地部署DeepSeek-r1模型-CSDN博客 目录 安装Docker 配置&检查 Open WebUI 部署Open WebUI 安装Docker 完成本地DeepSeek-r1的部署后【清晰教程】本地部署DeepSeek-r1模型-CSDN博客&#xff0c;通过Docker为本地DeepSeek-r1部署WebUI界面。 访问Docker官…

八、OSG学习笔记-

前一章节&#xff1a; 七、OSG学习笔记-碰撞检测-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/145558132?spm1001.2014.3001.5501 一、了解OSG图元加载显示流程 本章节代码&#xff1a; OsgStudy/wids CuiQingCheng/OsgStudy - 码云 - 开源中国https:…

[笔记] 汇编杂记(持续更新)

文章目录 前言举例解释函数的序言函数的调用栈数据的传递 总结 前言 举例解释 // Type your code here, or load an example. int square(int num) {return num * num; }int sub(int num1, int num2) {return num1 - num2; }int add(int num1, int num2) {return num1 num2;…

在 Mac ARM 架构上使用 nvm 安装 Node.js 版本 16.20.2

文章目录 1. 安装 nvm&#xff08;如果还没有安装的话&#xff09;2. 加载 nvm 配置3. 列出特定系列的 Node.js 版本&#xff08;远程&#xff09;&#xff1a;4. 安装 Node.js 16.20.25. 使用指定版本的 Node.js6. 验证安装 在 Mac ARM 架构上使用 nvm 安装 Node.js 版本 16.…

物联网水质监测系统设计与实现/基于STM32的水产养殖云监控系统设计

背景 随着物联网技术的飞速发展&#xff0c;各行各业都在逐步实现智能化管理&#xff0c;水质监测系统作为环境监测中的一个重要环节&#xff0c;近年来备受关注。如何高效、精准地监测水质&#xff0c;尤其是在远程无法到达的地方&#xff0c;成为了一个迫切需要解决的问题。…

SAP Smartforms 货币和数量字段设置参考及格式,消息号是SSFCOMPOSER601

SAP Smartforms 货币和数量字段设置参考及格式&#xff0c;消息号是SSFCOMPOSER601 在开发SAP Smartforms 时&#xff0c;会遇到设置打印的货币字段或数量字段在打印预览时无法显示报错&#xff08;消息号是SSFCOMPOSER601&#xff0c;提示参考字段IS_DATA-GESME在表格中未知&…

Hbuildx开发的小程序,运行到微信开发者工具后,显示空白报错Pages not been registered yet,解决方法

问题描述&#xff1a; Hbuildx开发的小程序&#xff0c;运行到 微信开发者工具后&#xff0c;显示空白 报错Pages not been registered yet 解决方法&#xff1a; 1.检查报错的这个pages页面 &#xff0c;实际是否存在。 2.路由文件中是否定义了该pages页面。 3.路由文件中…

稀疏计算的软硬件协同:FPGA有力推动硬件发展

稀疏计算协同&#xff1a;FPGA驱动进步 ©作者|wcychuiyuw 来源|神州问学 引言 在当今科技飞速发展的时代&#xff0c;端侧算力的重要性日益凸显&#xff0c;其中 ASIC (专用集成电路) 和 SoC 架构 (System on Chips) 成为端侧算力不可或缺的重要组成部分。它们以其独特的…

Cell子刊《Patterns》最新综述:大语言模型Attention Heads的可解释性研究

自从大语言模型&#xff08;LLMs&#xff09;在各种任务中展现出卓越性能以来&#xff0c;其内部机制的解读已经成为领域内的热门话题。尽管许多研究人员从各个方面做出了尝试并得到了一些结论&#xff0c;但现阶段仍缺乏一个全面的视角来对现有成果进行系统化的归纳与总结。 为…

【Java八股文】01-Java基础面试篇

【Java八股文】01-Java基础面试篇 概念Java特点Java为什么跨平台JVM、JDK、JRE关系 面向对象什么是面向对象&#xff0c;什么是封装继承多态&#xff1f;多态体现的方面面向对象设计原则重载重写的区别抽象类和实体类区别Java抽象类和接口的区别抽象类可以被实例化吗 深拷贝浅拷…