首页 > 其他分享 >jenkins拉取远程仓库的代码如gitlab

jenkins拉取远程仓库的代码如gitlab

时间:2024-07-09 14:09:18浏览次数:17  
标签:git flask root gitlab 拉取 master ssh jenkins my

jenkins结合远程仓库


既然是持续集成,对代码进行构建,我们得获取代码仓库的内容,这里选择我们搭建的gitlab服务器

开发工程师的机器

1. 在window上生成ssh-key

$ ssh-keygen


2.添加到代码仓库github/gitlab都玩一玩,公司用这俩居多


gitlab上添加该机器的ssh-key允许上传代码,咱这里就不区分多个账户,多个权限了,都先基于root账户,实现部署流程,理解jenkins是怎么工作的

gitlab新建项目

开发提交代码

1.准备好代码

这里利用python程序,flask代码做实验

# coding:utf-8

from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return '<h1>Hello 超哥带你学linux www.yuchaoit.cn</h1>'

if __name__ == '__main__':
    app.run()

2.克隆gitlab代码仓库到本地

1.先设置git身份
Sylar@DESKTOP-G6C412R MINGW64 ~/Desktop
$ git config --global user.name "laoliu"

Sylar@DESKTOP-G6C412R MINGW64 ~/Desktop
$ git config --global user.email "[email protected]"





2.克隆代码

Sylar@DESKTOP-G6C412R MINGW64 ~/Desktop
$ git clone [email protected]:root/my_flask.git
Cloning into 'my_flask'...
The authenticity of host '10.0.0.99 (10.0.0.99)' can't be established.
ED25519 key fingerprint is SHA256:fsFB+VUXvu9atyktELhNhs0zzRdli9XbqehOn2We9yo.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.0.0.99' (ED25519) to the list of known hosts.
warning: You appear to have cloned an empty repository.

3.开发代码,进行提交,推送到代码仓库

Sylar@DESKTOP-G6C412R MINGW64 ~/Desktop/my_flask (master)
$ ls
my_app.py

Sylar@DESKTOP-G6C412R MINGW64 ~/Desktop/my_flask (master)
$ cat my_app.py

# coding:utf-8

from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return '<h1>Hello 超哥带你学linux www.yuchaoit.cn</h1>'

if __name__ == '__main__':
    app.run(host="0.0.0.0")


4.版本提交,推送gitlab
$ git add .

$ git commit -m 'my_app.py 首次开发'
[master (root-commit) 3e973ff] my_app.py 首次开发
 1 file changed, 11 insertions(+)
 create mode 100644 my_app.py


Sylar@DESKTOP-G6C412R MINGW64 ~/Desktop/my_flask (master)
$ git push -u origin master
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 20 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 402 bytes | 402.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To 10.0.0.99:root/my_flask.git
 * [new branch]      master -> master
branch 'master' set up to track 'origin/master'.

检查代gitlab码仓库

配置jenkins的job获取代码仓库

给jenkins服务器安装git
[root@jenkins-100 ~]#yum install git -y

添加认证,用ssh-key的方式

添加jenkins服务器的ssh-key到gitlab服务器
[root@jenkins-100 ~]#ssh-keygen -t rsa -C "www.yuchaoit.cn"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:WRnTFIqkwh7IXB2gWyFkrkE1BLwx9bYHtD9YRYFdbgk www.yuchaoit.cn
The key's randomart image is:
+---[RSA 2048]----+
|.+O=++..=E=+o.   |
|.O *+.o+.oo=o    |
|. X ==... ++     |
| + +.o*  o.      |
|. . .o +S        |
|      . .        |
|                 |
|                 |
|                 |
+----[SHA256]-----+


[root@jenkins-100 ~]#cat ~/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDA9C597NnGpdyRYkDtF4zQmTa+bRxXqll3XX7LJDjLfsgfUZbfolj0KwkmdIvpQjecDrKff33bOIhGQQ64okmQlKPyp+iISO6sRCH1p2VhZNFEWOeBRtzA+TFrLX4WeVFJFg2IuOE1cFuKGESBC7pqZZf4H12QaNCunLwWLTrqoUGvfW0+rXOBGaXPW1yNpTMevnPkN81ZKiqhONtUE+suYwwYi8zgi54CXZZBNEcyXhZH2gLLser/hy+16vqYZ65enGBcfPYBNSHt35DcNs/Qs6nLpT/UBxblQwFI5ktq7C6cm6igYVAuVpomDNdD+LCjvRhijQBCbxlvHwXcO9Tl www.yuchaoit.cn

添加jenkins的认证凭证,使用自己的私钥即可


或者使用账号密码添加认证(gitlab账号密码)

至此,jenkins就可以下载gitlab的代码了。
试试看能下载什么,点击构建

开发脚本实现项目部署

注意是,jenkins > 目标机器(web-7测试)

# 注意免密登录了
ssh-copy-id [email protected]

部署代码,可以先成脚本,然后远程去调用



#!/bin/bash
# author: www.yuchaoit.cn

# 发送代码到目标机器
cd /var/lib/jenkins/workspace/my_flask  && scp my_app.py [email protected]:/opt/

# 给远程机器部署python3环境,代码运行环境
ssh [email protected] "yum install python3 python3-devel python3-pip"
ssh [email protected] "pip3 install flask  -i https://pypi.tuna.tsinghua.edu.cn/simple/"


# 远程启动进程,后台运行
# 重启进程
ssh [email protected] "pkill python3"

ssh [email protected] "nohup /usr/bin/python3 /opt/my_app.py >/dev/null 2>&1 &"


测试访问web7的flask项目

完成项目更新(鼠标一点,自动更新,操心啥啊)

让开发去写代码就好了


Sylar@DESKTOP-G6C412R MINGW64 ~/Desktop/my_flask (master)
$ vim my_app.py

Sylar@DESKTOP-G6C412R MINGW64 ~/Desktop/my_flask (master)
$

Sylar@DESKTOP-G6C412R MINGW64 ~/Desktop/my_flask (master)
$ git add .
warning: in the working copy of 'my_app.py', LF will be replaced by CRLF the next time Git touches it

Sylar@DESKTOP-G6C412R MINGW64 ~/Desktop/my_flask (master)
$ git commit -m '更新代码'
[master 5ff3d74] 更新代码
 1 file changed, 1 insertion(+), 1 deletion(-)


推送代码

Sylar@DESKTOP-G6C412R MINGW64 ~/Desktop/my_flask (master)
$ git push -u origin master
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 20 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 301 bytes | 301.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
To 10.0.0.99:root/my_flask.git
   3604269..5ff3d74  master -> master
branch 'master' set up to track 'origin/master'.

鼠标一点,下班

标签:git,flask,root,gitlab,拉取,master,ssh,jenkins,my
From: https://www.cnblogs.com/btcm409181423/p/18291706

相关文章

  • 4.7 在 VS Code 中校验 Jenkinsfile
    在日常工作中,我经常需要创建或修改很多Jenkinsfile,有时还会发生错误。这是一个非常繁琐的流程——修改Jenkinsfile,提交、推送,然后等Jenkins提醒你少加了一个括号。Command-linePipelineLinter(https://jenkins.io/doc/book/pipeline/development/)可以有效地减少编写Jenk......
  • 7 Jenkins Job迁移
    在工作中可能会遇到这样的场景,即需要把一个JenkinsMaster上的job迁移到另外一台JenkinsMaster上,那怎么做比较好呢?如果只是单独的一个job且这个job的设置很简单,这种情况下当然可以直接在新的JenkinsMaster上直接创建job然后从旧的job拷贝下配置即可。但如果job很多,或者job的配......
  • 4.2 Jenkins流水线语法
    声明式流水线声明式Pipleine是官方推荐的语法,声明式语法更加简洁。所有的声明式Pipeline都必须包含一个pipeline块中,比如:pipeline{//run} 在声明式Pipeline中的基本语句和表达式遵循Groovy的语法。但是有以下例外:流水线顶层必须是一个块,特别是pipeline{}。不需......
  • 4.4 Jenkins共享库应用
    由来与演进在Jenkins1.x中,对于job的配置大多是基于图形界面的,也就是说,要在GUI页面手动设置相关的job参数。随着不同类型和用途的job越来越多,参数越来越复杂,难以有效地管理数量庞大的图形界面配置信息,也无法有效追踪和记录配置的更改。在Jenkins2.0中,基于Pipeline,用户可以在一......
  • 2.2 war 包安装 jenkins
    war包安装jenkins参考:https://www.jenkins.io/doc/pipeline/tour/getting-started/要求:java8或java11下载jenkinswgethttp://mirrors.jenkins.io/war-stable/latest/jenkins.warwgethttps://mirrors.huaweicloud.com/jenkins/war/2.250/jenkins.war 运行jenkinsj......
  • 2.1 yum 安装 jenkins
    yum安装jenkins官方文档:https://pkg.jenkins.io/redhat-stable/http://mirrors.jenkins-ci.org/openinnewwindow可选择Jenkins长期支持版本或Jenkins每周版本进行安装。长期支持版本每12周从定期发布流中选择一个LTS(长期支持)openinnewwindow发布作为该时间段的稳定发......
  • 3.1 Jenkins用户权限管理
    Jenkins默认使用的是自带的数据库管理用户,支持同步LDAP、Github等认证集成。关于用户与权限管理是Jenkins比较弱的一点,当大规模授权的时候建议使用API接口授权,否则当你打开web页面授权时,会很乱加载缓慢,最终导致保存失败权限丢失。用户管理配置用户接入入口:系统管理->全局安......
  • 4.1 开始编写Jenkinsfile
    为什么使用pipeline?本质上,jenkins是一个自动化引擎,它支持许多自动模式。流水线向Jenkins添加了一组强大的工具,支持用例、简单的持续集成到全面的持续交付流水线。通过对一系列的发布任务建立标准的模板,用户可以利用更多流水线的特性,比如:代码化:流水线是在代码中实现的,通常会......
  • jenkins
    安装jenkins准备好jenkins服务器,建议配置至少4G、2C1.去清华源下载https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/2.下载好如下系列软件包即可[root@jenkins-100/opt]#lsjdk-8u181-linux-x64.rpmjenkins-2.190.1-1.1.noarch.rpmjenkins_plugins.tar.gz3.......
  • 1.2 Jenkins简介
    简单介绍Jenkinsopeninnewwindow前身是Hudson,Jenkins是一款开源CI&CD软件,基于Java开发,用于自动化各种任务,包括构建、测试和部署软件。Jenkins支持各种运行方式,可通过系统包、Docker或者通过一个独立的Java程序。Jenkins项目产生两个发行线,长期支持版本(LTS)和每......