热部署应用程序构建到Vagrant
请注意:尽管我在这个问题中提到了Gradle/Groovy,但这完全是关于不正常的使用,可以很容易地应用于任何其他语言/构建系统 我是新来的,正在尝试弄清楚当推到源代码控制时,Vagrantfile是如何与repo的构建交互的 假设我有以下由Gradle建立的回购协议:热部署应用程序构建到Vagrant,vagrant,virtualization,deploying,Vagrant,Virtualization,Deploying,请注意:尽管我在这个问题中提到了Gradle/Groovy,但这完全是关于不正常的使用,可以很容易地应用于任何其他语言/构建系统 我是新来的,正在尝试弄清楚当推到源代码控制时,Vagrantfile是如何与repo的构建交互的 假设我有以下由Gradle建立的回购协议: src/ main/ groovy/ <lots of groovy source> test/ groovy/ <
src/
main/
groovy/
<lots of groovy source>
test/
groovy/
<lots of groovy test source>
build.gradle
settings.gradle
src/
主要/
棒极了/
试验/
棒极了/
格雷德尔先生
格雷德尔酒店
现在让我们假设,在没有Vagrant的情况下,我通常会克隆这个repo并运行gradle clean build
,对代码运行单元测试,并最终将其打包到一个正在运行的程序(可执行JAR)中。然后,gradle运行
启动应用程序
嗯,在很多GitHub回购协议中,我看到Vagrantfile已提交。很明显,这是为了让虚拟机更容易启动,并在虚拟机中运行相应的应用程序。我正试图找出将Vagrantfile
合并到我的上述回购协议中的典型“流程”,以便开发人员能够:
shell.inline
,没有发现任何具体的东西
所以我问:我如何将我的
Vagrantfile
与我的构建“集成”,以便构建生成一个已部署、正在运行的应用程序?此外,我的运行/部署测试代码重新部署周期在Vagrant Box(我称之为“热部署”)中是什么样子的?我将解释如何实现您希望实现的目标,这可能不是正式的实现方法,因此任何有更多Vagrant经验的人都应该提供一些改进建议。我已经和流浪汉一起工作了6个月了。你说你是新来的流浪汉,所以我会尽可能完整,即使有些部分你可能已经掌握了,但可能对其他用户有用
tl;博士如果您已经熟悉Vagrantfile的工作方式,请跳到创建Vagrantfile部分
让我们从示例所做的事情开始
config.vm.box = "puppetlabs/centos-6.5-64-puppet"
这是在告诉流浪汉把所有其他东西都建在上面的盒子拉出来。你可以在网上找到许多官方和社区捐款箱。这一个来自puppetlabs,基于CentOS 6.5 64位,已经安装了Puppet
config.vm.network "forwarded_port", guest: 8080, host: 8088
这是告诉流浪者将主机上的8088端口转发到流浪者盒上的8080。因此,在主机上访问将访问来宾机上的8080端口
config.vm.provision :shell do |shell|
设置是在第一次运行“漫游箱”时设置“漫游箱”的过程。除非强制,否则新VM的资源调配将只运行一次。请参阅的“资源调配”部分。这一个特别是在配置时执行一组shell命令
shell.inline = "command;
command;"
Shell inline将这些命令(以分号分隔)发送到框中。这是为了自动化命令,就像您自己在SSH会话中键入命令一样。具有一些更高级的用途,您可以在其中定义要执行的实际文件。
注意:shell脚本不应尝试执行尚未安装的工具。(例如,在Python还不可用的情况下运行Python脚本)
我不能对Puppet部分发表太多评论,因为我不是一个Puppet用户(可能现在还不是)。这是设置一些傀儡值
shell.inline = "cd /vagrant && mvn clean package;
sudo cp target/cas.war /srv/tomcat/cas/webapps/;
sudo /sbin/service tomcat-cas restart"
这也是在执行shell命令。基本上是更改目录、清理、将cas.war复制到webapps目录,然后重新启动服务。有关/vagrant
共享文件夹的详细信息,请稍后访问。现在我们有足够的钱开始建立我们自己的流浪汉档案。我将保持样本的简单性,使其通用
创建文件
你很可能想要建立一个已经符合你需求的流浪者盒子,但是现在,让我们不要这样做。但是,您可以在上找到许多已创建的框。我将向您展示如何使用Flask运行(非常)简单的Python应用程序
Vagrant init ubuntu/trusty64
。这将创建一个基本文件供您使用config.vm.network“forwarded\u port”,guest:5000,host:8080
。我们希望8080端口将我们带到来宾机器上的5000端口。提示:对于您的项目,明智的做法是选择一个最有可能尚未使用的端口,以避免与其他应用程序发生冲突。8080可能是个坏选择,8089会更好config.vm.provision :shell do |shell|
shell.inline = "cd /vagrant;
sudo apt-get -y install python-pip;
sudo pip install Flask;"
end
这会将目录更改为Vagrant共享。使用Ubuntu的包管理器安装pip,然后使用pip安装Flask。-y标志是自动让apt get安装,而不提示是/否问题。您可能需要运行几次Vagrant up--provision
,以使所有命令100%正确
关于Vagrant共享的注意事项:Vagrant共享是主机和来宾计算机之间同步的目录,可在/Vagrant
下使用。它包括项目目录中的所有文件和目录(其中
config.vm.provision :shell do |shell|
shell.inline = "cd /vagrant;
sudo apt-get -y install python-pip;
sudo pip install Flask;"
end
config.vm.provision :shell do |shell|
shell.inline = "/vagrant/app.py &"
end