» »

CI/CD težave

CI/CD težave

acookook ::

Že en lep čas rešujem problem, na katerega ne najdem rešitev, zadeve pa postaja čedalje večji in večji mess. Da ne dolgovezim o problemu, ki sem ga objavil na stack overflowu, bi tu samo povedal, da se gre za težavo z .NET projektom, ki za builda jenkins. Link na SO: https://stackoverflow.com/questions/741...
.

nightrage ::

In kako imaš konfiguracijo in build steps v jenkins-u nastavljeno za tvoj projekt?

kuall ::

ta nuget zna zajebavat.
ne vem če bo to tvoja rešitev ampak zame to deluje:
Problemi z wrong assembly itd:
brisanje, kar je v packages mapi in restore nuget z vs2022
ob morebitnih opozorilih, da niso packagi updatani: Update-Package -Reinstall

acookook ::

nightrage je izjavil:

In kako imaš konfiguracijo in build steps v jenkins-u nastavljeno za tvoj projekt?

MS Build je Visual studia 2022,
1. build step je:
-p:RestorePackagesConfig=true
2.build step je (pišem iz glave):
-p:AppConfiguration=Debug;Platform=AnyCPU;PublishDestination="C:\Inetpub\www\mapaProjekta"

ta nuget zna zajebavat.
ne vem če bo to tvoja rešitev ampak zame to deluje:
Problemi z wrong assembly itd:
brisanje, kar je v packages mapi in restore nuget z vs2022
ob morebitnih opozorilih, da niso packagi updatani: Update-Package -Reinstall

Đabe, ker ne more resolvat dependency, ki ni več kot nuget paket ampak kot projekt.
Plus tega, mi nuget skoz išče na nuget.org (tudi če vnesem svoja mesta), prav tako so trargeti paketov .NET FW 4 in .NET standard 2.0.
Ta glavna zadeva pa targetira .NET FW 4.5.1/2. Prav messy je zadeva postala.
.

Lonsarg ::

To je težko tako na pamet brez kode.

V kolikor imaš kak star packages.config je definitivno konverzija v PackageReference prva stvar kot je že kuall predlagal, včasih že to reši (desni klik na packages.config v VS2022 ti ponudi migracijo), konverzija sicer ponavadu ne bo delovala ok, če gre za Excel plugin ali WCF...

Druga stvar da boš lažje debugiral je, da ročno specificiraš nuget.config in ga commitaš v source control in ta config je idealno enak ko lokalno buildaš in na build strežniku. Ta config naj bo torej kar na root od repozitorija da bo vedno premagal ostale nuget.confige (ki so per machine ali per user itd). V tem konfigu ročno specificiraj prave nuget feede v "packageSources", dodaj na začetku še "clear" da bodo res samo te uporabljeni: https://learn.microsoft.com/en-us/nuget... Skoraj gotovo kak public nuget uporabljaš, tak da nuget.org v tem primeru rabiš. Nuget gre vedno vse nugete na vse feede iskat, zato vidiš da ti hodi tudi na nuget.org za tvoj privatni package, tak da ta del (da gre na slepo iskat v nuget.org) je ok.

Ampak dobro to so le izboljšave (ki znajo sicer precej pomagat). Kar se pa problema tiče pa jaz vedno uporabim nuget.exe za restore in ne msbuild, bi moralo brez posebnih parametrov delat, ker je itak point da vse parametre specificiraš že v nuget.config https://learn.microsoft.com/en-us/nuget...

Zgodovina sprememb…

  • spremenil: Lonsarg ()

acookook ::

VS22 me ustavi takoj pri migriranju. Javlja mi, da
To je pol kar sem v dokumentaciji prebral: You should now be able to see the migration option. Note that this option is not supported and will not show up for ASP.NET and C++ project types. Pač zgleda, da je kar cancer tale ASP projekt. Ostala 2 projekta sem migriral brez problema.
Mimogrede točni build stepsi za MS build:
1. /p:RestorePackagesConfig=true;SolutionDir="${WORKSPACE}"
2. /p:Platform=AnyCPU;Configuration=Debug;PublishDestination="C:\inetpub\wwwroot\MojSajt (test.mojsajt.si)"
Ostano ni definirato oz je default.
Pač malo me tudi zmede dejstvo, da imaš MS build, dotnet.exe in tudi nuget.exe. Upam, da v kratkem to kaj po popucajo, ker je vse tak milo rečeno konfuzno.
.

acookook ::

Kar bi še enventuelno probal, je
1. Targetirati nuget pakete, ki niso public, na 4.5.2 in kreirati iz njih nove pakete. To sem sicer probal, očitno pa ne vem pravilno zbuildati nugete z VS2022, kjer niti nimam vseh opcij na voljo (v vizualnem prikazu csproj datoteke od nugeta), da bi prišel do končne stopnje oz. ko kaj skreiram, končam s čist drugačno strukturo Nuget mape. Tudi ne pomaga ravno (oz. spet delam nekaj narobe), če v projekt vključim DLL, ki ga zbuildam v na novo targetiranem projektu.
.

GupeM ::

Nisem bral vsega, ne spoznam se na to kar pišeš, sem pa delal v Visual Studiu. Imel sem "podoben" problem, mogoče je pri tebi isto. Glede na to, da imaš v nicknameu š, ga imaš mogoče tudi v uporabniškem imenu? Torej da je tvoj home folder recimo C:\Users\šanji\...?

Pri meni je bil problem šumnik v imenu userja (oz. nasploh kakršenkoli šumnik v poti do datotek). Visual studio ni znal delat s tem.

acookook ::

Ne,ne povsod (tako doma, kot službeno) imam zaradi tega vedno ...\ime.priimek\... in dela brez problemov.
.

Invictus ::

1. Lahko zadevo izvedeš ročno (DA/NE) ?
2. Imaš napisano kako skripto za avtomatizacijo (DA/NE) ?

Če sta zgornja 2 odgovora DA, bi moralo delati tudi v Jenkinsu. Drugače Jenkins ni kriv.

BTW. Jenskins in Windows nista najboljša prijatelja, lahko pa prestaviš build na Linux... Čeprav gre za Windows aplikacijo.
"Life is hard; it's even harder when you're stupid."

http://goo.gl/2YuS2x

acookook ::

Samo 2. je NE. Se meni tudi zdi da ni Jenkins kriv. Mislim, ja....za Bamboo ni ravno denarja, za Jenkins sem pa že nekaj cajta investiral not in bi se res naučil nekih osnov CI/CD, ki mi jih Heroku ni nudil. Odločitev je Jenkins.
Pač začelo se je z:
  CSC : error CS0006: Metadata file '..\packages\Microsoft.CodeAnalysis.Analyzers.1.1.0\analyzers\dotnet\cs\Microsoft.CodeAnalysis.Analyzers.dll' could not be found [C:\ProgramData\Jenkins\.jenkins\workspace\mojSajt\mojSajt.Api\mojStat.Projekt1.csproj]

Pač ko kaj pametnega probam z Nugetom naredit, mi javi: unable to resolve "NugetPaket.X.Y.Z', čeprav je že vključen ko class library projekt. Pač kaj imaš za resolvat, če ti je projekt lokalno že v solutionom.
.

acookook ::

p.s. Drug trije paketi postanejo problematični, ko kličem prvi build step.
.

bedak ::

kaj pa če bi uporabil azure devops, saj imaš free verzijo za CI/CD one pipeline ... ?

acookook ::

Bom pogledal. Sicer bi ostal na jenkinsu (zaradi drugih projektov). Ok bomo vidli, javim. Hvala!
.

nightrage ::

Včeraj sem si za foro skonfiguriral jenkins v dveh urah in deluje brez problemov. Uglavnem prebere solution file (.NET 6) iz diska, zbuilda main project, nato s pluginom za datoteke zipam folder in zip prestavim na drugo lokacijo.
Konfiguracijo za restore nuget paketov nisem nastavil, to prebere iz project datoteke in obstoječega direktorija packages. Sicer za c++ projekt nisem probaval.

Moti me namreč dejstvo, da vsak post poveš drugo napako, pol pa si vsak tolmači tvoje probleme po svoje. :)

Zgodovina sprememb…

detroit ::

sorry tldr;
https://learn.microsoft.com/en-us/nuget...

nuget.config in clear?
Skero

Lonsarg ::

Take stvari je pretezko preko forumov brez dostopa do same kode debugirat. To je fajn v zivo.

Sicer pa z package.config so same jebe, jaz sem ze tedne zivljenje s tem izgubil. Od kar smo 99% na PackageReference je nirvana.

acookook ::

nightrage je izjavil:

Včeraj sem si za foro skonfiguriral jenkins v dveh urah in deluje brez problemov. Uglavnem prebere solution file (.NET 6) iz diska, zbuilda main project, nato s pluginom za datoteke zipam folder in zip prestavim na drugo lokacijo.
Konfiguracijo za restore nuget paketov nisem nastavil, to prebere iz project datoteke in obstoječega direktorija packages. Sicer za c++ projekt nisem probaval.

Moti me namreč dejstvo, da vsak post poveš drugo napako, pol pa si vsak tolmači tvoje probleme po svoje. :)

Ne, jaz imam ASP na 4.5.2....Pač štekam, da je vsakič druga napaka, če poizkušam vsakič drugo stvar in sem se sam zalotil, da ne vem, če sprašujem za pravo stvar. Pač kar koli sprobam mi dejansko vrže ven drugačno napako.
Osnovna tažava je pač da ne najde Microsoftovih DLLjev, ki so na voljo kot nuget paketi. "Rešitev" za to naj bi bila posodobitev/reinštalacija nuget paketov. Ko to probam izvesti mi nuget, teži: "Unable to resolve dependency Stari.Nuget.Paket.Ki.Je.Na.Nov.Način.Že.Vključen.V.Projekt. Za to imam nastavljeno v Nuget Package Managerju (bom kar okrajšal NPM) sources na All. Po različnih msbuild ukazih, mi javi težave z tri custom nuget pakete, ki jih na marketplacu ni".

detroit je izjavil:

sorry tldr;
https://learn.microsoft.com/en-us/nuget...

nuget.config in clear?

Ma ni, nekje s samim projektom je to prišlo not zapisano. Sem primerjal zadnji uspešen build (commit) s takoj prvim neuspešnim. Git Tortoise ne pove nič.

Lonsarg je izjavil:

Take stvari je pretezko preko forumov brez dostopa do same kode debugirat. To je fajn v zivo.

Sicer pa z package.config so same jebe, jaz sem ze tedne zivljenje s tem izgubil. Od kar smo 99% na PackageReference je nirvana.


Se strinjam, ampak tudi tisti, ki vidimo kodo nimamo ravno clue, zakaj je naenkrat crknilo. Mogoče imaš idejo, kako migrirati na ASP projektu.
Saj priznam, daje že cel ta post (tudi na SO) en velik mess, samo enostavno več ne vem nekega sistematskega pristopa k zadevi.
.

kuall ::

acookook je izjavil:

samo enostavno več ne vem nekega sistematskega pristopa k zadevi.

pa menda boš ja rešil zadevo? takele stvari so smotane, dolgočasne, žrejo čas ampak eventuelno se jih reši, slej ali prej. stric google ve odgovor. pa trial and error.

Lonsarg ::

acookook je izjavil:

Lonsarg je izjavil:

Take stvari je pretezko preko forumov brez dostopa do same kode debugirat. To je fajn v zivo.

Sicer pa z package.config so same jebe, jaz sem ze tedne zivljenje s tem izgubil. Od kar smo 99% na PackageReference je nirvana.


Se strinjam, ampak tudi tisti, ki vidimo kodo nimamo ravno clue, zakaj je naenkrat crknilo. Mogoče imaš idejo, kako migrirati na ASP projektu.
ASP je klasika, ta nima nobenih omejitev glede PackageReference. Tak da če avtomatska migracije ne gre bi jaz lepo nov svež projekt kreiral, pa ročno potem tja skopiral vse datoteke in reference ena po ena (na koncu seveda rename da bo spremenjen zgolj project file predno comitaš). Včasih je to pač hitreje kot rešit kak star zaštekan projekt. Sem sicer tudi z ročnim editom .csproj že velikokrat počel, pač zbrišeš vse nuget reference plus zbrišeš package.config. Nato restartaš visual studio in preko Nuget managerja nazaj poinštaliraš in bi moralo izbrati PackageReference.

Pa jaz imam tut navado vedno lepo frameworke dvignit na 4.7.2 (golden standard za legacy), predno sploh karkoli rsziskujem. Nima nikjer za obstajat noben server ki ni vsaj na 4.7.2. popatchan.

Drgač tisti unable to resolve dependany je fajn napaka, od tam naprej delaj. Ima da deluje po reinstalu. Treba ugotovit zakaj ne resolva kljub temu da je dodano, je kak nuget morda dvignjen na preveč novo verzijo? Latest verzije nugetov gotovo ne podpirajo več takih prastarih frameworkov.

Zgodovina sprememb…

  • spremenil: Lonsarg ()

acookook ::

Okej, sem zbrisal ven vse refernce iz item groupa in packages.config. Torej namestim najprej te moje pakete, potem pa?
Treba ugotovit zakaj ne resolva kljub temu da je dodano, je kak nuget morda dvignjen na preveč novo verzijo?
Nekateri nugeti imajo klicaj, ni pa ne piše, kaj je narobe.
Treba ugotovit zakaj ne resolva kljub temu da je dodano, je kak nuget morda dvignjen na preveč novo verzijo?
Hja, vsi možni razlogi in rešitve na SO ne pomagajo.
Pač ok, kot zadnje bom probal dvignit na 4.7.2 ali kar vse na novo.

ASP je klasika, ta nima nobenih omejitev glede PackageReference.
Ja očitno jo ima, saj piše na microsoftovi strani, da ne gre ASP (vsaj ne za 4.5.2.) in C++ projektov.
.

Zgodovina sprememb…

  • spremenil: acookook ()

Lonsarg ::

Tisto kar pise na uradni strani so omejitve glede specificnih nugetov, ki ne podpirajo PackageReference in ne omejitve glede samega frameworka. Ampak nekako nisem na te omejitve naletel ko sem se z tem ubadal.

Namrec jaz sem migriral pri nas cirka 150 solutionov z po 1-10 projekti per solution na PackageReference + na 4.7.2. framework in nisem nasel enega samega primera da kje ne bi delalo (no z izjemo WCF Web Service in Excel Plugin projektov kot prej omenjeno). Je res da sem hkrati poleg dviga frameworka masovno dvignil tudi vecino nuget referenc. Cisto mozno da starejse verzije imajo vec problemov.

Zgodovina sprememb…

  • spremenil: Lonsarg ()

acookook ::

Mah, itak so to tolko stari dependencyji, da je boljše če stvar še enkrat znova prepišem, po možnosti .NET 7. Upgrejd naredi še več težav, kot jih reši. Ma pusti, tudi teh 350 rep. na SO nebom več videl. Vseeno hvala vsem! Bom že ugotovil.
.

acookook ::

Pač enostavno ne razumem, zakaj mi VS2022 še vedno hoče resolvat nuget package, ki je šel ven package.configa in je vključen kot projekt.
.

acookook ::

Po parih dnevih praskanja po glavi in dodatnemu researchu se predam. Nič bo se treba drugače znajti. ?\_(?)_/?
.

acookook ::

Oziroma bi vsaj prosil, za 1 reputation (na katero koli vprašanje/odgovor), da lahko spet komentiram, pa prek komentarjev mogoče dobim odgovor?
.

acookook ::

hvala za +10 reputationa...50 je za komentiranje dovolj
.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Visual Studio

Oddelek: Programska oprema
243036 (788) Invictus
»

Java bo placljiva (strani: 1 2 )

Oddelek: Programska oprema
7816898 (8862) opeter
»

[C++] github projekt

Oddelek: Programiranje
11903 (736) kow
»

Prišel je Visual Studio 2017 (strani: 1 2 )

Oddelek: Novice / Ostala programska oprema
5019969 (16459) Qushaak
»

C# in SQLite knjižica

Oddelek: Programiranje
161118 (852) bsslo

Več podobnih tem