• Jérome Perrin's avatar
    gitlab: enable parameters-extra options when creating wrapper · 6082d6e9
    Jérome Perrin authored
    @jerome says at nexedi/slapos@5f5d5102 (comment 17119):
    
    before f4e51f77, we had:
    `~/srv/runner/instance/slappart0/bin/gitlab-rake` containing:
        ```python
        ...
        if __name__ == '__main__':
            sys.exit(slapos.recipe.librecipe.execute.generic_exec((['/srv/slapgrid/slappart16/srv/runner/software/fffb3c99781923d3adb8bc53eb6c027a/bin/bundle', 'exec', 'sh', '-c', 'cd /srv/slapgrid/slappart16/srv/runner/instance/slappart0/gitlab-work && rake "$@"', 'rake'], None, {'BUNDLE_GEMFILE': '/srv/slapgrid/slappart16/srv/runner/software/fffb3c99781923d3adb8bc53eb6c027a/parts/gitlab/Gemfile', 'HOME': '/srv/slapgrid/slappart16/srv/runner/instance/slappart0', 'SIDEKIQ_MEMORY_KILLER_MAX_RSS': '1000000', 'RAILS_ENV': 'production'})))
        ```
    
    after, `~/srv/runner/instance/slappart0/bin/gitlab-rake` contains:
        ```shell
        #!/bin/bash
        COMMAND=/srv/slapgrid/slappart16/srv/runner/instance/slappart0/bin/gitlab-rake.py
    
        # If the wrapped command uses a shebang, execute the referenced
        # executable passing the script path as first argument.
        # This is to workaround the limitation of 127 characters in #!
        if [[ -f $COMMAND && x$(head -c2 "$COMMAND") = x"#!" ]]; then
          SHEBANG=$(head -1 "$COMMAND")
          INTERPRETER=( ${SHEBANG#\#!} )
          COMMAND="${INTERPRETER[@]} $COMMAND"
        fi
    
        exec $COMMAND
        ```
    
    which is a wrapper around `gitlab-rake.py` containing:
        ```python
        ...
        if __name__ == '__main__':
            sys.exit(slapos.recipe.librecipe.execute.generic_exec((['/srv/slapgrid/slappart16/srv/runner/software/fffb3c99781923d3adb8bc53eb6c027a/bin/bundle', 'exec', 'sh', '-c', 'cd /srv/slapgrid/slappart16/srv/runner/instance/slappart0/gitlab-work && rake "$@"', 'rake'], None, {'BUNDLE_GEMFILE': '/srv/slapgrid/slappart16/srv/runner/software/fffb3c99781923d3adb8bc53eb6c027a/parts/gitlab/Gemfile', 'HOME': '/srv/slapgrid/slappart16/srv/runner/instance/slappart0', 'SIDEKIQ_MEMORY_KILLER_MAX_RSS': '1000000', 'RAILS_ENV': 'production'})))
        ```
    
    `gitlab-rake.py` after is same as `gitlab-rake` before.
    
    This [slapos.cookbook:wrapper](https://lab.nexedi.com/nexedi/slapos/blob/cd9faac0/slapos/recipe/wrapper.py#L39) has an argument *parameters-extra* which if set to true, propagate command line arguments to the wrapped script. The default value for this parameter is false.
    
    Before f4e51f77, the generated wrapper was also propagating arguments even when *parameters-extra* was not set, but since this commit, this *parameters-extra* option is now handled as expected.
    
    This is the reason for this regression. In our case, when we see `/srv/slapgrid/slappart16/srv/runner/instance/slappart0/bin/gitlab-rake assets:clean`, it just calls `rake` without arguments.
    
    So a simple patch that fix the problem would be d3d05f02 . This way, the generated wrapper becomes:
    
    ```shell
    ...
    exec $COMMAND $@
    ```
    
    and arguments are correctly propagated.
    
    Feel free to cherry-pick that patch for now, but it may be nice to rethink this *parameters-extra* option, after this debugging session, I believe it should be true by default.
    
    /cc @seb for introducing the parameter in 80bb4305 and @vpelletier for touching this code in e7083872
    
    /reviewed-by @kirr
    6082d6e9
instance-gitlab.cfg.in 24.2 KB