Hi @andreas.unverdorben_1551 ,
Just as an FYI, I submitted two pull requests for this:
- https://github.com/github/advisory-database/pull/8689
- https://github.com/github/advisory-database/pull/8690
Thanks,
Alana
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!
C# developer by trade, but writing less and less code and more and more specs.
Hi @andreas.unverdorben_1551 ,
Just as an FYI, I submitted two pull requests for this:
Thanks,
Alana
@Stephen-Schaff said in API to apply an Alternate Tag to Docker Container Image:
Here is the PowerShell function that does both the promotion and the tagging (incase anyone ever needs something like this). Kind of a "do it yourself" repackaging. (Might be nice to have the Repackaging API support Docker container images someday).
Thanks for sharing this, I've added it to our Semantic Versioning for Containers docs page, I hope that's okay :)
And yes I agree, it woudl be nice to make this an easier API call
Hello; you'll need to change the BaseUrl in advanced settings so that ProGet can construct an absolute URL when needed (certain NuGet fields, etc). I've updated the docs to reflect this.
Hi @carl-westman_8110 ,
The error message means that the database wasn't updated as per normal during the start-up process. It's hard to guess why, as we have special handling for that.
It's likely that restarting the service would have fixed it, but downgrading and then upgrading would also force an upgrade as well. Unfortunately it's hard to say at this point.
Upgrading to 2025.10 should be fine.
Thanks,
Alana
You can reset the Admin user account password by stopping the ProGet Windows service, then running ProGet.Service.exe and selecting the "ResetAdminPassword" option. Make sure to restart the Windows service when finished.
Hello; I've updated the documentation to clarify this, but it's available starting in ProGet 5.2.9. So, you'll need to upgrade to enable it :)
Hi @m-lee_3921 ,
Thanks for the heads-up; we'll get this fixed via PG-3059 in the next maintenance release (scheduled for later today).
And you're right -- its basically the same issue. SQL Server silently truncates string values whereas PostgreSQL does not, hence these errors.
We decided to not auto-truncate, since it's better to know about these cases than not. In this case, it's a IPv6 address that was longer than the 20-character limit. We plan to refactor API key logging at some point, so we'll just continue to truncate v6 IPs.
Thanks,
Alana
I'm not very familiar with PyPi packages, but I know there are some oddities with - and _, and that they are sometimes supposed to be treated the same, and sometimes not. We don't totally understand all the rules, to be honest (even after reading PEP503 specifications).
In this case, the package is actually websocket_client, not websocket-client.
See: https://pypi.org/project/websocket_client/
When you search for websocket_client in ProGet, it shows up, as expected.
You're right, I guess that's showing the "layers" instead of the "tags"; I think it should be showing container registries separately (they're not really feeds), but that's how it's represented behind the scenes now.
Anyways we are working on ProGet 5.3 now; there's a whole bunch of container improvements coming, so I've noted this on our internal project document, to make sure we get a better display for container registries.
@joshuagilman_1054 I don't really know PowerShell myself (today I learned you can do classes
)... but behind-the-scenes it's .NET, and that means we can use nullable value types.
I tried [int?] (nullable shortcut syntax) and [Nullable<int>] (generics shortcut syntax) but PowerShell isn't so happy with either. So the long way it is...
[System.Nullable``1[[System.Int32]]] $myInt = 0
echo "myInt is $myInt "
$myInt = $null
echo "myInt is $myInt "
$myInt = 1000
echo "myInt is $myInt "
That should do the trick for you, and is close to our JSON Model anyways.
Hi @a.sieger ,
I would push back on that "hard requirement" because it doesn't make any technical or business sense, and will only lead to support headaches just like this.
There is something wrong with your PostgreSQL server configuration, perhaps permission related, that's causing the database to not be created. The error cannot be logged in the database because it doesn't exist.
I would delete the database and start again, but verify you've created the database exactly as specified using the exact version supported:
https://docs.inedo.com/docs/installation/postgresql#external-postgres
Things like improper locales will cause errors.
Then, don't run ProGet detached (i.e. ommit -d) so you can get the console logs. That's where you will see database errors. You can also run the upgradedb command instead:
https://docs.inedo.com/docs/installation/linux/installation-upgrading-docker-containers#upgrading-the-database-only-optional
Please let us know what you find!
Hope that helps,
Alana
@forbzie22_0253 yes it's supported, but please note we are moving away from SQL Server to PostgreSQL, so you should consider migrating (Admin > Database)
Hi @a.sieger ,
Please note that we do not recommend an external PostgreSQL database. It performs slower, costs more to maintain, has a higher chance of outages, and tends to cause support headaches down the line. The database primarily stores package metadata and application configuration, doesn't take up much disk space, and it's not the business data that your DBAs would own.
That being said if you really insist on using one, then please refer to the Database Connection String section on the page you linked.
For the non-embedded PostgreSQL database backend, you will need to specify a «inedo-product»_POSTGRES_CONNECTION_STRING environment variable instead.
So you need to use PROGET__POSTGRES_CONNECTION_STRING
Thanks,
Alana
Hi @daniel.mccoy_4395 ,
Actually, developer experience is a big reason we don't recommend using Download Blocking. A 400 error provides no real context. Developers can see something is wrong, but not how serious it is or what to do next.
First and foremost, an unlisted package should not be noncompliant. An author may decide to unlist their package for any number of reasons, including simply not wanting too many versions to show up in a list.
This would mean that, all of a sudden, a build deployed to production can suddenly be considered as noncompliant just because an open source author arbitrarily flipped a switch on NuGet.org. That's not to say you should ignore the unlisted flag, but you should definitely not put it at the same categorization as a GPL3 license or severe vulnerability.
"Compliant with Warning" could be a more appropriate status here, but keep in mind that developers swill naturally upgrade dependencies as they do platform updates, so it may not even be worth worrying about. Especially if it leads to constant warnings -- in that case, warnings become meaningless.
Noncompliant packages should be rare for the same reason. If noncompliant can be determined by an OSS author's whims, then it really caries no meaning and no one (especially your developers) will understand/appreciate what it means.
As for the workflow to use, we recommend running pgutil builds scan when that pull request is run. That will not only put the build in ProGet, but it will produce a text report with warnings or noncompliant packages. A ProGet login is not required.
If there are Noncomplaint packages or warnings, the developer can then comment on the PR why it's nothing to worry about. If it's always the same package/issue ("we cannot upgrade from this 5-year old library and replacing it would be a substantial effort"), then you can formalize that as an exemption.
The advantage to this workflow is that, if a deployed build later becomes noncomplaint (typically due to a vulnerability), then you can decide how and when to address it. The wrong time to address noncomplaint packages is "the next time a developer happens to open this project".
Overall, what you want to avoid is having developers load a project for what should be a trivial change and then have to upgrade dependencies because it produces pointless warnings/errors. That will just create a "constant upgrade" mentality. That leads to constant regressions and constant headaches for testers or end-users, who have to deal with strange and unexpected errors from library upgrades.
Hope that helps,
Alana
Hi @rcpa0,
It's hard to say, but maybe it has something to do with how the package file / archive was created.
Can you share the file or a reproduction case?
Thanks,
Alana
Thanks for clarifying; it got a little distracting with the desire to have PR cleanups and specialized variables! We also see a lot of anti-patterns in Git repositories, such as using PRs for workflows, because that's how open source projects tend to work.
Anyway, it sounds like you figured it the first part, which is to set the monitor to just create a build with a specific pipeline (e.g. "Feature Branch" pipeline).
The next step, just use a retention policy that targets builds that have completed the pipeline. For example:
Here is the standard practice / pattern that we support for Feature Branches:

The idea is that developers start by creating a well-named feature branch (i.e. following a strict naming standard), adding commits to it, testing it, and then finally submitting a pull request for it. See our Feature Branches article to learn more about this workflow, including how retention rules can be configured.
In other words, the Pull Request comes only once the branch is ready (validated) for merging, and BuildMaster is submitting (or facilitating) that request. We take the term literally ("a request to pull the changes from the branch into into the master"):
In this workflow, there is no need for "commit verification" before submitting a PR. That's the responsibility of the branch owner, and they will have already done that before submitting.
I am aware that others do not use Git repositories this way, but our tooling is a generally opinionated. For example, we consider "pull requests as a backlog" as an anti-pattern for several reasons, but mostly that it's an inappropriate tool for work item management and lacks any semblance of prioritization and related feature. Issue tracking is appropriate for backlog tracking. So thaht's why there's not first-class support for it in BuildMaster.
All this said, I don't think the "Feature Branch" workflow is what you're describing. I don't quite understand it, but long story short... if it doesn't really fit into one of our use cases, so it's isn't something that's going to be easy to configure in the software - and you'll likely need to start customizing with your own Extension.
Instead, we recommend to just adjust the workflow.
Thanks,
Alana
Hi @Nils-Nilsson ,
We'll implement something like Scenario B, which mirrors how the UI handles it and is the easiest to implement:
pgutil feeds create --name=myfeed --type=NuGet --group=mygroup
We'll also target this for July 24th's release, and ship via PG-3338.
Thanks,
Alana
Hi @Nils-Nilsson,
Sorry on the slow response; we finally got the chance now to prioritize some roadmap items.
In any case, this will be implemented as PG-3337 in an upcoming maintenance release (targeting July 24).
Thanks,
Alana
Hi @pmsensi ,
Oh sorry I didn't realize or notice it when reviewing the reply. We decided not to include it after all, mostly because we couldn't realistically model/generalize the data across ecosystems when it comes to things like how NPM handles dev-level dependencies, how PyPI handles environment dependencies, etc. The UI display garners a decent number of "complaints" because it doesn't represent it the same way as say, npmjs.org for example.
That said, the manifest file (i.e. .nuspec) is cached in the database, but there's no "ProGet" API to retrieve that.
You'd have to use the NuGet-specific API for that, or just download the package file and then extract the .nuspec file.
Thanks,
Alana