msys2 ssh: invalid key format (under Github CI only) - github-actions

I am cloning repoB within GitHub CI workflow of repoA, using deployment key of repoB (stored in repoA). I understand this might not be a good practice, no need to comment on that (thanks).
The workflow tests this procedure natively on ubuntu-20.04 and using MSYS2 on windows-latest. It works on Ubuntu, I can run the commands manually on regular MSYS2 installation, but it fails on GitHub CI. The CI log has all the details, the essential command being
git -c core.sshCommand='ssh -vvv -i repoB_deployment_key -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' clone -b main git#github.com:eudoxos/repoB.git repoB
The failure under Windows is Load key "repoB_deployment_key": invalid format and I am not able to find out what's wrong. I tried changing permissions for the private key (chmod 600), adding the -o UserKnownHostsFile=/dev/null and -o StrictHostKeyChecking=no, running the key through unix2dos, adding extra trailing newline — nothing helped.
Again, the same command works under Ubuntu and under MSYS2 on desktop Windows.
The repos are publicly accessible fro reading; you are welcome to open a PR to the repoA repository; a PR should trigger the CI run.

Running the key through dos2unix (not unix2dos) fixed the issue. I will file that as an issue with msys2, as this should be documented.

Try in your GitHub workflow to display the key first, in order to visually check its content and its format (as seen here)
Check also which SSH you used when creating the key, the c:\Program Files\OpenSSH-Win64 one, or the one with Git for Windows (c:\Program Files\git\usr\bin\ssh.exe).

Related

How to make a HTML build from raylib

I am a beginner programmer and I was wondering how I would make an HTML build from raylib. I tried looking at the GitHub https://github.com/raysan5/raylib/wiki/Working-for-Web-(HTML5) I couldn't understand it. would you be able to write a simple step-by-step tutorial for me. please
For the very beginning you have to install emscripten SDK. As stated at the site "Emscripten is a complete compiler toolchain to WebAssembly, using LLVM, with a special focus on speed, size, and the Web platform."
Installation steps are prety easy:
git clone https://github.com/emscripten-core/emsdk.git
cd emsdk
git pull
./emsdk install latest
./emsdk activate latest
source ./emsdk_env.sh
After this steps you will have emscripten installed into the directory you've cloned it.
Then, you need to compile raylib itself to be usable in Web:
Go to the raylib/src directory and open Makefile, find where EMSDK_PATH variable is being defined and edit it accordingly to your setup. If you downloaded emscripten into /home/user/emsdk directory then put it in there:
EMSDK_PATH ?= /home/user/emsdk
Fix PYTHON_PATH definition as well.
then launch execute make:
make -e PLATFORM=PLATFORM_WEB -B
Notice -e option. That option allows to propagate and override environment variables to makefile.
Generated libraylib.a is placed in raylib\src\libraylib.a directory.
After that you can cd into raylib/examples/, fix Makefile as described above and launch make -e PLATFORM=PLATFORM_WEB -B again.
After that you would be able to start python3 -m http.server in that directory, navigate to http://0.0.0.0:8000/ in your browser and see examples.

"mercurial-server: access denied" using ssh style URL

I'm trying to user mercurial-server on a Raspberry Pi (conveniently at my desk before I ask the sysadmins to install on Ubuntu server). The Pi is running Raspbian Buster (recent update/upgrade routine). The ultimate goal is a set of repos for students such that they can't peek at each others' code, but I can clone any student's work for grading.
I have a small Mercurial repo testproject in my home directory. My id_rsa.pub key is in ~hg/.ssh/authorized_keys after running the Mercurial server refresh-auth script. In the log files I can see that my public key exchange worked. Everything in /var/lib/mercurial-server/ seems to be owned hg:hg, and the permissions look reasonable. I'm running from localhost to localhost so it's the same version of hg that's running at both ends. I can sudo -u hg hg init louis/testproject in hg's home directory and it creates the repo no problem (I deleted it before retrying from ssh).
$ cd testproject
$ hg clone -v --debug . ssh://hg#localhost/louis/testproject
What I get is:
running ssh 'hg#localhost' 'hg init louis/testproject'
mercurial-server: access denied
abort: could not create remote repo!
I also tried from Windows 10 (x64) with TortoiseHG. It starts working then just stalls, needing the Task Manager to kill the TortoiseHG workbench. I stopped trying that to remove complexity.
I'm hoping the problem is not the Pi, but I suppose I can always get a DO droplet running Ubuntu.
As always, thanks in advance.
Oh never mind... The access.conf file was incorrect.

Signature verification failed when installing MySQL 5.7.29 on Suse Linux Leap 15.1

I want to install MySQL community edition 5.7.29 on OpenSuse Linux leap 15.1 as following:
Download the file: mysql-5.7.29-1.sles12.x86_64.rpm-bundle.tar;
untar the file then get 8 files
>mysql-community-client-5.7.29-1.sles12.x86_64.rpm
>mysql-community-common-5.7.29-1.sles12.x86_64.rpm
>mysql-community-devel-5.7.29-1.sles12.x86_64.rpm
>mysql-community-embedded-5.7.29-1.sles12.x86_64.rpm
>mysql-community-embedded-devel-5.7.29-1.sles12.x86_64.rpm
>mysql-community-libs-5.7.29-1.sles12.x86_64.rpm
>mysql-community-server-5.7.29-1.sles12.x86_64.rpm
>mysql-community-test-5.7.29-1.sles12.x86_64.rpm
install the 4 files rpm using the command:
>sudo zypper install mysql-community-{server,client,common,libs}-*
Then the error message shows as below:
>mysql-community-common-5.7.29-1.sles12.x86_64.rpm:
Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
>Looking for gpg key ID 5072E1F5 in cache /var/cache/zypp/pubkeys.
Repository Plain RPM files cache does not define additional
'gpgkey=' URLs.
mysql-community-common-5.7.29-1.sles12.x86_64 (Plain RPM files
cache): Signature verification failed [4-Signatures public key is
not available]
>Abort, retry, ignore? [a/r/i] (a):
Any response will be appreciated.
Just write i to bypass this issue and successfully complete installation.
The issue because by default OpenSUSE use downloads.opensuse.org repository that seems to use proxy to nearest server mirror, but the problem is that it seems some mirrors does not update something on his servers so you found messages like "Signature verification failed".
You can try several solutions:
Use some VPN service to change your IP location to find a chance that download.opensuse.org will redirect you on some good mirror.
Change "download.opensuse.org" domain in the repo configuration in the /etc/repo.d (or /etc/zypp/repo.d) to some other server from the list: https://mirrors.opensuse.org/list/15.0.html and put it into the repository files (/etc/repo.d/* or /etc/zypp/*), e.g. http://nrt.edge.kernel.org/opensuse (instead of http://download.opensuse.org).
Also you can change source server even in the OpenSUSE installation mode while use graphical install. For that you should cancel graphical install and when text mode menu opened, in the "Expert mode" you can edit configuration from the console. In the console you can't use "vi" so use "sed" command to change the file contents.
Scan configs:
grep "downloads.opensuse.org" -r /etc
Change content for every file:
sed -i s/downloads.opensuse.org/nrt.edge.kernel.org\/opensuse/g /etc/products.d/openSUSE.prod
...

Remove older Hyperledger-sawtooth or pull latest repo and rerun build_all?

I had previously brought down 0.8 and want to use new version.
Is it ok to update local repo and 'build_all' or must I remove all the older docker images first?
This may be brute force, but this is what I ended up doing.
Caution, the docker command will take out all images so if you want to
preserve some of them you may want a more selective approach.
Sawtooth platform
Remove all docker images using this command docker rmi -f $(docker images -a -q)
Bring down the latest sawtooth compose file sawtooth-default.yaml
Execute compose docker-compose -f sawtooth-default.yaml up
Sawtooth repo development
Clone the latest repository
Go to the root directory of the repo cd ~\sawtooth-core
At a minimum do bin\build_all -l python
I am using java so I do a bin\build_all -l java as well
Access to individual CLI and dev languages tested out 100% as per the Hyperledger Sawtooth documentation

Installing and Configuring Mercurial on Jenkins application -OpenShift

Any hints on how doing this? I tried with the auto-install from a downloaded zip from this here, extracted here: OPENSHIFT_DATA_DIR/hg and executable location here: OPENSHIFT_DATA_DIR/jenkins/data/tools/Mercurial/mercurial-2.2.1/bin/hg
I'm doing something wrong for sure, I'm not Linux saavy. Jenkins says is unable to find mercurial executable.
Any help is more than welcomed.
Here's the answer from here:
Thanks for the email discussion.
Mercurial includes a README which explains a couple of modes of execution:
Basic install:
$ make # see install targets
$ make install # do a system-wide install
$ hg debuginstall # sanity-check setup
$ hg # see help
Running without installing:
$ make local # build for inplace usage
$ ./hg --version # should show the latest version
"make install" will not work as it attempts to do a system-wide install. The user on the gears will not have access to write to system files.
"make install-home" will not work either.
"make local" works and will install it in cwd such that running the following will should work just fine:
./hg --version
Mercurial Distributed SCM (version 2.2.1)
(see http://mercurial.selenic.com for more information)