squeak-smalltalk / squeak-ci Goto Github PK
View Code? Open in Web Editor NEWBase environment for running Squeak continuous integration tests.
Base environment for running Squeak continuous integration tests.
Pharo's Regex, that is. There's an SS3 library, but I think they moved their repo to SmalltalkHub.
We check for the presence of interpreter and Cog VMs, only building them if their containing directories are missing.
Windows has funny ideas about removing directories, in that FileUtils#rm_dir
doesn't fail if the directory had files open in it and hence deletion couldn't take place.
Sometimes we do deliberately want to overwrite existing VMs.
def run_image_with_cmd(vm_name, arr_of_vm_args, image_name, cmd, timeout = 240)
log(cmd)
base_cmd = "#{vm_name} #{arr_of_vm_args.join(" ")} \"#{SRC}/target/#{image_name}.image\" #{as_relative_path(Pathname.new(cmd))}"
case identify_os
when "windows" then system(base_cmd)
else
log("spawning with timeout #{timeout.to_s} seconds: nice #{base_cmd}")
pid = spawn("nice #{base_cmd}", err: STDERR, out: STDOUT)
future {
sleep(timeout.seconds)
log("Killed command for exceeding allotted time: nice #{base_cmd}.")
Process.kill('KILL', pid)
}
Process.wait(pid)
end
end
Let's try spawn
on Windows too, and just nice
on non-Windows platforms.
vm_args
has return [] if debug?
so that a human can see the image running.
How to meaningfully display the problem?
And make it actually loadable in 4.5
Pharo can do it. We ought to be able to as well.
It doesn't exist yet in the base image, but it should.
Really the ToolSet ought to be a delimited dynamic variable!
We have the load script, and a test script. Because Seaside takes ~15 minutes to build up, it needs to run as a separate job.
I guess we'd want to be able to invoke rake package_test[Seaside]
while keeping rake package_test
doing the normal run-all-the-things tests.
That'll almost certainly require figuring out how to compile libnacl!
For instance if run_image_with_cmd
invokes the kill option, the update_base_image
task must fail.
This will let us not even run the tests.
I'd like to be able to say rake test Metacello
and run just that package's tests (against all three VMs), but still have rake test
mean "run everything".
Because if it's in Ruby, it's one less thing to try and install by hand. Cross platform for free!
Gofer new
smalltalkhubUser: 'dh83' project: 'FileSystemST';
package: 'ConfigurationOfFileSystemST';
load.
(Smalltalk at: #ConfigurationOfFileSystemST) loadDevelopment.
Metadata
Note that these are only on the Linux platform.
It assumes (a) some fixed location for finding the Cog source and (b) that the CogVM job ran on the same machine.
We should probably pull down the artifact from http://build.squeak.org/job/CogVM/lastSuccessfulBuild/artifact/*zip*/archive.zip
Jenkins runs a persistent process. Sometimes this process can run out of PermGen. If we had an upstart config, we could kill the connection from the master, and upstart would quietly restart the slave node process.
Just use Net::HTTP
or something?
I can't believe I didn't already have this!
We now produce a TrunkImage.manifest, containing a list of all the versioned packages in Trunk.
What would be really great is knowing how that manifest has changed. In other words, such a diff would let one know what packages changed between the last build and this, narrowing down the search for the bug-introducing code.
It's sometimes useful to run with a head, even though the primary use case of this repo is to support CI.
It seems it doesn't! The manifest output should say
Package manifest for ${SQUEAK_VERSION}-${UPDATE_NUMBER}:
Blah-fbs.1
:
:
Given a package Foo, we repeatedly generate a specific image with Foo loaded in the image. Instead, we must create this image once, and execute our tests in copies of this image.
Especially, explain how anyone can add stuff.
The Cog VMs support this, but not the Interpreter VM.
Now that it's in Trunk, update-image.st
and friends should only load it if it's not already there.
versions.sh
references the Linux VM location, so builtasticMac.sh
won't ever try to use the cached OS X VM.
Then we can have tests running on a Windows machine, as well as Travis' Linux machines.
The Pharo guys have an HDCoverageReport: http://lists.gforge.inria.fr/pipermail/pharo-project/2011-October/055211.html
This will break CI builds. The output of rake build
up to the point we see the dialog is
$ rake build
C:/Users/frsheara/Documents/git/squeak-ci/Rakefile:17: warning: already initialized constant FU
C:/Users/frsheara/Documents/git/squeak-ci/lib/squeak-ci/build.rb:12: warning: previous definition of FU was here
mkdir -p C:/Users/frsheara/Documents/git/squeak-ci/target
cp SqueakV41.sources SqueakV46.sources SqueakV50.sources HudsonBuildTools.st C:/Users/frsheara/Documents/git/squeak-ci/target
cp -r C:/Users/frsheara/Documents/git/squeak-ci/target/cog.r3427 C:/Users/frsheara/AppData/Local/Temp/d20160125-14896-1cu9qyw
mkdir -p C:/Users/frsheara/Documents/git/squeak-ci/target
cp SqueakV41.sources SqueakV46.sources SqueakV50.sources HudsonBuildTools.st C:/Users/frsheara/Documents/git/squeak-ci/target
rm -rf C:/Users/frsheara/Documents/git/squeak-ci/target/Squeak-4.10.2-2612-src-32
mkdir -p C:/Users/frsheara/Documents/git/squeak-ci/target
mkdir -p C:/Users/frsheara/Documents/git/squeak-ci/target/Squeak4.10.2-2612
mkdir -p C:/Users/frsheara/Documents/git/squeak-ci/target/Squeak4.10.2-2612
mkdir -p C:/Users/frsheara/Documents/git/squeak-ci/target/Squeak4.10.2-2612
mkdir -p C:/Users/frsheara/Documents/git/squeak-ci/target/Squeak4.10.2-2612
mkdir -p C:/Users/frsheara/Documents/git/squeak-ci/target/Squeak4.10.2-2612
mv Squeak4.10.2-2612 C:/Users/frsheara/Documents/git/squeak-ci/target/Squeak-4.10.2-2612-src-32
cp -r C:/Users/frsheara/Documents/git/squeak-ci/target/Squeak-4.10.2-2612-src-32/. C:/Users/frsheara/AppData/Local/Temp/d20160125-14896-1964fi6
cp Squeak4.6.image C:/Users/frsheara/Documents/git/squeak-ci/target/TrunkImage.image
cp Squeak4.6.changes C:/Users/frsheara/Documents/git/squeak-ci/target/TrunkImage.changes
It's something to do with assert_interpreter_compatible_image
.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.