当前位置: 首页 > news >正文

云效CI/CD教程(PHP项目)

参考文档

参考云效的官方文档https://help.aliyun.com/zh/yunxiao/

一、新建代码库

这是第一步,和码云的差不多

二、配SSH密钥

这个和码云,github上类似,都需要,云效的SSH密钥证书不是采用 RSA算法,而是采用了ED25519 算法

步骤一、先确认下,本地公钥文件是否生成

cd ~/.ssh/

没有看到ed25519证书

步骤二、生成基于ED25519算法的SSH密钥

使用ssh-keygen生成证书时,需要带上参数ed25519,后面就一路回车下去,不用去输入密码

ssh-keygen -t ed25519 -C "ali-yunxiao"

密钥生成在~/.ssh/id_ed25519.pub

步骤三、在云效codeup上设置公钥

进入https://codeup.aliyun.com的 个人设置,把公钥拷贝进来,公钥过期时间不用选择

提交

本地存在多个git平台密钥时,如何自动选择

当本地存在多个密钥,如果不设置认证规则,本机将随机选择一个密钥认证,可能造成认证失败。因此,需要把不同的密钥配置文件配置在 config文件中

验证码云:

ssh -T git@gitee.com

表示成功:

Hi 黄(@allen-huang)! You’ve successfully authenticated, but GITEE.COM does not provide shell access.

验证阿里云效:

ssh -T git@codeup.aliyun.com

Welcome to Codeup, hjc_042043

三、克隆项目

以ssh的方式clone项目,以laravel项目,SLConsole为例子

git clone git@codeup.aliyun.com:67f508b2228615de936e3d98/SLConsole/main.slconsole.com.git

如果存在现有项目代码(注意去掉.git目录),就把代码拷贝到这个项目下面去,并push上去,最后在云效提交的结果是这样子的。

四、构建流水线(CI/CD)

上面建立好仓库之后,就可以来创建流水线了,有了CI/CD机制这样子可以很方便的来发布和回滚代码,提高系统的稳定性。

步骤一、选择流水线模板

选择流水线模板,这里是PHP,然后点右下角的创建

步骤二、添加流水线源

这个都不用去动,会默认加载仓库地址,分支以及代码拉取的预存目录(工作目录)

注意,这个默认是在mastert提交后,自动发布到生产服务器,碍于很多时候是小项目开发,直接使用 master,可以关闭掉"开启代码源触发"

这个可以根据自己实际需求来,默认是开启的。

步骤三、构建PHP

这里是有测试环节先删除掉,暂时不需要测试

重新创建PHP构建

不选择PHP镜像构建

先删除失效的部分

选择PHP版本,因为我们用的是laravel10,所以用php8.1

构建物上传

步骤四、部署主机

1. 选择制品

勾选下载制品,和选择制品

2. 创建主机组

这一步很重要,主要是来配置目标服务器组,可以把代码发布过去,服务器可以是一个或多个

主机组可以根据不同的服务器环境来配置,可以是测试环境,预发布环境,正式环境

从服务器组点进去

选择服务器,保存

3.选择服务器组

4.部署脚本

代码在传输到服务器上时,是通过打包的方式传输过来,不是git的方式拉取。所以需要解压出来,在执行服务。部署脚本如下:

# 部署脚本会在部署组的每台机器上执行。一个典型脚本逻辑如下:先将制品包(在下载路径中配置的下载路径)解压缩到指定目录中,再执行启动脚本(通常在代码中维护,如示例中deploy.sh)。关于这个例子的详细解释见 https://help.aliyun.com/document_detail/153848.html # tar zxvf /home/admin/app/package.tgz -C /home/admin/app/
# sh /home/admin/app/deploy.sh restart
# 如果你是php之类的无需制品包的制品方式,可以使用git clone 或者 git pull将源代码更新到服务器,再执行其他命令 
# git clone ***@***.gitdir="/www/wwwroot/main.slconsole.com"if [ ! -d "$dir" ]; thenmkdir -p "$dir"
fitar -zxvf /home/admin/app/package.tgz -C $dir# 把项目权限改成0755,所有者改成www
chmod -R 0755 $dir
chown -R www:www $dir# 进入laravel项目目录
cd $dir# 执行脚本,主要预处理的脚本,像composer包的安装,服务启动等
/bin/bash start_service_prod.sh >> /www/wwwlogs/main.slconsole.com_devops.log 2>&1 &

将部署脚本贴到这个框里面,并把下面分批数量改成1

步骤五、发布测试

最后流水线的变成这样子了

发布完成后的

常见问题

1、部署主机

如果需要部署到多主机时,一定需要注意的是,往往我们新的服务器,是从老的服务器镜像出来的,那么老的服务器都是已经安装过runner的,所以在新服务器在安装runner时,会报错类似 instance i-uf62plfssupo4bphyucf is already registerd as an ecs runner 的错误。是说明runner已经安装,这个是因为新的服务器包含了老的runner,所以先删除这个runner。

解决:

cd root
rm -rf yunxiao

2、如果存在多个阿里云效仓库如何clone 代码

在~/.ssh/config 文件中配置了云效的多仓库

在克隆代码时,不能再使用git@codeup.aliyun.com:xxx

而是要是用:

git@[$Host]:6759813cad056eaad2a2e966/bossim

如:

git@codeup-boss-server:6759813cad056eaad2a2e966/bossim

3、代码在合并到 master 之后自动触发流水线

这个最好不要自动触发流水线,因为我们很多一些小项目都是在 master分支上开发的,所以要是每次提交 git 都触发,那是比较危险的事情,代码会自动提交到远程服务器上去了

有两种方式来处理:

方法一:

方法二,在发布时,需要去手动触发一下

http://www.dtcms.com/a/294965.html

相关文章:

  • 如何提升连带消费?从新零售“人-货-场”模型拆解
  • 220V降5V,输出100MA,为家电电器消费类产品提供电源WD5202L
  • OpenCV+Python
  • WebGIS 常用坐标系
  • 真的假的?CISP认证考试将全面推行线下机考?
  • 我考PostgreSQL中级专家证书二三事
  • ubuntu24.04 nvidia driver无效///重装驱动
  • MYOJ_8513:CSP初赛题单6:竞赛要求相关
  • Java基础夯实——泛型全解析
  • Excel导入SQLServer报错
  • 炬森精密:缓冲滑轨的创新力量,重塑家居静音与安全新体验
  • SSM框架中关于Spring MVC的技术问题
  • 智能迎宾的认知革命:Deepoc具身智能如何让机器人读懂人类微语言
  • 论文略读: Howto Merge Your Multimodal Models Over Time?
  • IGM弧焊机器人气体节约
  • SwiftUI 实战:构建一个复杂的图书首页长页面
  • 本地部署 Stable Diffusion:零基础搭建 AI文生图模型
  • Linux中scp命令传输文件到服务器报错
  • 直播软件搭建与原生直播系统开发全解析
  • 【2025目标检测】最新论文
  • VulhubDVWA靶场环境搭建及使用
  • 【Mysql】 Mysql zip解压版 Win11 安装备忘
  • Neo4j 框架 初步简单使用(基础增删改查)
  • OMS监考系统V2版本无法启动问题解决办法
  • [每日随题15] 前缀和 - 拓扑排序 - 树状数组
  • 海信IP501H-IP502h_GK6323处理器-原机安卓9专用-TTL线刷烧录可救砖
  • 【Java学习|黑马笔记|Day21】IO流|缓冲流,转换流,序列化流,反序列化流,打印流,解压缩流,常用工具包相关用法及练习
  • C++面试7——继承与多态
  • Xorg占用显卡内存问题和编译opencv GPU版本
  • InnoDB的redo log和 undo log