Comparison between Verdaccio and Github package registry - github-package-registry

I'm looking for some comparison between this to registry, did anyone try both?
Why I should use one or another?
What are the pros and cons of each registry?

I'm verdaccio maintainer, so I'll try to give you an un-opinionated answer.
Why I should use one or another?
First of all, both are different in many aspects, thus, the answer would be up to your needs. For what do you need a private registry?
Verdaccio GitHub Registry
Host private packages ✅ ✅ (*)
Host scoped private packages ✅ ✅
Host non-scoped private packages ✅ ❌
Proxy packages (npmjs) ✅ ❌
SAAS service registry ❌ ✅
Self-hosted registry ✅ ❌
Custom authentication ✅ ❌
Code Privacy ✅ ❌
High amount of users ❌ ✅
Customization ✅ ❌
Support all npm commands ❌ ❌
npm audit ✅ ❌
run locally ✅ ❌
offline ✅ ❌
This is just on top of my head. I'm sure there are more differences. Verdaccio can be SASS and also self-hosted, thus, differences are noticeable.
So, now think about your needs, then chose the one the most fits to you.
What are the pros and cons of each registry?
Mostly what I answer above, the big pro for GitHub is a huge infrastructure and most likely will not fail and you don't have to worry about host a registry by yourself. While Verdaccio is highly customizable and can run wherever you want, either for run E2E testing, cache some packages for future travels or minimize issues with npmjs, simply run a private registry in your organization or learn some Node.js publishing locally.
(*) Host private packages: At time of this writing is free, but most likely will turn be a paid service for private packages, and free for public ones.
Hopefully my answer helps you to understand the difference between both services.

Related

Window Tortoisehg, realised I cannot use Bitbucket, is there free alternative for home use (with cheap annual subscription) which is easy to setup

Window Tortoisehg, realized I cannot use Bitbucket, is there free alternative for home use (with a cheap annual subscription) that is easy to setup. Many answer found here are outdated since Bitbucket no longer support Tortoisehg. I'm open for suggestion. I looked into GitHub but had no luck in making push works
You still can use Bitbucket and any other Git-hosting with hg-git extension in Mercurial (ssh and https pushes aren't a problem at all - I have and use Github repos from my THG)
You can see at pure Mercurial hostings, but I'll recommend starting from
Helix TeamHub (free)
SF.net (terrible old interface, but..)
Heptapod Hosting (paid, but not overpriced)
Heptapod is one commercial (not free) example. They say:
The power of GitLab Core and Mercurial combined ... Access your
Mercurial repository through HTTPS, SSH or the Web UI.
One side-benefit of using their services is that they themselves host the repositories for numerous Mercurial tools including TortoiseHG, etc. Perhaps / presumably the commercial side helps to financially support all of that:
https://foss.heptapod.net/explore/projects/trending

Interoperability of Mercurial 6 with other VCSes

Some years ago, Mercurial | TortoiseHG could exchange data bidirectionally easy with at least 2 Big Brothers:
Subversion, using HGSubversion
Git, using HG-Git
Current (6.0 versions of family) state - the ordinary users have none:
hg-subversion is broken (extension can't be loaded), bundled with THG (Mercurial ???) extension not updated since 2019 hgsubversion: 6a6ce9d9da35 2019-04-19 (extraction from my TortoiseHg\extension-versions.txt), external SVN-bindings exist only for Python 2.7 (while py3-movement inside Mercurial is live and active)
hg-git got some big troubles, starting from THG 4.9 (manual patching of library.zip was required), on 6 version the situation has gotten better (no patching), but still unsatisfactory for the common user - installing Python 2.7 (for single-user) and using pip isn't The Right Way (tm)
Are there any comments, additions, clarifications, recommendations on how to do it (if what I am doing is wrong)?
Addition after some testing: special verson tortoisehg-6.0hggit-x64.msi from Matt Harbison at least allow using hg-git with ssh-transport (not http yet) and can be recommended for every-day usage by ordinary user.
So, as a current maintainer of hg-git and former contributor to hgsubversion, I think I can provide some context here.
Regarding hgsubversion, the short answer that it is either dead or — at best — extremely dormant. Personally, I have not interacted with a Subversion repository in years, and that's a common experience. No-one has been sufficiently motivated to fix bugs, keep it working, and — last, but not least — make it work with Python 3.
For hg-git, a period of semi-dormant state meant that the TortoiseHg maintainers stopped bundling it. We now keep up with Mercurial releases, and I've requested that they reverse that decision. I believe they bundle Dulwich, but as I don't use Windows, I can't say for sure. That said, it's quite reasonable to want to use hg-git with TortoiseHg, and if you run into any specific issues, I'd suggest you file a bug with them — or perhaps add a comment to the bug I linked earlier.
Generally speaking, you should be able to use 0.10.x version of hg-git with most versions of TortoiseHg, as I believe they bundle Dulwich. In that case, enabling the extension should be as simple as:
hg clone -u 0.10.x http://foss.heptapod.net/mercurial/hg-git /path/to/repo
And then adding the following to your .hgrc:
[extensions]
hggit = /path/to/repo/hggit
Once TortoiseHg moves to Python 3.x, the default branch of hg-git will work with it again.
EDIT: I was wrong; they don't bundle Dulwich, it seems. On the bug for this, one of the maintainers posted a link to a packaged installer that includes hg-git & Dulwich. The next release, 6.1, should fix this. Please consider testing the installer, and report to the TortoiseHg maintainers whether it works as expected.
EDIT²: Please note that only SSH works with that installer, as they ran into some issues bundling urllib3, which is necessary for HTTP support.
TortoiseHG 6.2
Bundled hg-git works (at least with GitHub), but for now only for https:// repos:
old worked ssh-access failed with complaining about my keys
With the new keypair (still RSA) and PageAnt-x64 (for THG-x64) I got both access-methods in game

How can i install Google Chrome to use with protractor during automation CI run

My organization doesn't have Google Chrome natively installed within the Virtual Machines configured for automation CI and it's not allowed to install Chrome globally on those machines.
We are using protractor for automation of angular apps which goes really well with Google Chrome.
Is it possible to install Google Chrome at runtime for execution locally so that we can have smooth execution on those VM's. If yes what and how can i install chrome.
We are using TeamCity for CI/CD. Please help.
Update 29/12/2019: A suggestion, you containerize your app. Which means you need to include the step of chrome installation on when the image in being built on your VM.
Generally such a step is included in the Dockerfile.
more info on how to write Dockerfile: https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
Within your angular app, to handle any browser's binary installation, I include it in package.json inside the scripts section:
"webdriver-update": "./node_modules/protractor/bin/webdriver-manager update --standalone --versions.standalone=3.8.0 --chrome --versions.chrome=76.0.3809.68",
This has worked for me in maintaining the dependency on the chrome versions.

Is there any workaround for "session deleted because of page crash" Chrome error on Travis CI?

I'm using container-based infrastructure on Travis CI (so I can't use sudo) and I'm trying to run tests using Selenium (Protractor) on the latest Chrome stable. When I try to run the tests, I'm getting this error: session deleted because of page crash and all tests fail.
I found that one of the possible issues might be too small /dev/shm, which seems to be common when running Chrome on docker (https://code.google.com/p/chromium/issues/detail?id=522853). It looks like there are some workarounds for Travis CI, but they all require sudo.
Are there any workarounds for containers on Travis?
Seems like the only workaround at the moment is to use Trusty image (via sudo: required, dist: trusty in .travis.yml file). The Chromium issue mentioned in my question has already been fixed and should land in Chrome 49 (currently Canary), but I'm not sure if it's going to work in docker container anyway.

How do I choose an artifact from Nexus in a Hudson / Jenkins job?

I have a job in Hudson server A which builds an artifact and deploys it to Nexus. I have another job in a completely separate Hudson server B which needs to download the artifact and deploy it. This job is normally run manually, and the person running it needs to indicate which version of the artifact to deploy - they may not always want to deploy the latest version (e.g. to roll back to a previous known good version).
Currently, I achieve this by using a parameterized build, and require the user to pass in the artifact version number; the job then uses the Execute shell build step to run wget on a URL constructed using the parameter. This is error prone.
Ideally I'd like a plugin that lets the user browse the artifact versions in the Nexus repository and pick and choose the one to deploy, but I'm open to other suggestions. A plugin that also handles the download would be nice, but I can live without it as long as I can still get a string that I can use in shell commands.
I've looked through the available Hudson & Jenkins plugins around Maven style artifact repositories, but they all seem more concerned with pushing artifacts into repos rather than getting them back down.
I'm using Hudson's "Copy Artifact" in other jobs, to get artifacts from other Hudson jobs on the same server, but this doesn't work across different Hudson servers, which is why I've turned to Nexus (which we're already using anyway).
Does anyone have any suggestions?
I recommend using rundeck to execute your deployments.
There is a rundeck plugin for Nexus that enables rundeck to display a pull down menu of available versions in Nexus.
There is a rundeck plugin for Jenkins that can be used to invoke deployments using rundeck and kick-off post deployment jobs (like integration testing) inn Jenkins.