我的问题是打包的war
文件没有正确地使用Travis-CI从GitHub部署到Azure - 包含生成文件的整个存储库只是复制粘贴。这是我做的:
我的方法:
我按照关于Azure web app deployment的Travis教程,尝试以最小的形式实现相同的目标。我的目标是组装一个war
文件,并使用Tomcat 8.0容器将其部署到Azure Web应用程序。
我的项目有以下.travis.yml
配置(为简洁起见,我省略了Java-8定义,Sonar附加组件和Coveralls after_success脚本):
script:
- mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent package sonar:sonar
deploy:
provider: azure_web_apps
skip_cleanup: true
我使用AZURE_WA_USERNAME
,AZURE_WA_PASSWORD
和AZURE_WA_SITE
环境变量。
我遵循标准的Maven目录结构。输出目录是标准的/target
。因此,在特拉维斯生成:
/home/travis/build/MY_USERNAME/MY_WEBAPP/target/MY_WEBAPP.war
其中MY_USERNAME
是GitHub登录名,MY_WEBAPP
是我的应用程序的名称。部署看起来很好看(我跳过类似的行):
Deploying application
[detached HEAD 9fd0ce7] Skip Cleanup Commit
54 files changed, 128 insertions(+)
create mode 100644 target/MY_WEBAPP-0.0.1-SNAPSHOT.war
create mode 100644 target/MY_WEBAPP-0.0.1-SNAPSHOT.war.original
create mode 100644 target/MY_WEBAPP-0.0.1-SNAPSHOT/WEB-INF/classes/... <- Skipped 3 lines
create mode 100644 target/MY_WEBAPP-0.0.1-SNAPSHOT/WEB-INF/lib/... <- Skipped 20+ lines
... irrelevant ... <- Skipped 7 lines
Done. Your build exited with 0.
有什么问题以及它应该如何正确:
如果我通过FTP(S)手动将war
文件上传到Azure目录/site/wwwroot/webapps
,它会在一分钟内解压缩并部署并运行良好。
与手动副本不同,Travis会将所有内容复制粘贴到Azure webapp中,从而产生如下问题:
war
文件尚未上传到webapps
文件夹中。新创建的Azure webapp包含site/wwwroot/webapps/ROOT
文件夹,需要在war
文件夹级别上传ROOT
文件。我原以为特拉维斯会表现出“更聪明”的行为。
题:
如何正确使用Travis-CI从GitHub部署到Azure?我打赌我错过了一些没有记录的东西。
我的解决方法尝试:
我试图用几种方法修复它(它们都没有用)。我认为所有这些都很脏:
.travis.yml
中部署什么(没有效果,一切都被复制了):
file_glob: true
file: "/home/travis/build/MY_USERNAME/MY_WEBAPP/target/MY_WEBAPP*.war"
/target
更改为/webapp
结果,以便在部署到'pom.xml`的<build>
部分时覆盖Azure中的目标文件夹:
<directory>/webapps</directory>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warName>MY_WEBAPP</warName>
<outputDirectory>/webapps</outputDirectory>
</configuration>
</plugin>
webapps
中的.travis.yml
:
after_success:
- bash mv /home/travis/build/MY_USERNAME/MY_WEBAPP/target/ /home/travis/build/MY_USERNAME/MY_WEBAPP/webapps/
/ bin / mv:/ bin / mv:无法执行二进制文件我已经解决了上传部署脚本的问题:
.deployment
[config]
command=deployment.cmd
deployment.cmd
@echo off
echo Azure: Deploying site
echo Azure: Removing the current war file
del %DEPLOYMENT_TARGET%\webapps\MY_WEBAPP.war /S /Q
echo Azure: Removing the current webapp folder
rmdir %DEPLOYMENT_TARGET%\webapps\MY_WEBAPP /S /Q
echo Azure: Copying war to the webapps folder
xcopy %DEPLOYMENT_TARGET%\..\repository\target\MY_WEBAPP.war %DEPLOYMENT_TARGET%\webapps /Y /s