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)*

Reply via email to