当前位置:首页 > CN2资讯 > 正文内容

gitlab部署要求太高 gitlab项目部署

3天前CN2资讯


配置需求

  • 1c 2g 服务器 1 台

尝试 Vultr、Amazon aws 和阿里云 ECS 后,得出结论: 若 Git Provider 为 GitHub,由于网络原因,应选用 Vultr 等 VPS 或 aws 等国外服务器。 但价格相对较国内云提供商较贵,若使用 1c 1g 服务器在构建中服务器容易崩溃。 Gitee 是国内连接速度最快的 Git Provider,但 Jenkins 对于 Gitee 的插件支持少。 所以采用 GitLab + 阿里云 Ecs 解决方案。

在明确需求之后,则需要参考官方文档着手部署 Jenkins 服务器。

Jenkins 会在 Build 完成之后 kill 掉脚本中开启的进程,所以建议使用 nohup java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war & 运行 Jenkins

服务器准备

  • git

Jenkins 需要从 GitLab 向 Jenkins 服务器拉取代码。

  • jdk1.8

Jenkins 需要运行在 Java 8 环境下

  • maven

该项目需要使用 Maven 打包

Jenkins 插件

  • Maven Integration

Jenkins 需要创建一个 Maven Item

  • Publish Over SSH

在 mvn 打包后需要部署到目标服务器上

  • GitLab Plugin

需要从 GitLab 拉取项目

  • GitLab Hook Plugin

配置 GitLab 触发器

Jenkins 配置

配置好插件后,需要对 Jenkins 进行一定的配置。

Publish Over SSH 配置

Manage Jenkins->Configure System 找到 Publish Over SSH 。 在 SSH ServersAdd 一个 SSH Server,正确填写项目部署服务器信息。 点击 Advanced,勾选 Use password authentication, or use a different key,正确填写密码,测试并保存。

项目配置

  • 新建项目

选择 Maven ProjectSource Code Management 选择 Git,填入项目地址,账户信息以及目标分支。

  • 配置触发器。

Build Triggers 中选择 Build when a change is pushed to GitLab,记下后面 GitLab webhook URL,根据需求配置 Advanced 中信息。

  • 配置构建后动作。

Post-build Actions 中选择已配置好的服务器,根据实际情况填写 Transfers 中信息。

e.g.

选项名称

填写参数

说明

Source files

**/workhelper*.jar

Jenkins 会找到目录下符合该正则表达式的文件

Remove prefix

target/

通常 Maven 打包后文件都会在 target 目录下

Remote directory


该目录相对于 Publish Over SSH 中配置的 Remote Directory

Exec command

见下文代码

部署后命令,是项目传输后运行的脚本

#!/bin/bash #Exec command 中的代码段 cd /root/project/ ./ ./replace.sh echo "Execute shell Finish" BUILD_ID=dontKillMe /root/project/startup.sh 复制代码
  • GitLab 配置

GitLab 项目中 Settings->Integrations,URL 填写上文记录的 GitLab webhook URL,根据需求选择触发器,点击 Add webhook
Jenkins 中 Manage Jenkins->Configure System 找到 GitLab,取消 Enable authentication for '/project' end-point

Jenkinsfile 样例

Jenkins 需要找到项目中的 Jenkinsfile 才能按照需求工作,Jenkinsfile 位于项目根目录下。

node { checkout scm echo "current branch: $BRANCH_NAME" if (BRANCH_NAME.startsWith("release")) { sh "mvn clean install" } } 复制代码

这里 Jenkinsfile 使用 Groovy 语法。

脚本样例

在项目通过 Publish Over SSH 传输到服务器上之后,需要一定的操作才能正确部署。

#!/usr/bin/env bash port=8848 #根据端口号查询对应的pid pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }'); #杀掉对应的进程,如果pid不存在,则不执行 if [ -n "$pid" ]; then kill -9 $pid; fi 复制代码

replace.sh

#!/usr/bin/env bash cp /root/workhelper-0.0.1-SNAPSHOT.jar /root/project/workhelper-0.0.1-SNAPSHOT.jar 复制代码

startup.sh

#!/usr/bin/env bash nohup java -jar workhelper-0.0.1-SNAPSHOT.jar >log.log 2>&1 & 复制代码
    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/19615.html

    分享给朋友:

    “gitlab部署要求太高 gitlab项目部署” 的相关文章

    韩国VPS推荐:丽萨主机、莱卡云、Kdatacenter对比,低延迟高稳定性选择

    丽萨主机 丽萨主机是一家提供韩国VPS服务的知名提供商,特别适合需要低延迟和高稳定性的用户。他们的机房位于首尔,采用双ISP类型原生IP,确保网络连接的稳定性和速度。对于国内用户来说,丽萨主机的三网直连设计让访问延迟保持在60ms左右,非常流畅。他们还提供了59.43的CN2线路,进一步优化了网络体...

    mac ssh工具推荐:提升远程工作效率的最佳选择

    在现代计算机网络中,SSH(Secure Shell)是一个重要的工具。它为用户提供了一种安全的远程登录协议,广泛应用于网络管理、服务器配置等场景。我自己在处理多台服务器时,总是通过SSH来保证安全性和网络的高效性。通过SSH,我可以在远程计算机上执行命令和操作,感觉就像在本地电脑上一样。 在Mac...

    Hostwinds LLC:卓越的网络托管服务与高性价比优势

    Hostwinds LLC成立于2010年,位于美国西雅图。这家公司一直专注于提供多种网络托管服务,包括虚拟主机、虚拟专用服务器(VPS)和独立服务器。在这个竞争激烈的市场中,Hostwinds凭借其独特的优势和不断升级的服务赢得了客户的信赖。我个人认为,Hostwinds的历史反映了它对客户需求的...

    SSH工具:安全远程连接与数据传输的最佳选择

    SSH 工具概述 在网络安全日益受到重视的今天,SSH(Secure Shell Protocol)工具逐渐成为了我们进行安全远程连接的首选。简单来说,SSH 是一种加密的网络传输协议,它能在不安全的网络环境中提供安全的数据传输。这使得无论是在公司办公还是在家中,SSH 工具都极其重要,特别是对于那...

    在Ubuntu上使用宝塔面板进行服务器管理的全方位指南

    宝塔面板简介 作为一款在服务器管理领域取得广泛认可的工具,宝塔面板在Linux系统中尤为突出,特别是针对Ubuntu用户而言。通过提供直观的操作界面,宝塔有效地简化了复杂的Linux服务器管理过程。对于我这样的用户来说,宝塔无疑是一个不可多得的助手,轻松应对日常维护和配置工作。 宝塔面板不仅仅是一款...

    台湾原生IP的优势与选择指南,助你畅享极速网络体验

    在信息化时代,网络的使用变得愈发普遍,原生IP的概念逐渐进入大众视野。简单来说,台湾原生IP指的是源自台湾本地的互联网协议地址。与其他地区的IP不同,台湾原生IP能够有效实现更快速、更稳定的网络连接,给用户带来良好的上网体验。我们生活在一个无时无刻不在与网络打交道的时代,理解这项技术的内涵至关重要。...