On Tue, 29 Oct 2019 at 06:34, Esteban Lorenzano <[email protected]> wrote:
> > On 29 Oct 2019, at 11:24, Sven Van Caekenberghe <[email protected]> wrote: > > Also, I was reading the implementation (hard), and it seemed as if the > only real solution would be to make a new type (scheme), for this case, like > > > > githttps://user1:[email protected]/scm/bla/foo-pharo.git > > And that’s why we use another solution more generic. Otherwise we will > need to add GitHubHTTPS, GitLabHTTPS, etc., etc. > I'm someone using 2FA on many systems (I use Authy for a key generator on my android phone) and I've been using it on GitHub now for years. I am forced to use the SSH approach since there is no viable Iceberg solution with HTTPS (there is actually a work-around with a GitHub application-defined key, but that is just a special password that isn't really 2FA IMO). If there's a redesign of the Iceberg API, it would be good to consider the 2FA dimension, too. Cris > > > > which would then preserve the username/password/host/port and do the > proper thing directly. IIUC, https git URLs are described as the most > common ones. > > > > It might be that there is then still a problem with branches/tags, but > maybe they are not needed. > > > > Sven > > > >> On 29 Oct 2019, at 11:07, Esteban Lorenzano <[email protected]> > wrote: > >> > >> Hi Sven, > >> > >> You are facing two different problems at the same time :) > >> 1) a problem with Metacello api. There is a mismatch between git and > metacello because the apis are not equivalent (specially having iceberg in > the middle). > >> If you want to use HTTPS in metacello you have to explicit you want to > use HTTPS, but you still has to use the GitHub:// identifier. > >> > >> If you execute first: > >> > >> ./pharo build.image eval --save "Iceberg remoteTypeSelector: #httpsUrl” > >> > >> Then your execution: > >> > >> ./pharo build.image metacello install github://svenvc/ztimestamp > BaselineOfZTimestamp > >> > >> Will work without warnings. > >> > >> Now, you have another problem: > >> 2) You cannot use an url as this with iceberg/metacello: > https://deploy:secret@.../scm/xyz/xyz-pharo.git > >> And yes, we could do a parse of it and use it (also solving your > metacello command problem), but this is not easily doable and it would take > time. > >> The usual way of doing this is not using HTTPS but distributing > public/private keys (then you use the regular SSH protocol). > >> But if you still want/need to use HTTPS, then you need to provide your > plaintext credentials. > >> For iceberg, your credentials are stored in your preferences directory, > at credentials.fuel (so you could add them to your CI server, if you have > them). > >> To add them programatically you need to do something like this: > >> > >> ./pharo build.image eval --save "IceCredentialStore current > >> storeCredential: (IcePlaintextCredentials new > >> username: 'esteban'; > >> password: 'secret'; > >> yourself) > >> forHostname: ‘github.com’" > >> > >> Then you full script will be like this: > >> > >> ./pharo build.image eval --save “ > >> Iceberg remoteTypeSelector: #httpsUrl”. > >> IceCredentialStore current > >> storeCredential: (IcePlaintextCredentials new > >> username: 'esteban'; > >> password: 'secret'; > >> yourself) > >> forHostname: 'github.com' > >> “ > >> ./pharo build.image metacello install github://svenvc/ztimestamp > BaselineOfZTimestamp > >> > >> I hope this solves your problem :) > >> > >> Esteban > >> > >> On Mon, Oct 28, 2019 at 11:58 AM Sven Van Caekenberghe <[email protected]> > wrote: > >> I am still at a loss with this issue. > >> > >> When loading from github://svenvc/ztimestamp using Metacello (see > original mail) the code in > MCGitBasedNetworkRepository>>#createIcebergRepositoryWithFallbackFor:url: > clearly switches to using https://github.com/svenvc/ztimestamp.git - I > traced it. > >> > >> So obviously, Pharo 7 is capable of accessing it. > >> > >> However, starting directly with > https://github.com/svenvc/ztimestamp.git I end up in a totally different > place. Why ? > >> > >> This code is so complex... > >> > >>> On 25 Oct 2019, at 14:49, Sven Van Caekenberghe <[email protected]> wrote: > >>> > >>> Hi, > >>> > >>> I asked this before, but I still have trouble with this. > >>> > >>> What I ultimately want is what I used for years now: use the zero > config tools to point to my private repo and install my code and all its > dependencies from a single Metacello config. > >>> > >>> Basically, > >>> > >>> $vm $image config _CONFIG_REPO_ _CONFIG_NAME_ --username=_CONFIG_USER_ > --password=_CONFIG_PASS_ --install=_CONFIG_VERSION_ --group=_CONFIG_GROUP_ > >>> > >>> towards a private server. > >>> > >>> In the new world of git(hub)/tonel/iceberg I am trying the following > (not using the 'config' but the new 'metacello' command line handler): > >>> > >>> $ uname -a > >>> Linux audio359 4.15.0-39-generic #42-Ubuntu SMP Tue Oct 23 15:48:01 > UTC 2018 x86_64 x86_64 x86_64 GNU/Linux > >>> > >>> $ curl get.pharo.org/64/70+vm | bash > >>> % Total % Received % Xferd Average Speed Time Time Time > Current > >>> Dload Upload Total Spent Left > Speed > >>> 100 3054 100 3054 0 0 57622 0 --:--:-- --:--:-- > --:--:-- 57622 > >>> Downloading the latest 70 Image: > >>> http://files.pharo.org/get-files/70/pharo64.zip > >>> Pharo.image > >>> Downloading the latest pharoVM: > >>> http://files.pharo.org/get-files/70/pharo64-linux-stable.zip > >>> pharo-vm/pharo > >>> Creating starter scripts pharo and pharo-ui > >>> > >>> $ ./pharo Pharo.image printVersion > >>> [version] 'Pharo7.0.4' > 'Pharo-7.0.4+build.168.sha.ccd1f6489120f58ddeacb2cac77cd3a0f0dcfbe6 (64 > Bit)' > >>> > >>> $ ./pharo Pharo.image save build > >>> > >>> $ ./pharo build.image metacello install github://svenvc/ztimestamp > BaselineOfZTimestamp > >>> > >>> 3. using HTTPS instead SSH (Just use an url in the form > HTTPS://etc.git). I will try to clone the HTTPS variant. > >>> Fetched -> BaselineOfZTimestamp-CompatibleUserName.1554735117 --- > https://github.com/svenvc/ztimestamp.git[master] --- > https://github.com/svenvc/ztimestamp.git[master] > >>> Loaded -> BaselineOfZTimestamp-CompatibleUserName.1554735117 --- > https://github.com/svenvc/ztimestamp.git[master] --- > https://github.com/svenvc/ztimestamp.git[master] > >>> Loading baseline of BaselineOfZTimestamp... > >>> Fetched -> ZTimestamp-CompatibleUserName.1554735117 --- > https://github.com/svenvc/ztimestamp.git[master] --- > https://github.com/svenvc/ztimestamp.git[master] > >>> Loaded -> ZTimestamp-CompatibleUserName.1554735117 --- > https://github.com/svenvc/ztimestamp.git[master] --- cache > >>> ...finished baseline > >>> > >>> $ ./pharo build.image eval ZTimestamp now > >>> 2019-10-25T12:28:34Z > >>> > >>> So although it gave a warning, it worked fine. > >>> > >>> The warning said, > >>> > >>> using HTTPS instead SSH (Just use an url in the form HTTPS://etc.git). > I will try to clone the HTTPS variant. > >>> > >>> so let's try that after cleaning everything: > >>> > >>> $ rm -rf pharo-local/ build.* > >>> > >>> $ ./pharo Pharo.image save build > >>> > >>> $ ./pharo build.image metacello install > https://github.com/svenvc/ztimestamp.git BaselineOfZTimestamp > >>> > >>> ...RETRY->BaselineOfZTimestamp > >>> ...RETRY->BaselineOfZTimestamp > >>> ...FAILED->BaselineOfZTimestampCould not resolve: BaselineOfZTimestamp > [BaselineOfZTimestamp] in /home/sven/pharo7/pharo-local/package-cache > https://github.com/svenvc/ztimestamp.git > >>> > MetacelloFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>>retryingResolvePackageSpecReferences:gofer: > >>> > >>> WTF ? Why does this not work (I can perfectly git clone that URL) ? > >>> > >>> Of course, this would just be the first step, eventually I want to use > my own private server with a URL like > >>> > >>> https://deploy:[email protected]/scm/xyz/xyz-pharo.git > >>> > >>> How do you build/deploy non-public production code using the command > line ? > >>> > >>> Help would be much appreciated. > >>> > >>> Sven > >>> > >> > >> > > > > > > > -- Christopher Fuhrman, P.Eng., PhD *Professeur au Département de génie logiciel et des technologies de l'informationÉTS (École de technologie supérieure)*
