Gitlab: невозможно загрузить артефакт с помощью URL - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь загрузить артефакт, используя метод URL. InGitLab, я получаю следующую ошибку:

117$ https://gitlab.myserver.com/mynamespace/jt/-/jobs/artifacts/master/download?job=job_make_patch
118/bin/bash: line 100: https://gitlab.myserver.com/mynamespace/jt/-/jobs/artifacts/master/download?job=job_make_patch: No such file or directory

Код:

job_make:
  tags:
    - test123
  image: node:10.19
  stage: build
  script:
    - npm install
    - make
    - make source-package
  cache:
    key: ${CI_COMMIT_REF_SLUG}
    paths:
    - node_modules/
  artifacts:
    when:
    paths:
      - test.tar.bz2
    expire_in: 2 days

job_test_patch:
  tags:
    - test123
  stage: deploy
  image: mycustomerdockerimage
  script:
    -  https://gitlab.myserver.com/mynamespace/jt/-/jobs/artifacts/master/download?job=job_make
    - ls -lah

Мой проект является внутренним, и все, у кого есть доступ, могут его увидеть. Также я не забудьте отметить «publi c pipelines» в настройках проекта.

Когда я вручную пытаюсь выполнить вызов curl, я получаю следующее:

PS C:\Users\jj\> curl -v https://gitlab.myserver.com/mynamespace/jt/-/jobs/artifacts/master/download?job=job_make
VERBOSE: GET https://gitlab.myserver.com/mynamespace/jt/-/jobs/artifacts/master/download?job=job_make with 0-byte payload
VERBOSE: received -1-byte response of content type text/html; charset=utf-8


PS C:\Users\jj\> curl -v https://gitlab.myserver.com/mynamespace/jt/-/jobs/artifacts/master/download?job=job_make
VERBOSE: GET https://gitlab.myserver.com/mynamespace/jt/-/jobs/artifacts/master/download?job=job_make with 0-byte payload
VERBOSE: received -1-byte response of content type text/html; charset=utf-8


StatusCode        : 200
StatusDescription : OK
Content           : <!DOCTYPE html>
                    <html class="devise-layout-html">
                    <head prefix="og: http://ogp.me/ns#">
                    <meta charset="utf-8">
                    <meta content="IE=edge" http-equiv="X-UA-Compatible">

                    <meta content="object" property="o...
RawContent        : HTTP/1.1 200 OK
                    Transfer-Encoding: chunked
                    Connection: keep-alive
                    Vary: Accept-Encoding
                    Referrer-Policy: strict-origin-when-cross-origin,strict-origin-when-cross-origin
                    X-Content-Type-Options: no...
Forms             : {new_user}
Headers           : {[Transfer-Encoding, chunked], [Connection, keep-alive], [Vary, Accept-Encoding], [Referrer-Policy, strict-origin-when-cross-origin,strict-origin-when-cross-origin]...}
Images            : {}
InputFields       : {@{innerHTML=; innerText=; outerHTML=<input name="utf8" type="hidden" value="✓">; outerText=; tagName=INPUT; name=utf8; type=hidden; value=✓}, @{innerHTML=; innerText=;
                    outerHTML=<input name="authenticity_token" type="hidden" value="OncopKrJ1jOr+BsMQdWIPNaJjoWvkAia6rHR6hUexNoyHJiBUfMVPm+ww0HqAn7h9oRtRqVdcoLgSxZYotJsxg==">; outerText=; tagName=INPUT;
                    name=authenticity_token; type=hidden; value=OncopKrJ1jOr+BsMQdWIPNaJjoWvkAia6rHR6hUexNoyHJiBUfMVPm+ww0HqAn7h9oRtRqVdcoLgSxZYotJsxg==}, @{innerHTML=; innerText=; outerHTML=<input
                    name="user[login]" title="This field is required." class="form-control top" id="user_login" autofocus="autofocus" required="required" type="text" data-qa-selector="login_field"
                    autocorrect="off" autocapitalize="off">; outerText=; tagName=INPUT; name=user[login]; title=This field is required.; class=form-control top; id=user_login; autofocus=autofocus;
                    required=required; type=text; data-qa-selector=login_field; autocorrect=off; autocapitalize=off}, @{innerHTML=; innerText=; outerHTML=<input name="user[password]" title="This field is
                    required." class="form-control bottom" id="user_password" required="required" type="password" data-qa-selector="password_field">; outerText=; tagName=INPUT; name=user[password];
                    title=This field is required.; class=form-control bottom; id=user_password; required=required; type=password; data-qa-selector=password_field}...}
Links             : {@{innerHTML=Sign in; innerText=Sign in; outerHTML=<a class="nav-link active" role="tab" href="#login-pane" data-qa-selector="sign_in_tab" data-toggle="tab">Sign in</a>;
                    outerText=Sign in; tagName=A; class=nav-link active; role=tab; href=#login-pane; data-qa-selector=sign_in_tab; data-toggle=tab}, @{innerHTML=Forgot your password?; innerText=Forgot
                    your password?; outerHTML=<a href="/users/password/new">Forgot your password?</a>; outerText=Forgot your password?; tagName=A; href=/users/password/new}, @{innerHTML=Explore;
                    innerText=Explore; outerHTML=<a href="/explore">Explore</a>; outerText=Explore; tagName=A; href=/explore}, @{innerHTML=Help; innerText=Help; outerHTML=<a href="/help">Help</a>;
                    outerText=Help; tagName=A; href=/help}...}
ParsedHtml        : System.__ComObject
RawContentLength  : 9914

Там в основном один zip-файл в репозитории артефактов, который я пытаюсь захватить. Спасибо.

1 Ответ

0 голосов
/ 06 августа 2020

В сценарии, показанном в вопросе, похоже, отсутствует часть curl:

script:
    -  curl -kL https://....
       ^^^^^^^^

В документации упоминается

Структура URL-адрес для загрузки всего архива артефактов следующий:

https://example.com/<namespace>/<project>/-/jobs/artifacts/<ref>/download?job=<job_name>

Итак, ваш URL-адрес должен работать, при условии, что вы используете curl в указанном скрипте.

...