curl с плагином maven exec не работает из-за "Не могу обработать одинарные и двойные кавычки в одном аргументе"
Чтобы продвигать сборку после успешного развертывания образа док-станции артефакта, нам нужно выполнить следующее:
curl -k -I -u usr:pw -X POST https://company.com/artifactory/api/docker... - H "Content-Type: application/json" -d '{"targetRepo":"project-release","dockerRepository":"project/sample","tag":"1.0.0","copy":"false"}'
При попытке сделать это с maven используйте плагин exec:
...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<id>promote-image</id>
<phase>deploy</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>curl</executable>
<arguments>
<argument>-k</argument>
<argument>-i</argument>
<argument>-u ${USER}:{PWD}</argument>
<argument>-X POST https://company.com/artifactory/api/docker/docker-local/v2/promote</argument>
<argument>-H "Content-Type: application/json"</argument>
<argument>-d '{"targetRepo":"${docker.repository.release}","dockerRepository":"${docker.image.prefix}/${project.artifactId}","tag":"${project.version}","copy":"false"}'</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
...
Но это приводит к неправильной сборке CI по причине:
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2:exec (promote-image) on project myproject: Execution promote-image of goal org.codehaus.mojo:exec-maven-plugin:1.2:exec failed: Can't handle single and double quotes in same argument -> [Help 1]
Я предполагаю, что это потому, что -d '" - как это можно решить?
0 ответов
Сначала я думаю, что вам нужно объявить свой аргумент вот так и посмотреть, что произойдет:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2</version>
<executions>
<execution>
<id>promote-image</id>
<phase>deploy</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>curl</executable>
<arguments>
<argument>-k</argument>
<argument>-i</argument>
<argument>-u</argument>
<argument>${USER}:{PWD}</argument>
<argument>-X</argument>
<argument>POST</argument>
<argument>-H</argument>
<argument>"Content-Type: application/json"</argument>
<argument>-d</argument>
<argument>'{"targetRepo":"${docker.repository.release}","dockerRepository":"${docker.image.prefix}/${project.artifactId}","tag":"${project.version}","copy":"false"}'</argument>
<argument>https://company.com/artifactory/api/docker/docker-local/v2/promote</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>