一、gitlab
1.1 登录gitlab创建项目
项目名称等自定义,权限可以选择私有或者公有

1.2 gitlab 代码提交
创建好的项目下复制项目地址

#在gitlab服务器上创建一个目录
[root@k8s-node2 local]# cd test/
[root@k8s-node2 test]# ll
total 0
[root@k8s-node2 test]# pwd
/usr/local/test
[root@k8s-node2 test]# ll -la
total 0
drwxr-xr-x 2 root root 6 Oct 31 09:45 .
drwxr-xr-x. 16 root root 206 Oct 31 09:45 ..
#克隆项目
[root@k8s-node2 test]# git@192.168.198.147:root/xmls.git
-bash: git@192.168.198.147:root/xmls.git: No such file or directory
[root@k8s-node2 test]# git clone git@192.168.198.147:root/xmls.git
Cloning into 'xmls'...
remote: Enumerating objects: 79, done.
remote: Counting objects: 100% (44/44), done.
remote: Compressing objects: 100% (26/26), done.
remote: Total 79 (delta 22), reused 32 (delta 16), pack-reused 35
Receiving objects: 100% (79/79), 104.66 MiB | 11.57 MiB/s, done.
Resolving deltas: 100% (33/33), done.
#项目xmls已经克隆下来
[root@k8s-node2 test]# ll -la
total 0
drwxr-xr-x 3 root root 18 Oct 31 09:47 .
drwxr-xr-x. 16 root root 206 Oct 31 09:45 ..
drwxr-xr-x 3 root root 51 Oct 31 09:47 xmls
[root@k8s-node2 test]# cd xmls/
[root@k8s-node2 xmls]# ll -la
total 8
drwxr-xr-x 3 root root 35 Oct 31 09:48 .
drwxr-xr-x 3 root root 18 Oct 31 09:47 ..
drwxr-xr-x 8 root root 163 Oct 31 09:47 .git
-rw-r--r-- 1 root root 6183 Oct 31 09:47 README.md
#查询分支
[root@k8s-node2 xmls]# git branch -a
* main
remotes/origin/HEAD -> origin/main
remotes/origin/main
#创建xmzw分支
[root@k8s-node2 xmls]# git branch xmzw
[root@k8s-node2 xmls]# git branch -a
* main
xmzw
remotes/origin/HEAD -> origin/main
remotes/origin/main
remotes/origin/xmzw
#切换到xmzw分支
[root@k8s-node2 xmls]# git checkout xmzw
D xmtb.txt
Switched to branch 'xmzw'
[root@k8s-node2 xmls]# git branch -a
main
* xmzw
remotes/origin/HEAD -> origin/main
remotes/origin/main
remotes/origin/xmzw
#创建test文件,测试文件上传是否正常
[root@k8s-node2 xmls]# touch test.txt
#给test文件添加标志
[root@k8s-node2 xmls]# git add test.txt
#添加提交信息
[root@k8s-node2 xmls]# git commit -m "test commit"
[xmzw 6aa912c] test commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 test.txt
#提交,第一次提交提示报错。这是因为远程repository和本地的repository有冲突
[root@k8s-node2 xmls]# git push
To git@192.168.198.147:root/xmls.git
! [rejected] xmzw -> xmzw (non-fast-forward)
error: failed to push some refs to 'git@192.168.198.147:root/xmls.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
#解决上面报错,需要先pull拉取远程分支文件,在重新提交即可
[root@k8s-node2 xmls]# git pull origin xmzw
From 192.168.198.147:root/xmls
* branch xmzw -> FETCH_HEAD
Merge made by the 'recursive' strategy.
Jenkinsfile | 35 +++++++++++++++++++++++++++++++++++
copy.sh | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
deploy.yaml | 42 ++++++++++++++++++++++++++++++++++++++++++
harbor.sh | 32 ++++++++++++++++++++++++++++++++
xm_nginx.tar.gz | Bin 0 -> 146217984 bytes
xmyd.txt | 3 +++
6 files changed, 160 insertions(+)
create mode 100644 Jenkinsfile
create mode 100644 copy.sh
create mode 100644 deploy.yaml
create mode 100644 harbor.sh
create mode 100644 xm_nginx.tar.gz
create mode 100644 xmyd.txt
[root@k8s-node2 xmls]#
[root@k8s-node2 xmls]#
[root@k8s-node2 xmls]# ll
total 142820
-rw-r--r-- 1 root root 1352 Oct 31 10:01 copy.sh
-rw-r--r-- 1 root root 760 Oct 31 10:01 deploy.yaml
-rw-r--r-- 1 root root 852 Oct 31 10:01 harbor.sh
-rw-r--r-- 1 root root 2272 Oct 31 10:01 Jenkinsfile
-rw-r--r-- 1 root root 6183 Oct 31 09:47 README.md
-rw-r--r-- 1 root root 0 Oct 31 09:52 test.txt
-rw-r--r-- 1 root root 146217984 Oct 31 10:01 xm_nginx.tar.gz
-rw-r--r-- 1 root root 19 Oct 31 10:01 xmyd.txt
#重新提交,可以看到test文件已经成功上传
[root@k8s-node2 xmls]# git push
Counting objects: 6, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 501 bytes | 0 bytes/s, done.
Total 4 (delta 2), reused 0 (delta 0)
remote:
remote: To create a merge request for xmzw, visit:
remote: http://192.168.198.147/root/xmls/-/merge_requests/new?merge_request%5Bsource_branch%5D=xmzw
remote:
To git@192.168.198.147:root/xmls.git
bf35535..5455143 xmzw -> xmzw
二、Jenkins
2.1 Jenkins创建流水线项目
比如创建任务名称:pipeline的流水线项目,点击确定

2.2 项目配置
点击pipeline任务,点击配置

1. 选择scm,配置gitlab仓库地址,这里要复制http的地址。
2. 勾选参数化构建过程,配置版本为传参
3. 点击流水线语法,会自动转换成Jenkins脚本命令



三、流水线部署
3.1 在gitlab上创建一个Jenkins文件

内容如下:
大概流程:从git仓库拉取代码-发送目标服务器-上传镜像到harbor-使用k8s部署业务
pipeline {
agent any
stages {
stage('从git仓库拉取代码') {
steps {
checkout([$class: 'GitSCM', branches: [[name: '*/xmzw']], extensions: [], userRemoteConfigs: [[credentialsId: '8f6e9bea-7734-43d8-a6a2-d54e233fa9ff', url: 'http://192.168.198.147/root/xmls.git']]])
echo 'H从git仓库拉取代码成功'
}
}
stage('发送目标服务器') {
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: 'ssh', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '*tar.gz,*sh,*yaml')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
echo '发送目标服务器成功'
}
}
stage('上传镜像') {
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: 'ssh', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''ssh root@192.168.198.144
cd /usr/local/devops
sh harbor.sh $tag''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
echo '上传镜像成功'
}
}
stage('部署业务') {
steps {
sshPublisher(publishers: [sshPublisherDesc(configName: 'ssh', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''ssh root@192.168.198.144
cd /usr/local/devops
kubectl apply -f deploy.yaml
kubectl rollout restart -n my-ns-pipeline deployment my-deploy''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '', remoteDirectorySDF: false, removePrefix: '', sourceFiles: '')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
echo '部署业务成功'
}
}
}
}
3.2 推送镜像的脚本
[root@k8s-node2 xmls]# cat harbor.sh
#/bin/bash
imageTag=$1
echo > $imageTag
containerName=xm_nginx:${imageTag}
echo containerName: ${containerName}
cd /usr/local/devops
scp xm_nginx.tar.gz root@192.168.198.146:/usr/local/devops/
scp xm_nginx.tar.gz root@192.168.198.147:/usr/local/devops/
imageID=`docker images | grep xm_nginx |grep -v grep| awk '{print $3}'`
hostImageTag=`docker images | grep xm_nginx |grep -v grep| awk '{print $2}'`
echo imageID:$imageID hostImageTag:$hostImageTag
#删除旧镜像
if [[ "$hostImageTag" =~ "$imageTag" ]] ; then
docker rmi -f ${imageID}
echo "Delete Image ${imageID} Success"
fi
#加载镜像
docker load -i xm_nginx.tar.gz
echo "load Success"
#打标签
docker tag xm_nginx:$imageTag 192.168.198.144:80/xmzw/xm_nginx:latest
docker login 192.168.198.144:80 -u admin -p Harbor12345
docker push 192.168.198.144:80/xmzw/xm_nginx:latest
3.3 业务部署的yaml文件
[root@k8s-node2 xmls]# cat deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: my-deploy
name: my-deploy
namespace: my-ns-pipeline
spec:
replicas: 1
selector:
matchLabels:
app: my-deploy
template:
metadata:
creationTimestamp: null
labels:
app: my-deploy
spec:
containers:
- image: 192.168.198.144:80/xmzw/xm_nginx:latest
imagePullPolicy: Always
name: xm-nginx-hzsn5
ports:
- containerPort: 80
name: web
protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
name: my-svc
namespace: my-ns-pipeline
spec:
ports:
- port: 8081
name: http
targetPort: 80
nodePort: 31761
selector:
app: my-deploy
type: NodePort
3.4 把deploy.yaml,harbor.sh,Jenkinsfile都同步到gitlab仓库
xm_nginx.tar.gz为Nginx的1.23.1的镜像包,网上下载一个即可

3.5 gitlab上创建tag


3.6 构建
选择1.23.1,点击构建

成功构建

3.7 测试访问正常

我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie
我可以在Azure网站上部署RubyonRails吗? 最佳答案 还没有。目前仅支持.NET和PHP。 关于ruby-on-rails-RubyonRails可以部署在Azure网站上吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12964010/
这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/
我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions
前置步骤我们都操作完了,这篇开始介绍jenkins的集成。话不多说,看操作1、登录进入jenkins后会让你选择安装插件,选择第一个默认的就行。安装完成后设置账号密码,重新登录。2、配置JDK和Git都需要执行路径,所以需要先把执行路径找到,先进入服务器的docker容器,2.1JDK的路径root@69eef9ee86cf:/usr/bin#echo$JAVA_HOME/usr/local/openjdk-82.2Git的路径root@69eef9ee86cf:/#whichgit/usr/bin/git3、先配置JDK和Git。点击:ManageJenkins>>GlobalToolCon
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal
Ocra无法处理需要“tk”的应用程序require'tk'puts'nope'用奥克拉http://github.com/larsch/ocra不起作用(如链接中的一个问题所述)问题:https://github.com/larsch/ocra/issues/29(Ocra是1.9的"new"rubyscript2exe,本质上它用于将rb脚本部署为可执行文件)唯一的问题似乎是缺少tcl的DLL文件我不认为这是一个问题据我所知,问题是缺少tk的DLL文件如果它们是已知的,则可以在执行ocra时将它们包括在内有没有办法知道tk工作所需的DLL依赖项? 最佳答
我有一个类unzipper.rb,它使用Rubyzip解压文件。在我的本地环境中,我可以成功解压缩文件,而无需使用require'zip'明确包含依赖项但是在Heroku上,我得到一个NameError(uninitializedconstantUnzipper::Zip)我只能通过使用明确的require来解决问题:为什么这在Heroku环境中是必需的,但在本地主机上却不是?我的印象是Rails自动需要所有gem。app/services/unzipper.rbrequire'zip'#OnlyrequiredforHeroku.Workslocallywithout!class
我们在Ubuntu14.04和Gitlab9.3.7上运行,运行良好。我们正在尝试更新到Gitlabv9.3.8的最新安全补丁,但它给我们这个错误:Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension.currentdirectory:/home/git/gitlab/vendor/bundle/ruby/2.3.0/gems/re2-1.0.0/ext/re2/usr/local/bin/ruby-r./siteconf20170720-19622-15i0edf.rbextconf.rbcheckingformain(
出于某种原因,heroku尝试要求dm-sqlite-adapter,即使它应该在这里使用Postgres。请注意,这发生在我打开任何URL时-而不是在gitpush本身期间。我构建了一个默认的Facebook应用程序。gem文件:source:gemcuttergem"foreman"gem"sinatra"gem"mogli"gem"json"gem"httparty"gem"thin"gem"data_mapper"gem"heroku"group:productiondogem"pg"gem"dm-postgres-adapter"endgroup:development,:t