Bitbucket конвейеры.net deploy

Привет, ребята, я пытаюсь использовать новые инструментальные конвейеры из bitbucket. У меня есть несколько консольных приложений.NET (не Core app), которые я хочу собрать и скачать. Я нашел эту страницу, которая говорит, что я могу использовать моно для создания своего проекта. Я использую этот файл.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). Я обнаружил, что я могу использовать битовую загрузку. Но как скачать мою папку для развертывания? Здесь я обнаружил, что могу заархивировать некоторые файлы, а затем поместить их в загрузочные файлы. Но как я могу использовать это с моно и как я могу сжать всю папку и затем загрузить ее?.. Я не против использовать что-то еще, например моно. Спасибо за любые советы:)

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, или Amazon s3 также является хорошим вариантом.

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

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

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

Вот как вы это делаете:

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

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

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

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

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

<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 с токеном аутентификации

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

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

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

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

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

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

- 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

Вот полный pipe.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

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

Другие вопросы по тегам