Hi - I converted my project to tonel, and am looking to hook it up to my gitlab pipeline, and for older projects I had a run.st script that did:
Metacello new baseline: 'WillowPagerDuty'; repository: ‘<a href="filetree://../src'" class="">filetree://../src'; load. I get a not found error when I run that, is there a new repo type for tonel eg? Metacello new baseline: 'WillowPagerDuty'; repository: '<a href="tonel://../src" class="">tonel://../src'; load. Or is this the PR Esteban was working on earlier this month so that filetree can support tonel? If so, it would be very good to get this support as it makes it much easier to write generic scripts to run in CI projects without having to reference branch names to build things (as its simply the source in you git directory that you want to build locally ) Tim
|
This should work. You can also use SmalltalkCI instead of doing everything by hand. Peter |
Hmmm - will have to try that again - I seemed to get an error - maybe this is just a Pharo 7 thing?
It had previously been simpler and more reliable to just run a simple gitlab ci pipeline - but yeah maybe I should reconsider that...
|
Administrator
|
Tim Mackinnon wrote
> to just run a simple gitlab ci pipeline Can't you just use `gitlab://` and Iceberg/Metacello integration? IIUC it "just works" for tones, with or without Smalltalk CI (but I haven't ported to tonel yet, so take FWIW) ----- Cheers, Sean -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Cheers,
Sean |
In reply to this post by Tim Mackinnon
Peter - thanks for getting me to retry it - it turns out that tonel:// is correct, and I had misread the error message - which was actually due to me misnaming the baselineOf project suffix.
To your point Sean - if using a CI server - if you use GitHub or GitLab:// prefixes - you need ssh key installed on our server which then becomes a real pain - so sticking to https (and public repos) and any source that is checked it with your project on build - is a big simplification. I’ in the process of weeding out some rogue GitHub:// baselines as they fail and then cause my loading image to bomb out (I suspect Peter has weeded all of this out in SmalltalkCI). I’m forging on - but may take another look at SmalltalkCI - the trouble is, I really don’t like Travis (I find it really hard to use - and never understood why it was successful, and equally Jenkins is a mess). I quite like the model of Gitlab’s one stop shop - and I was interested in simplifying it from what I did for PharoLambda - but its been a bit more painful than I had expected. Tim
|
Administrator
|
Tim Mackinnon wrote
> may take another look at SmalltalkCI - the trouble is, I really don’t like > Travis… I quite like the model of Gitlab’s one stop shop I use SmalltalkCI on Gitlab (https://gitlab.com/SeanDeNigris/gitlab-smalltalk-ci) ----- Cheers, Sean -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Cheers,
Sean |
Hi Sean - thanks for mentioning that - I tried it ages ago and didn’t get on well with it on Travs. But I don’t understand how it works on Gitlab - and the project readme.md seems to assume you understand how its approaching the problem (which possibly has changed over the years).
Looking at your url - how is that running a project that you have in a different repo? Is there some web hook that causes it to then trigger a build cycle? I can see you edited a BaselineOfGitLabCI and added a BabyPhexample - which seems a bit inside out to me - but I’m hanging in there (so do you add other projects in this same file?). I also don’t understand the pipeline model - there seems to be just one pipeline (and gitlab has great pipeline support)? And then - when it all builds successfully - how does it deploy (hence my pipeline question). I’m lost - but curious, as maybe I can save time on what I’m doing (writing more apps vs pissing around with missing infrastructure). Tim
|
In reply to this post by Sean P. DeNigris
I’ve created a new thread on Smalltalk CI - but back to tonel - having got my local project to start reading - its now failing when it then starts processing my BaselineOf and hits my willow dependency - which was initially things like:
spec The trouble being that the use of GitHub:// causes it to barf as it then wants ssh keys and crashes when trying to flip to https automatically. I figured I could just specify 'https://github.com/ba-st/Willow-Boostrap/tree/v8/source’ but this doesn’t work either - as then I get a retry error: Fetched -> BaselineOfPagerDuty-tonel.1 --- <a href="tonel:///builds/macta/WillowPagerDuty/src" class="">tonel:///builds/macta/WillowPagerDuty/src --- <a href="tonel:///builds/macta/WillowPagerDuty/src" class="">tonel:///builds/macta/WillowPagerDuty/src Loaded -> BaselineOfPagerDuty-tonel.1 --- <a href="tonel:///builds/macta/WillowPagerDuty/src" class="">tonel:///builds/macta/WillowPagerDuty/src --- <a href="tonel:///builds/macta/WillowPagerDuty/src" class="">tonel:///builds/macta/WillowPagerDuty/src Loading baseline of BaselineOfPagerDuty...The method Integer>>#asBytesDescription called from ZnUtils class>>#signalProgress:total: has been deprecated. Please use #humanReadableSIByteSize instead ...RETRY->BaselineOfWillowBootstrap ...RETRY->BaselineOfWillowBootstrap ...FAILED->BaselineOfWillowBootstrap'Errors in script loaded from /builds/macta/WillowPagerDuty/build/loadProject.st' Could not resolve: BaselineOfWillowBootstrap [BaselineOfWillowBootstrap] in /builds/macta/WillowPagerDuty/build/pharo-local/package-cache https://github.com/ba-st/Willow-Bootstrap/tree/v8/source MetacelloEnsureFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>>retryingResolvePackageSpecReferences:gofer: Its very weird - and much harder than I was expecting it all to be (hence the renewed interest in Smalltalk CI). Saying this - what I’m trying to do should be dead easy. Tim
|
Hey!
On Tue, May 15, 2018 at 12:46 AM, Tim Mackinnon <[hidden email]> wrote:
Can you share the log of this? I'd like to know why https fails (as it shouldn't!).
|
Also, are you in Pharo6 or 7? |
In reply to this post by Tim Mackinnon
Hi Tim,
It should be relatively straightforward to use smalltalkCI on Gitlab CI. All you have to take care of is to ensure the Linux container has all Pharo dependencies [1] installed correctly. If you append smalltalkCI's `bin` directory to your $PATH, you can simply call `smalltalkci -s Pharo-6.0` in your project's root directory to test against Pharo-6.0. Hope this helps. And if you work out a simple and generic way of using smalltalkCI on Gitlab, please feel free to open a PR against smalltalkCI and contribute a template :) Best, Fabio [1] https://github.com/travis-ci/travis-build/blob/51ebd738f537a82874b03cb964ecabc042e83aac/lib/travis/build/script/smalltalk.rb#L15-L16 On Tue, May 15, 2018 at 12:40 AM Tim Mackinnon <[hidden email]> wrote:
|
In reply to this post by Guillermo Polito
Hi - I’ll extract the log files when I’m at my desk
I can possibly make the pipeline public so you can better see it - and it’s a relatively simple app so maybe it can shed some light (although I’m still not ruling out my own stupidity yet). It’s a Pharo 6.1 64 bit image - download on build, applied to Ubuntu 17.10 (the same happens with 16.04). Tim The initial error is: Starting Load Script... > Configure Load caches... > Loading Projects... Fetched -> BaselineOfPagerDuty-tonel.1 --- tonel:///builds/macta/WillowPagerDuty/src --- tonel:///builds/macta/WillowPagerDuty/src Loaded -> BaselineOfPagerDuty-tonel.1 --- tonel:///builds/macta/WillowPagerDuty/src --- tonel:///builds/macta/WillowPagerDuty/src Loading baseline of BaselineOfPagerDuty... ...RETRY->BaselineOfWillowBootstrap ...RETRY->BaselineOfWillowBootstrap gofer repository error: 'GoferRepositoryError: Could not access https://github.com/github/ba-st/Willow-Bootstrap:v8/source: ZnHttpUnsuccessful: 404 Not Found'...ignoring ...FAILED->BaselineOfWillowBootstrap'Errors in script loaded from /builds/macta/WillowPagerDuty/build/loadProject.st' Could not resolve: BaselineOfWillowBootstrap [BaselineOfWillowBootstrap] in /builds/macta/WillowPagerDuty/build/pharo-local/package-cache https://github.com/github/ba-st/Willow-Bootstrap:v8/source ERROR: 'GoferRepositoryError: Could not access https://github.com/github/ba-st/Willow-Bootstrap:v8/source: ZnHttpUnsuccessful: 404 Not Found' MetacelloEnsureFetchingMCSpecLoader(MetacelloCommonMCSpecLoader)>>retryingResolvePackageSpecReferences:gofer: [ | references nearestReference cachedReference externalReference mcVersion loadedVersionInfos | cachedReference := nil. packageSpec searchCacheRepositoryForPackage: [ "check to see if mcz file is already in cacheRepository" cachedReference := self resolvePackageSpec: packageSpec cachedGofer: self loaderPolicy cacheGofer. (cachedReference ~~ nil and: [ packageSpec getFile ~~ nil ]) ifTrue: [ cachedReference name = packageSpec file ifTrue: [ "exact match between packageSpec file and cache" ^ self scheduleFetchFor: packageSpec cachedReference: cachedReference ] ] ]. references := self retryingResolvePackageSpecReferences: packageSpec gofer: gofer. "look up mcz file" nearestReference := references last asMetacelloCachingResolvedReference. (cachedReference ~~ nil and: [ cachedReference name = nearestReference name ]) ifTrue: [ "latest reference in repository matches cachedReference ... " ^ self Sent from my iPhone > On 15 May 2018, at 06:51, Guillermo Polito <[hidden email]> wrote: > > Also, are you in Pharo6 or 7? |
In reply to this post by fniephaus
Thanks Fabio - it sounds like Sean already has figured something out - but I haven’t fully grok’d how it hangs together. From your description, it sounds like you expect SmalltalkCI to be like a submodule of your project - and you can then invoke it from your normal projects build script? However peeking at what Sean pointed at - it seemed like he expected you to intermingle your project with the SmalltalkCI one - so I’m not really clear on how he uses it.
It sounds like all the right pieces are there - just not quite sure what the concept is - particularly given that Gitlab Pipelines already is a CI with the concept of jobs - just not Smalltalk ones. At its best - how does SmalltalkCI function - I never quite understood the pipeline when checked years ago. Tim
|
In reply to this post by Tim Mackinnon
Hi Guillermo - so here are the actual log files and the .st I’m running with build.sh (its a normal pharo command line execution). Its running on Ubuntu 17.10, with Pharo 6.1 64 bit.
I got Pharo like this: VM_STRATEGY="vmI61"; The error at the top of the log is: LGit_GIT_ERROR: SSL error: error:140E0197:SSL routines:SSL_shutdown:shutdown while in init 15 May 2018 3:01:38.976377 am And a few lines down you see it has translated the github:// url (in the baseline package) to https but then it seems to fail… although is that https translation correct? I have also tried specifying https repos in the baseline myself (but you can’t easily control the baselines it in turn refers to) but that didn’t work either. LGitRepository>>clone:options:to: Receiver: a LGitRepository (<not initialized>) Arguments and temporary variables: cloneOptions: a LGitCloneOptions () aFileReference: File @ pharo-local/iceberg/ba-st/Willow-Bootstrap Receiver's instance variables: handle: @ 16r00000000 repositoryPath: File @ pharo-local/iceberg/ba-st/Willow-Bootstrap isOpen: nil workingDirectory: nil I was successfully doing something like this months ago with PharoLambda - but I suspect if I rerun that pipeline it may also fail like this. Tim
PharoDebug.log (51K) Download Attachment loadProject.st (921 bytes) Download Attachment LoadProject.log (7K) Download Attachment build.sh (1K) Download Attachment BaselineOfPagerDuty.class.st (1K) Download Attachment |
hi Tim,
you cannot use vm “I” (for Itimer) with iceberg. This timer will kill the SSH sockets. you need the “threaded” VM (which is the default, for obvious reasons :P). cheers, Esteban
|
Ah - well that would be one problem then - I was using that to avoid that warning message you get as I didn’t think I had privileges to do what it said - however it seems it would be better to have a proper docker container to run my CI builds in, and so I can probably solve it that way (the iTimer VM was something I picked up from PharoLambda - as you really can’t control that environment at all - but it doesn’t run Iceberg).
I’ll make that correction and try again. Thanks, Tim
|
you can safely ignore that warning in most cases (in fact, I was thinking on removing it and replace for a small log or even nothing).
cheers, Esteban
|
Le 15/05/2018 à 14:45, Esteban Lorenzano a écrit :
> you can safely ignore that warning in most cases (in fact, I was > thinking on removing it and replace for a small log or even nothing). > It would be great! Most of the time it just makes noise in the CI logs :( There is a PR to remove this warning in the VM repo (https://github.com/OpenSmalltalk/opensmalltalk-vm/pull/144) But there is no review. It dates from July 2017. > cheers, > Esteban > > -- Cyril Ferlicot https://ferlicot.fr signature.asc (836 bytes) Download Attachment |
Administrator
|
In reply to this post by EstebanLM
EstebanLM wrote
> you cannot use vm “I” (for Itimer) with iceberg. I was guessing VM as well, or 64 bit, because those were the obvious differences between my setup and yours. The only part I found hard at all on Gitlab was loading other private projects from Gitlab, which require a bit of infrastructure with SSH keys and secret variables (let me know if you ever run into this!). ----- Cheers, Sean -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Cheers,
Sean |
Administrator
|
In reply to this post by Tim Mackinnon
Tim Mackinnon wrote
> But I don’t understand how it works on Gitlab The gitlab-smalltalk-ci project performs three roles: 1. The glue which connects Gitlab and smalltalkCI. As a bonus, it does all the necessary in-container work to setup SSH for private Gitlab projects, so you'd just have to create/enable the deploy key in the Gitlab web UI. 2. A Pharo library to create/modify CI artifacts like configuration files. This let's you write Smalltalk like this `GitLabCIConfiguration new smalltalkImageTemplateFor: 'Pharo-6.1'` instead of being forced to remember and write: ```yaml .pharo61_template: &pharo61 variables: SMALLTALK_IMAGE: "Pharo-6.1" ``` 3. An example to adapt for your own project, since it eats its own dog food and is handling its own CI. Also, note that the initial setup is simplified from smalltalkCI because it uses a Docker image preloaded with all the Pharo dependencies. 1. First, you would create a `.gitlab-ci.yml`. I'm guessing you already know that it is the equivalent to Travis' `.travis.yml`, which is the main hook that the CI system picks up to run whatever you tell it to. If you read it, you will see that it's main job is to install the glue scripts and run the downloaded scripts/build.sh. The bottom ~half is the workaround for matrix builds (for Pharo 6 & 7) in GitlabCI, which are not directly supported. 2. Next, create a `.smalltalk.ston`. This is the main config hook for smalltalkCI. I added some links to the docs in the README. That's really it I think. All this has been tested extensively with real projects, but only on Pharo 6/7 and Ubuntu 32 bit. PRs welcome and feel free to ask more questions! ----- Cheers, Sean -- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html
Cheers,
Sean |
Free forum by Nabble | Edit this page |