热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

通过持续交付通过GitLabCI部署Laravel应用程序时是否需要LaravelEnvoy?

如何解决《通过持续交付通过GitLabCI部署Laravel应用程序时是否需要LaravelEnvoy?》经验,为你挑选了1个好方法。

我正在将持续集成实现到我的Laravel工作流程中,并且在基本学习过程中,我在Gitlab上遇到了一个示例项目,其中(1.)Laravel Envoys用于编写与应用程序的部署方式有关的任务,然后与(2.)使用Gitlab CI引导过程。

我有些困惑,在我看来,使用Enovy定义任务的部分(波纹管)在定义.gitlab-ci.yml文件内的作业时很容易复制,这使Envoy的使用变得多余:

 ...

    @setup
        $repository = 'git@gitlab.example.com:/laravel-sample.git';
        $releases_dir = '/var/www/app/releases';
        $app_dir = '/var/www/app';
        $release = date('YmdHis');
        $new_release_dir = $releases_dir .'/'. $release;
    @endsetup

    ...

    @task('update_symlinks')
        echo "Linking storage directory"
        rm -rf {{ $new_release_dir }}/storage
        ln -nfs {{ $app_dir }}/storage {{ $new_release_dir }}/storage

        echo 'Linking .env file'
        ln -nfs {{ $app_dir }}/.env {{ $new_release_dir }}/.env

        echo 'Linking current release'
        ln -nfs {{ $new_release_dir }} {{ $app_dir }}/current
    @endtask

   ...

如果有人错误地纠正了我,或者解释了Envoy可以为Gitlab Continuous Integration工作流程带来的好处,我将不胜感激。



1> pft221..:

您是正确的,示例shell脚本可以轻松地在.gitlab-ci.yml文件或Envoy.blade.php文件中实现(因此,“否”,对于Laravel应用程序的gitlab-ci部署,Envoy并不是必需的。)我看到了用户可能选择选择以下三个主要原因在gitlab的Envoy中有其部署任务:

熟识

Laravel开发人员可能更熟悉Envoy用于部署的语言(PHP和Blade语法),而不是gitlab使用的语言(使用gitlab的管道语法进行Yaml格式化)。

保持不太熟悉的.gitlab-ci.yml文件简单,将复杂性增加到更熟悉的Envoy文件,可以节省开发人员的时间。

可移植性

一些开发人员可能希望选择在CI平台之间切换。通过使gitlab-ci文件保持简单并在Envoy文件中包含大量部署逻辑,开发人员可以切换到另一台CI服务器(如Jenkins),而无需重写部署代码。(或者,正如我所看到的那样,开发人员可能同时使用gitlab-ci和Jenkins来构建他们的软件。使用Envoy意味着两个CI平台之间有更多的共享代码。)

现有堆栈

Envoy Task Runner使用Laravel部署已经需要的软件(PHP和Composer。)另一方面,Gitlab要求在计算机上安装gitlab-runner才能进行部署。


推荐阅读
  • MyISAM和InnoDB是MySQL中最为广泛使用的两种存储引擎,每种引擎都有其独特的优势和适用场景。MyISAM引擎以其简单的结构和高效的读取速度著称,适用于以读操作为主、对事务支持要求不高的应用。而InnoDB引擎则以其强大的事务处理能力和行级锁定机制,在需要高并发写操作和数据完整性的场景下表现出色。选择合适的存储引擎应综合考虑业务需求、性能要求和数据一致性等因素。 ... [详细]
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
  • 本文介绍了如何在iOS平台上使用GLSL着色器将YV12格式的视频帧数据转换为RGB格式,并展示了转换后的图像效果。通过详细的技术实现步骤和代码示例,读者可以轻松掌握这一过程,适用于需要进行视频处理的应用开发。 ... [详细]
  • 在Android 4.4系统中,通过使用 `Intent` 对象并设置动作 `ACTION_GET_CONTENT` 或 `ACTION_OPEN_DOCUMENT`,可以从相册中选择图片并获取其路径。具体实现时,需要为 `Intent` 添加相应的类别,并处理返回的 Uri 以提取图片的文件路径。此方法适用于需要从用户相册中选择图片的应用场景,能够确保兼容性和用户体验。 ... [详细]
  • 在 Kubernetes 中,Pod 的调度通常由集群的自动调度策略决定,这些策略主要关注资源充足性和负载均衡。然而,在某些场景下,用户可能需要更精细地控制 Pod 的调度行为,例如将特定的服务(如 GitLab)部署到特定节点上,以提高性能或满足特定需求。本文深入解析了 Kubernetes 的亲和性调度机制,并探讨了多种优化策略,帮助用户实现更高效、更灵活的资源管理。 ... [详细]
  • 在C#中开发MP3播放器时,我正在考虑如何高效存储元数据以便快速检索。选择合适的数据结构,如字典或数组,对于优化性能至关重要。字典能够提供快速的键值对查找,而数组则在连续存储和遍历方面表现优异。根据具体需求,合理选择数据结构将显著提升应用的响应速度和用户体验。 ... [详细]
  • 在Kubernetes上部署多个Mitmproxy代理服务器以实现高效流量管理 ... [详细]
  • 从零起步:使用IntelliJ IDEA搭建Spring Boot应用的详细指南
    从零起步:使用IntelliJ IDEA搭建Spring Boot应用的详细指南 ... [详细]
  • 在CentOS上部署和配置FreeSWITCH
    在CentOS系统上部署和配置FreeSWITCH的过程涉及多个步骤。本文详细介绍了从源代码安装FreeSWITCH的方法,包括必要的依赖项安装、编译和配置过程。此外,还提供了常见的配置选项和故障排除技巧,帮助用户顺利完成部署并确保系统的稳定运行。 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
  • 技术日志:深入探讨Spark Streaming与Spark SQL的融合应用
    技术日志:深入探讨Spark Streaming与Spark SQL的融合应用 ... [详细]
  • 探讨 jBPM 数据库表结构设计的精要与实践
    探讨 jBPM 数据库表结构设计的精要与实践 ... [详细]
  • 第五章详细探讨了 Red Hat Enterprise Linux 6 中的 Ext3 文件系统。5.1 节介绍了如何创建 Ext3 文件系统,包括必要的命令和步骤,以及在实际操作中可能遇到的问题和解决方案。此外,还涵盖了 Ext3 文件系统的性能优化和维护技巧,为用户提供全面的操作指南。 ... [详细]
  • 根据 Laravel 官方文档,视图文件在首次加载时会被编译成普通的 PHP 代码并存储在缓存中。当视图文件发生更改时,系统会自动检测到这些变化并重新编译和缓存新的版本,以确保用户始终看到最新的内容。这一机制显著提高了应用的性能和响应速度。 ... [详细]
  • 前言: 网上搭建k8s的文章很多,但很多都无法按其说明在阿里云ecs服务器成功搭建,所以我就花了些时间基于自己成功搭建k8s的步骤写了个操作手册,希望对想搭建k8s环境的盆友有所帮 ... [详细]
author-avatar
书友73892718
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有