Файл Gitlab CI / CD yml для создания, упаковки и развертывания стандартной библиотеки классов .net в виде nuget для хранилища Nexus - PullRequest
0 голосов
/ 06 мая 2019

У меня есть библиотека классов .net Standard (.Net Standard 2.0), которую я хочу развернуть в nexus как nuget package. Закрытый репозиторий Nexus готов, и я использую Gitlab для управления кодом.

В Gitlab я добавил файл gitlab-ci.yml, который будет запускать сборку и развертывание, но все еще без достаточных шагов:

stages:
  - build
  - package
  - deploy

build_image:
  stage: build  
  only:
    - master
  script:
    - echo "Restoring NuGet Packages…"
    - RUN dotnet restore
    - echo "Building solution…"
    - RUN dotnet build --no-restore -c Release -o

package_dev:
  stage: package
  script:
    - 

deploy_dev:
  stage: deploy
  environment:
    name: development
  only:
    - master
  script:
    - 

У меня вопрос, как настроить этот файл для запуска сборки, а затем выполнить packaging and deploy/push to nexus repo?

Не знаю, хорошо ли я это описал, поскольку я совершенно новичок в этой теме. Я нашел несколько примеров использования MAVEN изображения, но мы его не используем.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 24 июня 2019

Я нашел решение, которое отлично работает для меня.Вот сценарий на случай, если кто-нибудь столкнется с той же проблемой / требованием:

В ci.yml на deploy этапе:

stages:
  - deploy

before_script:
    - nuget restore mysolution.sln

deploy_mysolution:
  stage: deploy
  image:
    name: crunchtime/dotnetcore-nuget-msbuild-docker
  script:
    - dotnet msbuild mysolution.sln /t:Clean,ReBuild /p:Configuration=Release;Platform="Any CPU"
    - dotnet pack "mysolution/myproject.csproj" /p:Configuration=Release;Platform="Any CPU"
    - PKGPATH=$(find myproject/bin/Release/*.nupkg)
    - dotnet nuget push $PKGPATH -k $NUGET_PUSH_KEY -s https://nexus.xyz.com/repository/nuget/
  only:
    - master

где $NUGET_PUSH_KEY - это ключ API, который сохраняетсяв качестве переменной env, которая применяется к средам через бегун.

0 голосов
/ 18 июня 2019

Если я правильно понимаю ваш вопрос, вы хотите создать пакет nuget из своего проекта и загрузить его в Nexus Repo.Вы можете сделать это за один шаг.

build-and-upload:
  image: <dot-net image>
  stage: build-and-upload
  environment:
    name: dev/test/prod
  only:
    - master
  before_script:
    - aws commands if you need to assume a deploy role.
  script:
    - ./scripts/nuget_publish.sh




And this is how your nuget_publish.sh will look like

dotnet build
dotnet pack
NEXUS_SOURCE=<Nexus_Source_Repo_Url>
NEXUS_API_KEY=<Nexus_Source_Repo_Api_Key>
dotnet nuget push <ProjectName>/bin/Debug/*.nupkg --source $NEXUS_SOURCE --api-key $NEXUS_API_KEY

...