Nice idea! That was pretty trivial to add in there, and will be in the next maintenance release via PG-3038:
Welcome to the Inedo Forums! Check out the Forums Guide for help getting started.
If you are experiencing any issues with the forum software, please visit the Contact Form on our website and let us know!

Posts made by atripp
-
RE: Universal Package - Feature Suggestion - Copy URL
-
RE: Pulling dependencies from ProGet in gradle
I'm not really sure, but I'll explain how things work so it might help troubleshoot.
First, the Maven API does not provide a file listing. While you (as a user) can often "see" via an HTML page (like this listing at jboss.org), it's simply not available for listing in the API. The only required file in an artifact is the
.pom
file, so when you "pull" an artifact to ProGet, that's all you'll get.Next, the "remote" icons next to the files indicate that they were cached (i.e. added to the feed) via a connector. That means the files were successfully written to disk, recorded in the database... but now they are gone. Hence, why you keep getting the "file not found" message.
The most likely culprit for this is something deleting the files from a packagestore. We often see security tools doing that for "safety" reasons, since they are
.jar
files that may be dangerous I guess.Overall, the maven API is a very simple series of GETs. So perhaps, you can just experiment with this? First, start with a brand new feed and a connector.
Then, run the command:;
curl http://my.server.local:8624/maven2/my-new-feed/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar --output hamcrest-core-1.3.jar
You should see the file download via CURL. Afterwards, you should see the artifact as a cached package (Top Navigation > Packages > Select Cached). You should also see that
.jar
file on disk, written to the package store location (Manage Feed > Storage).If you don't see a .jar file downloaded to that location on disk, then it means something is "blocking" the file being written. If it's there, then it means something is deleting it after.
Thanks,
Alana -
RE: Rust - invalid gzip header
Hi @rel_0477 ,
Sounds like this is a pretty specific edge case. Can you provide a reproduction case so we can take a look?
Thanks,
Alana -
RE: Debian feed mirror Performance
Hi Dan,
In general, a ProGet feed will be slower than a "real" Debian repository. The reason is that Debian repositories are just static file system like this:
http://ftp.us.debian.org/debian/dists/bookworm/There is obviously a lot more overhead with each ProGet request, since index files are dynamically generated, involve connectors, need to be permission-checked, etc.
In addition, ProGet indexes the Debian indexes on-demand, which means downloading all of the Contents-*.gz files and indexing those. Like in here: http://ftp.us.debian.org/debian/dists/bookworm/main/
While these files are cached, they do need to be updated when the remote repository updates.
And note that each web node maintains its own local index cache, so you will see these long-running requests multiple times. Some organizations will periodically "warm up" the indexes periodically by just hitting the InRelease endpoint.
Hope that helps,
Alana -
RE: IIS/WIA deprecation and support
Hi @sgardj_2482 ,
ProGet's Integrated Web Server already supports Windows Integrated Authentication (WIA). Actually it supports WIA better than better than IIS in that only the Web UI and supported feeds (or ones you configure) will do the WIA challenge.
Behind the scenes, the Integrated Web Server (IWS) uses Kestrel unless you're doing so-called "port sharing", which would be having two web applications sharing the same port. That's becoming less and less common, and isn't something Microsoft recommends anymore.
If you bind to a host name in IWS (i.e. port sharing), then the operating-system level
HTTP.SYS
component is used. That is much less flexible with WIA and every request must be authenticated. Which means it'll never work with Docker, npm, etc. So it's not recommended.Thanks,
Alana -
RE: HTTP 403 response
Hi @michal-roszak_0767 ,
401/403 are not logged, so you won't see a server side event.
403 means authentication was successful but the permissions are not OK
My guess is that the wrong feed or credentials are being specified. Like maybe using an API key?
Thanks,
Alana -
RE: Error using HTTP Request
I'm not sure, but maybe it's something simple like a typo. I don't see it though.
That
401
message will occur when credentials weren't sent.Behind the scenes,
pgutil
uses that API and authenticates by adding the same header:
https://github.com/Inedo/pgutil/blob/thousand/Inedo.ProGet/ProGetClient.cs#L37Perhaps you can use a proxy like Fiddler or ProxyMan to see the difference in HTTP Traffic?
Thanks,
Alana -
RE: Unexpected URL for feed after creating with /api/management/feeds/create and endpointURL
It sounds like you want to enable API v3, which uses the `v3/index.json' URL suffix?
In that case, make sure to set the
useApiV3
property is set. Also, I don't think you can set all those properties on create... you may have to create, and then update.Also note that you cannot set the
endpointUrl
property, it's just readonly. That is generated based on the incoming reques, so if you're viewing it onlocalhost
you'll see that. If you view it onmyserver.corp
you'll see that, etc.Hope that helps,
Alana -
RE: Unable to GET from connector "nuget.org"; using cached copy.
Hi @parthu-reddy ,
This looks more related to Server Overload / Database than anything to me. Note how all the requests are coming in at exact same second. Can you throttle your load balancer a bit, so they don't all hit at the same time? Even a slight delay will help.
FYI - we are tracking a recent regression to SQL Server analysis engine (???) that is causing one particular query (NuGet_GetPackage) to go incredibly slow under extreme traffic. For some reason, it's using the wrong plan suddly. It's been happening to a few users after a recent upgrade/patch to SQL Server. We have a work-around but would like to test it in the field against a user.
Thanks,
Alana -
RE: Using LDAP on Buildmaster located in a container (Linux)
Hi @marc-ledent_9164 ,
This is available in InedoCore-3.0.4, so if you go to Admin > Extensions, you should be bale to update.
thanks,
Alana -
RE: Error when attempting to connect BuildMaster to Bitbucket Cloud
Hi @mhelp_5176 ,
I haven't investigated BitBucket Cloud any further, but it sounds like there's an issue with the integration -- and it's definitely something we can look at later. My guess is that it's some kind of change to the API/authentication. But we're all pretty focused on getting ProGet 2025 out the door, so it'll have to be after that.
That said, the main difference between connecting to a "Git host" like GitHub, GitLab, Gitea, BitBucket, etc. vs a "generic Git repository" is that there will be some intelligent drop downs to help you select a repository. There are a few other differences as well, but mostly it's UI.
So for example, on a GitHub connection, you'll see a list of organizations and repositories, and then would select the one to connect to. Compare this to the "Generic Git repository", where you simply paste in the repository clone url.
But in either case, you need to configure each repository connection individually; typically each application will have one repository, which is why this is part of the application creation process.
It's definitely not a common practice to be able to "pull in all the repositories in a workspace" at once - that's not really how Git works, and it would involve some kind of script that iterates a list of repositories and clones/updates each one indivdiaully based on configured remotes in subfolder.,
Cheers,
Alana -
RE: Proget - Migration of Legacy Debian feed to "normal" Debian feed is broken
Hi Fritz,
Thanks for reporting this; the underlying with the Packages index file isn't so much the migration, but the code that generates the index file on the new feed.
Basically, the control files seem to be have an extra new line that isn't being trimmed. The old feed code must have removed them.
Anyways we will address this via PG-2985 in the next maintenance release or you can try the
proget.inedo.com/productimages/inedo/proget:24.0.37-ci.2
container now.Cheers,
Alana -
RE: API Key Access Logs view
Hi @michal-roszak_0767 ,
Looking over the code, the API Key Access Logs contain the api-key sent by the user, which is being displayed there. In retrospect, this isn't a great design...
It would be technically possible to link that to the "Edit API Key Page" itself, which would show you the description etc.... just a matter of whether that's worth us doing.
Thanks,
Alana -
RE: Error when attempting to connect BuildMaster to Bitbucket Cloud
Hi @mhelp_5176,
Based on the error, it sounds like there is some kind of configuration error / invalid response coming from the BitBucket Cloud API. It's possible the API/authentication policies changed -- we honestly don't really test against BitBucket Cloud, just BitBucket Server.
How about just using a Generic Git Repository? That uses a different API (the Git API) , so that might just work simpler/easier for you.
Thanks,
Alana -
RE: Using LDAP on Buildmaster located in a container (Linux)
Hi @marc-ledent_9164 ,
Yes, it's a somewhat common configuration; I would go to Admin > Security, and you can add a new directory/domain connection. Note you'll need information like a domain host, name/password, etc.
Thanks,
Alana -
RE: Drop Path not deleting
Hi @steviecoaster ,
Under Admin > Service, you should be able to see some logs being printed out. The DropPathMonitor will run periodically (or you can manually run it), and then you'll see some kind of log messages pertaining to what's happening.
It could be a lack of permissions, package already exists, etc.
Cheers,
Alana -
RE: Pulling dependencies from ProGet in gradle
The "File not found on disk" message means that the file was indexed in the database but it's not on disk. This can happen when files are directly deleted from the packagestore, removed by a quarantine tool, disk paths changed (common on Docker, if you mount wrong directory), etc.
Hopefully that makes sense and will help you troubleshoot from here. You can try to clear the cached files, run a feed-reindex, etc. But if all of your files are missing then that's probably not what you want to do.
Thanks,
Alana -
RE: ProGet apt add pgp key
@stefan-hakansson_8938 thanks for the heads up! We'll update this via PG-2982 in the next maintenance release to align with our docs page, which doesn't recommend apt-key
-
RE: Unable to GET from connector "nuget.org"; using cached copy.
Hi @parthu-reddy ,
These are stored in the database and if you click "status" you can see the cached queries.
Does this metadata caching feature reduce the queries to fetch versions that you mentioned?
Yes, instead of going to NuGet.org, the database will be queried.
HOWEVER, this may actually reduce performance; NuGet.org is a static file system running on Azure Blob storage, and it might be quicker to download the query from Azure than to query your SQL Database.
You'd really need to expirement and see which is faster / more load.
Thanks,
Alana -
RE: ProGet - proxy to RAW Repository
@michal-roszak_0767 it wouldn't hurt to start a new topic about it, but it's design decision so you'd have to make a good use case for it :)
I can't find the discussion (maybe it was internal), but the idea is that "generic website connectors" for Asset Directories are a poor solution for "offline" environments. A "generic proxy" like ngnix will always be better in every way.
-
RE: ProGet - proxy to RAW Repository
Hi @michal-roszak_0767 ,
Ah, that's what I thought you were asking in the first place :)
No, that's not a supported use case, I understand it's a design decision
Thanks,
Alana -
RE: ProGet - proxy to RAW Repository
Hi @michal-roszak_0767 ,
Thanks for clarifying; I thought you were looking to "proxy" a website like that...
ProGet has Asset Directories, which basically acts like a web-based file system.
Thanks,
Alana -
RE: ProGet - proxy to RAW Repository
By
RAW repository
, I think you mean like a website / web-based file system?In any case, that's not something ProGet is designed to do -- I guess that'd be more like a "generic HTTP proxy server" type of tool?
Cheers,
Alana -
RE: Feature request - Feed "Other Settings" editor
Hi @michal-roszak_0767 ,
Just as an update, we've added this to our roadmap planning for ProGet 2026.
We will begin that process later this year, after ProGet 2025 has been released (see road to ProGet 2025).
Cheers,
Alana
-
RE: Buildmaster fresh install / Unable to clone repository
Hi @carsten_1879 ,
Can you try using
buildmaster:24.0.5
instead of latest? There was a change in the Git library, and I'm wondering if this is a kind of regression on some platforms.Thanks ,
Alana -
RE: Publish a Docker image from Gitlab pipeline using Kaniko to Proget
Hi @pmsensi,
I'm sorry I'm not sure. The error
HTTP_1_1_REQUIRED
indicates that an intermediary (e.g., proxy or load balancer) is rejecting HTTP/2 requests and requiring HTTP/1.1.So, I would check with the proxies or load balancers between Kaniko (running in your GitLab pipeline) and ProGet. I suspect it's interfering with HTTP/2 traffic, causing the server to fall back to HTTP/1.1.
Alternatively, you can try forcing Kaniko to use HTTP/1.1 instead of HTTP/2. I don't know how to do that, but there may be an
--insecure
flag that may also work.Thanks,
Alana -
RE: Image Scanning
This error means there's some kind of problem/issue with the format of the blob file. Tar is a very finicky format, so we'd need to be able to recreate this in a lab/debug setting.
If you can create a simple repro case then we'd be happy to investigate further.
As for vulnerabilities, each version of ProGet ships with an offline database. So you should be fine as long as you upgrade semi-regularly.
Cheers,
Alana -
RE: Feature request - PGUtil Assets creation
@michal-roszak_0767 currently
maven2
is a workaround, so it will continue to warm. In ProGet 2025,Maven
will create the expected feed type. -
RE: Feature request - PGUtil "Security" editor
This is what I meant by the Security API -- a combination of HTTP Endpoints and
pgutil
commands. We will consider them for our ProGet 2026 roadmap.So until then you'll need to use the Native API; At this time the Native API is the option.
You can also check out @steviecoaster 's PowerShell module, which has some modules that can help https://github.com/steviecoaster/InedoOps
Thanks,
Alana -
RE: Api-Call to get vulnerabilties by package and version
It looks like you're trying to do a
GET
request, which is why it's not working.You need to
POST
an array of package identifiers like this:POST /api/sca/audit-package-vulns [ { "name": "NuGet.CommandLine" "version": "6.8.0" "type": "nuget" } ]
Cheers,
Alana -
RE: Feature request - PGUtil "Security" editor
Just an FYI, we discussed creating/documenting/etc. a new security API (users, groups, permissions) for our ProGet 2025 roadmap, but decided against fitting it in. We'll reevaluate when it comes time to planning out ProGet 2026!
Thanks,
Alana -
RE: PGUtil and "Maven (New)" Feed
Ah, that must have been an oversight; trivial change but best we don't change it until ProGet 2025.
I think you can use
maven2
as the type for now, it's the internal identifier. Later on, we will make itmaven
andmavenlegacy
Thanks,
Alana -
RE: Api-Call to get vulnerabilties by package and version
Hi @itadmin_9894 ,
It doesn't seem to be documented, but we do have a
pgutil packages audit
command:$> pgutil packages audit --help Description: Analyzes a package for compliance issues Usage: pgutil packages audit [options] Options: --package=<package> (REQUIRED) Name (and group where applicable) of package --version=<version> (REQUIRED) Version of package Common Options (packages): --api-key=<api-key> ProGet API key used to authorize access --feed=<feed> Name of feed in ProGet --no-connectors Only include local (non-connector) package data in results --password=<password> ProGet user password used to authorize access --source=<source> Named source or URL of ProGet --username=<username> ProGet user name used to authorize access -?, --help Show help and usage information Examples: $> pgutil packages audit --feed=approved-nuget --package=Newtonsoft.Json --version=12.0.3 $> pgutil packages audit --feed=public-npm --package=@babel/runtime --version=7.25.0 $> pgutil packages audit --feed=private-pypi --package=Django --version=5.0.6 --filename=Django-5.0.6.tar.gz
Cheers,
Alana -
RE: Jenkins Plugin
Hi @michal-roszak_0767 ,
This is a third-party / community plugin and we have no plans to maintain it ourselves. I hear it still works, but is a bit outdated.
HOWEVER, the former owner very recently "handed it over" to another community member. So this may mean we'll see some "new life" or changes -- I think they're still figuring out how to actually publish a new version, or something like that:
https://github.com/jenkinsci/inedo-proget-plugin
Thanks,
Alana -
RE: API request Unauthorized on Windows
@michal-roszak_0767 only what's shown there is currently supported.
I saw that @zs-dahe is is looking for a the RetentionActive setting as well (see https://forums.inedo.com/topic/5341/retention-activation-via-api), so it would probably easiest to do these at once: I'm almost certain this is done at the ProGet level, not pgutil.
Can you open a new thread w/ the requested fields/properties? This will make it much easier for people searching in the future :)
-
RE: MinIO Support
Sounds like a plan, @c4buildmasters_2588 !
In case you haven't seen it, it's "relatively easy" to load a custom extension:
https://docs.inedo.com/docs/inedosdk/extending-inedo-tools-using-the-sdk/inedosdk-extending-creatingFor testing this change, I would just build/pack it with a higher version number than the official
AWS
extension - if all looks good on our end (i.e. won't break existing installs, etc), then we'll likely be able to accept pull request and then publish an official new version. Then you can delete your custom one.Thanks,
Alana -
RE: API request Unauthorized on Windows
Hi @michal-roszak_0767 ,
We do not have a non-Native API to assign privleges at this time, but otherwise our documented APIs are here: https://docs.inedo.com/docs/proget/api
Here is the info about the Native API:
https://docs.inedo.com/docs/proget/api/http-requests#native-api-endpointsThanks,
Alana -
RE: MinIO Support
Hi @c4buildmasters_2588 ,
I haven't heard of MinIO before, but they claim to be "S3 Compatible Storage" so maybe it'll work?
I also don't know what "virtual path support" or "path style" means, but I can say that several users have had success with other S3-compatible services, while other services have had bugs and/or aren't actually S3-compatible. Best I can say, give it a shot and see what happens.
You can see how we use the AWS SDK and what our code looks like over here:
https://github.com/Inedo/inedox-aws/blob/master/AWS/InedoExtension/FileSystems/S3FileSystem.csNo idea what to enter in any of the fields, but I suppose you would just enter the CustomServiceUrl ("Advanced" tab).
If you get it working let us know, would be nice to have a follow-up post here in case anywone else searches for it :)
Cheers,
Alana -
RE: API request Unauthorized on Windows
Hi @michal-roszak_0767 ,
I assume you mean, why don't we recommend using the Native API?
We don't recommend using the Native API because we do not document usage and the methods are subject to removal or change, even in maintenance versions.
In this case, we do not have an alternative API for getting security privileges, so the only option is
Security_GetPrivileges
if you want to do that programmatically.Thanks,
Alana -
RE: Retention Activation via API?
Hi @zs-dahe ,
This isn't currently supported via the api / pgutil feeds update command. Let us know if you'd like us to consider this a feature request and we could likely add it an upcoming maintenance release :)
Cheers,
Alana -
RE: API request Unauthorized on Windows
Hi @michal-roszak_0767 ,
The first thing that comes to mind is WIndows Integrated Authentication.
Curl does not support that, but if you use PowerShell wtih --UseDefaultCredentials it will. You can also bypass the request by appending
?bypassIntegrated=false
to the URL.Cheers,
Alana -
RE: Implementing sort by modification date on pgutils for retrieving Assets
Hi @mmaharjan_0067 ,
The
pgutil assets list
command is intended for interactive use and should not be parsed; it could change in future versions.Instead, you can just call the endpoint directly, which will contain the details you're looking for:
https://docs.inedo.com/docs/proget/api/assets/folders/listCheers,
Alana -
RE: Question About Vulnerability Assessment Expiry Behavior in ProGet
Sorry on the slow reply, I tried to quickly reproduce it but it worked as expected -- but I must have done something wrong. Then I realized we can just ask for your analysis logs.
On this particular package, can you do a "Re-Analyze" (in the drop-down button) and then share the logs from that? That will help us identify exactly what's going on.
But overall you are correct... once an assessment expires, it should be treated as if it were unassessed, which in your caase, would mean a noncompliant / blocked package.
Thanks,
Alana -
RE: Maven Policy not blocking Noncompliant packages
Hi @parthu-reddy ,
If you can provide my with some step-by-step instructions (reproduction case), then I can see if if there's a bug in ProGet. However we can't really change the "license file is embedded in the package file" technical requirement.
That said... using custom licenses for blocking package is definitely inappropriate. Please do not do that. It will cause you headaches and probably business disruptions later. There are already tools to prevent users from downloading packages from ProGet, this is not how you want to do it.
The easiest solution here is to align the security team's understanding/expectations align with reality. You don't want to try to configure ProGet in unrealistic ways that will lead to actual problems/risks.
I suspect the security team is conflating "vulnerable packages" with "malware and viruses", so it'd be best to take this opportunity to educate them on how packages / ProGet works.
- ProGet can prevent users from downloading certain packages, but vulnerable packages are freely available on the internet for download.
- A vulnerable package is NOT some a "virus in a lab that can escape" and infect a system
- A package is just a library and cannot run on its own
- If a user has a copy of vulnerable package, they can't use it to "hack" a system with it nor will it cause any harm
- Vulnerable packages simply shouldn't be used as building blocks in your own applications
Thanks,
Alana -
RE: (500) Server Error When editing description of a Universal Package
Thanks @daniel-pardo_5658 , I was able to reproduce it.
It seems to work when you have additional metadata fields. Anyway we'll get it fixed via PG-2935 in the next maintenance release. AS a work-around, you can just download the package, edit the upack.json, and reupload it.
Cheers,
Alana -
RE: Need info on blocking packages
Hi @parthu-reddy ,
This hasn't changed; to "Set Package Status", you need to first Pull the Package to the feed. From there, you can a compliance rule override of Always Block or Always Allow Downloads.
Thanks,
Alana -
RE: Otterscript: Usage of Success exit code or EXEC operation - clarifications
Hi @scusson_9923 ,
Thanks for clarifying. You're right, the result is not available as a variable. Instead, the Operation will fail, which means you'd want to handle this via a try/catch.
try { InedoCore::Exec ( FileName: pwsh, WorkingDirectory: C:\, Arguments: test.ps1, ErrorOutputLogLevel: Error, OutputLogLevel: Information, SuccessExitCode: == 0 ); ... operations for success... } catch { ... operations upon failure ... }
Hope that helps,
Alana -
RE: Maven Policy not blocking Noncompliant packages
Hi @parthu-reddy,
I'm not sure about the specifics of how you've configured this, but in general, the "first download not blocked behavior" is to be expected with certain types of license checking.
Depending on how the author configured the license, ProGet cannot detect a license without the package file... so until the package has been added to the feed in ProGet, (via caching) happens it's considered "Undetected". In your Policy, you have that as "Warn", so it won't be blocked.
It's not technically feasible to handle this any other way, as ProGet streams the file it's downloading from a remote source to the user while also adding it to the feed for caching.
Thanks,
Alana -
RE: Otterscript: Usage of Success exit code or EXEC operation - clarifications
Hi @scusson_9923 ,
Can you clarify what update you're looking for?
Are you looking for help on how to capture a failure and test on it?
Thanks,
Alana -
RE: (500) Server Error When editing description of a Universal Package
Hi @daniel-pardo_5658 ,
Unfortunately I'm not able to reproduce the error; I think it has something to do with your
upack.json
file. Can you share that?Thanks,
Alana