无人机用空字符串替换环境变量



我的无人机配置发生了一些事情。从今天开始,它就没有找到环境变量。直到几天前,我还可以运行管道,但今天我不能。

这是进入管道的步骤:

pipeline: 
    [...]
    sdk:
        image: mycompany/swagger-codegen:latest
        environment:
            - API_SWAGGER_JSON_URL=http://api.mycompany.biz:9000/v1/swagger.json
            - API_PACKAGE=com.mycompany.api
            - API_GROUP_ID=com.mycompany.api
            - API_ARTIFACT_ID=sdk
            - API_VERSION=0.1-SNAPSHOT
        when:
            branch: master
        commands:
            - java -jar /usr/lib/swagger/swagger-codegen-cli.jar generate
                -i ${API_SWAGGER_JSON_URL}
                --api-package ${API_PACKAGE}
                --invoker-package ${API_PACKAGE}.client
                --model-package ${API_PACKAGE}.client.model
                --group-id ${API_GROUP_ID}
                --artifact-id ${API_ARTIFACT_ID}
                --artifact-version ${API_VERSION}
                -l java
                -o ./swagger-codegen-source
            - etc.

这就是我得到的

+ java -jar /usr/lib/swagger/swagger-codegen-cli.jar generate -i --api-package --invoker-package .client --model-package .client.model --group-id --artifact-id --artifact-version -l java -o ./swagger-codegen-source
Exception in thread "main" io.airlift.airline.ParseArgumentsUnexpectedException: Found unexpected parameters: [java]
    at io.airlift.airline.Cli.validate(Cli.java:148)
    at io.airlift.airline.Cli.parse(Cli.java:116)
    at io.airlift.airline.Cli.parse(Cli.java:97)
    at io.swagger.codegen.SwaggerCodegen.main(SwaggerCodegen.java:36)

查看命令。每个环境变量都替换为一个空字符串。我做错了什么吗?

你应该使用$variable$${variable}而不是${variable}

这是因为无人机使用${variable}语法将运行时变量 [1] 插入到 yaml 中。此行为类似于 docker-compose,无人机将其用作功能和语法的基线。

[1] http://docs.drone.io/environment/
[2] http://docs.drone.io/secrets-not-working/#variable-expansion

最新更新