代码之家  ›  专栏  ›  技术社区  ›  Artsiom Miksiuk

Jenkins sh带着功能跑步

  •  0
  • Artsiom Miksiuk  · 技术社区  · 7 年前

    我有下面的剧本。不幸的是,我不能让它在詹金斯身上运行。

    #!/bin/bash
    function pushImage () {
        local serviceName=$1
        local version=$(getImageVersionTag $serviceName)
        cd ./dist/$serviceName
        docker build -t $serviceName .
        docker tag $serviceName gcr.io/$PROJECT_ID/$serviceName:$version
        docker tag $serviceName gcr.io/$PROJECT_ID/$serviceName:latest
        docker push gcr.io/$PROJECT_ID/$serviceName
        cd ../..
    }
    
    function getImageVersionTag () {
        local serviceName=$1
    
        if [ $BUILD_ENV = "dev" ];
        then
            echo $(timestamp)
        else
            if [ $serviceName = "api" ];
            then
                echo $(git tag -l --sort=v:refname | tail -1 | awk -F. '{print $1"-"$2"-"$3"-"$4}')
            else
                echo $(git tag -l --sort=refname | tail -1 | awk -F. '{print $1"-"$2"-"$3"-"$4}')
            fi
        fi
    }
    
    function timestamp () {
        echo $(date +%s%3N)
    }
    
    set -x
    ## might be api or static-content
    pushImage $1
    

    我在Jenkins上收到这个错误

    10:10:17 + sh push-image.sh api
    10:10:17 push-image.sh: 2: push-image.sh: Syntax error: "(" unexpected
    

    我已经将Jenkins全局参数配置为 /bin/bash 作为默认shell执行环境,但仍有相同的错误。

    这里的主要问题是函数的使用,因为其他成功执行的脚本没有任何函数。

    如何修复?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Camusensei    7 年前

    bash sh

    bourne shell function

    local version=$(getImageVersionTag "$serviceName")

    shellcheck.net local var=$(...)