我的问题是
war
文件未正确使用Travis CI从GitHub部署到Azure-生成文件的整个存储库只是复制粘贴。以下是我的工作:
我的方法:
我跟随特拉维斯教程
Azure web app deployment
尽量以最小的形式达到同样的效果。我的目标是
战争
使用Tomcat 8.0容器将其归档并部署到Azure web应用程序。
我的项目有以下内容
.travis.yml
配置(为了简洁起见,我省略了Java-8定义、声纳附加组件和成功脚本后的工作服):
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
. 因此,在Travis上生成:
/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文件到Azure目录
/site/wwwroot/webapps
,一分钟内即可打开并展开,效果良好。
与手动复制不同,Travis将所有内容复制粘贴到Azure webapp中,导致如下混乱:
这个
战争
文件尚未上载到
webapps
文件夹。新创建的Azure webapp包含
site/wwwroot/webapps/ROOT
文件夹,需要上载
战争
上的文件
ROOT
文件夹级别。我原以为特拉维斯会表现出“更聪明”的行为。
问题:
如何正确使用Travis CI从GitHub部署到Azure?我打赌我错过了一些没有记录的东西。
我的解决方法尝试:
我试着用几种方法修理这东西(都没用)。我认为他们都是肮脏的:
-
我试图指定要在其中部署什么
特拉维斯·yml
(没有效果,所有内容仍被复制):
file_glob: true
file: "/home/travis/build/MY_USERNAME/MY_WEBAPP/target/MY_WEBAPP*.war"
-
丑陋的bruteforce:将输出目录从
/目标
到
/webapp
在中部署时重写Azure中的目标文件夹的结果
<build>
“pom.xml”部分:
<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>
-
将输出文件夹重命名为
网络应用
在里面
特拉维斯·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:无法执行二进制文件