Bitbucket pipelines .net развертывание

Я пытаюсь использовать новые инструментальные конвейеры из битбакета. У меня есть несколько консольных приложений .NET (не Core), которые я хочу создать и загрузить. Я нашел эту страницу, которая говорит, что я могу использовать моно для сборки своего проекта. Я использую этот файл .yml для его создания.

image: mono

pipelines:
  default:
    - step:
        script:
          - nuget restore
          - MONO_IOMAP=case xbuild /t:Build /p:Configuration="Release" /p:Platform="Any CPU" Solution.sln

Сборка прошла успешно, но теперь я застрял с загрузкой своего приложения (exe со всеми dll). Я нашел здесь, что могу использовать битбакетные загрузки. Но как загрузить мою папку развертывания? Здесь я обнаружил, что могу заархивировать некоторые файлы а затем поместите его в загрузку битбакета. Но как я могу использовать это с моно, и как я могу заархивировать всю папку, а затем загрузить ее? Я не против использовать что-нибудь еще, например, моно.


person Pavol    schedule 09.03.2017    source источник


Ответы (2)


Mono построен на debian:wheezy любых командах Linux, которые вы выполняете в часть сценария YML-файла может помочь вам извлечь файл до того, как BitBucket Pipelines загрузит контейнер. В примере, который вы включили, есть POST команда в конце, которая развертывает артефакт в Загрузки в Bitbucket.

curl -v -u $BB_ACCESS -X POST https://api.bitbucket.org/2.0/repositories/$BITBUCKET_REPO_OWNER/$BITBUCKET_REPO_SLUG/downloads/ -F files=@aqua_lambda.zip

Он объясняет переменные среды $BB_ACCESS ниже, другие загружаются во время выполнения для тебя.

Вам нужно будет найти путь к файлу, в который моно компилируется, и настроить код примера для отправки в Bitbucket Downloads или Amazon s3 - тоже хороший вариант.

person timmah.faase    schedule 09.06.2017

Немного поздно для этого ответа ...

Во-первых, используйте msbuild вместо xbuild, поскольку xbuild устарел.

Теперь вам нужна успешная сборка, а также продвижение выпуска к загрузкам битбакета.

Вот как это сделать:

1. Создайте пароль приложения для владельца репозитория.

Войдите в Bitbucket как владелец репозитория (также как пользователь, который будет загружать файлы) и перейдите в Bitbucket Настройки> Пароли приложений.

Создайте новый пароль приложения с разрешениями на запись в свои репозитории и обратите внимание на сгенерированный пароль, который появляется на экране. Имя пароля предназначено только для справки, поэтому используйте "Pipelines" или любое другое имя, которое вам нравится.

Пароль приложения

Теперь у вас должно быть два значения, которые понадобятся вам на следующем шаге.

<username>: Bitbucket username of the repository owner (and also the user who will upload the artifacts)
<password>: App password as generated by bitbucket

2. Создайте переменную среды Pipelines с токеном аутентификации.

Определите новую переменную безопасной среды в настройках ваших конвейеров:

  • Имя параметра: BB_AUTH_STRING
  • Значение параметра: <username>:<password> (с использованием значений из шага 1)

Вы можете определить эту переменную среды либо в настройках репозитория, либо в настройках учетной записи, которой принадлежит репозиторий.

В приведенном ниже примере показаны настройки переменной среды индивидуальной учетной записи, где репозиторий принадлежит физическому лицу. (Обратите внимание, что в случае, когда репозиторий принадлежит группе, вы должны настроить переменные среды в настройках группы, чтобы они были видны в конвейерах.)

введите здесь описание изображения

3. Включите конвейер для развертывания артефактов с помощью curl и Bitbucket REST API.

Сначала добавьте строку, чтобы заархивировать каталог выпуска:

- zip -j bin/Release.zip bin/Release/

Возможно, в конвейере bash не установлен zip. Чтобы установить zip, добавьте в конвейер следующие строки перед указанной выше командой:

- apt-get update
- apt-get -y install zip

Теперь, наконец, добавьте команду curl, которая использует Bitbucket REST API:

- curl -X POST --user "${BB_AUTH_STRING}" "https://api.bitbucket.org/2.0/repositories/${BITBUCKET_REPO_OWNER}/${BITBUCKET_REPO_SLUG}/downloads" --form files=@"bin/Release.zip"

При желании вы можете удалить ненужный zip-файл релиза из каталога bin, так как zip-файл уже находится в загрузках Bitbucket:

- rm -f bin/Release.zip

Вот полный файл pipeline.yml:

image: mono

pipelines:
  default:
    - step:
        script:
          - nuget restore
          - MONO_IOMAP=case msbuild /p:Configuration="Release" /p:Platform="AnyCPU" Solution.sln
          - apt-get update
          - apt-get -y install zip
          - zip -r bin/Release.zip bin/Release/
          - curl -X POST --user "${BB_AUTH_STRING}" "https://api.bitbucket.org/2.0/repositories/${BITBUCKET_REPO_OWNER}/${BITBUCKET_REPO_SLUG}/downloads" --form files=@"bin/Release.zip"
          - rm -f bin/Release.zip

Обратите внимание, что ваш каталог выпуска может отличаться от приведенного выше примера

person Samar Rizvi    schedule 13.09.2018