?

Log in

ShipIt - brad's life [entries|archive|friends|userinfo]
Brad Fitzpatrick

[ website | bradfitz.com ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

ShipIt [Apr. 16th, 2007|08:55 am]
Brad Fitzpatrick
[Tags|, ]

I released the first working version of ShipIt last night.

Actually, ShipIt released itself. Read about it.

One will note that it's tagged, uploaded, has no omissions in its MANIFEST, ChangeLog, etc. ShipIt wouldn't let me release it without double-checking a few dozen things.

I'm not sure I'd recommend using this yet for your projects, as I'm not even using it yet for anything besides ShipIt, but I will be soon. Like, probably later today.... I've got a whole bunch of patches in my inbox in addition to a bunch of projects with committed but unreleased changes.

Patches welcome, if you find yourself using it! But mostly I made it for me, to get my other stuff out quicker.
LinkReply

Comments:
[User Picture]From: morallybass
2007-04-16 06:12 pm (UTC)
I just met Jared a month ago and I'm deep in the book. Seems like a lot of interesting things to say. I have much more respect for the pragmatic approach. Trying to implement some of the practices here for our work, especially when it comes to The List and better project scheduling (having wonderful CI and unit testing here). I'll have to check this out.
(Reply) (Thread)
[User Picture]From: brad
2007-04-16 10:13 pm (UTC)
Who's Jared? I'm confused. :)
(Reply) (Parent) (Thread)
[User Picture]From: morallybass
2007-04-16 11:54 pm (UTC)
Jared Richardson? Who wrote the book Ship It? Whose development practices I assume this software implements based on the brief description I read?

If that is not the case, this is a monumentally weird coincidence.
(Reply) (Parent) (Thread)
[User Picture]From: brad
2007-04-16 11:57 pm (UTC)
Nope, had never heard of him or the book.

We just always joke around at work and say "Ship it!" for everything, so I used that name.
(Reply) (Parent) (Thread)
[User Picture]From: morallybass
2007-04-17 12:02 am (UTC)
OK. That is officially a really weird coincidence.

Ship It
(Reply) (Parent) (Thread)
[User Picture]From: scosol
2007-04-16 08:50 pm (UTC)
that seems really cool- it's definitely my most hated part of things-
previously i'd done all this shit by hand-

maybe i'm clueless as to the cpan webnav, but i couldn't find a way to see what needs to go in the conf file?
(Reply) (Thread)
[User Picture]From: brad
2007-04-16 08:53 pm (UTC)
Run shipit in a project directory and it'll help you, writing your template .shipit file you can then edit.

Sorry, some docs still lacking.
(Reply) (Parent) (Thread)
[User Picture]From: mart
2007-04-17 06:51 am (UTC)

Next project: DocumentIt. ;)

(Reply) (Parent) (Thread)
[User Picture]From: brad
2007-04-17 06:52 am (UTC)
Naah, just a ShipIt::Step::DocCheck, which just uses Test::POD or whatever... one of the billion doc checkers that already exists.
(Reply) (Parent) (Thread)
[User Picture]From: mart
2007-04-17 07:38 am (UTC)

I was thinking along the lines of some plugin for Visual Studio that one of my co-workers had. It'd look at the method names and parameter names and guess some documentation for you, so a method name like getDisplayName would get documented as “Gets the display name”. The docs it generates are completely useless and redundant, but at least you can feel accomplished having documentation for every member!

No idea how you'd do such a think for perl, though.

(Reply) (Parent) (Thread)
[User Picture]From: ydna
2007-04-16 09:34 pm (UTC)
I made a wheel that automates some of my hell for one particular project (work), but it is not round. I will have to look more closely at this wheel you have wrought.
(Reply) (Thread)
[User Picture]From: brad
2007-04-16 10:13 pm (UTC)
Cool, let me know what you think.
(Reply) (Parent) (Thread)
(Deleted comment)
[User Picture]From: brad
2007-04-16 09:47 pm (UTC)
If you'd like to write Step subclasses for GPG signing and Freshmeat.net pinging/uploading, I'd happily include them!
(Reply) (Parent) (Thread)
[User Picture]From: gaal
2007-04-17 04:28 am (UTC)
For Perl projects that use Module::Build (or Module::Install, which I usually use because it lets me MIT-license the code), you add a "sign" directive in the build file and signing is taken care of.
(Reply) (Parent) (Thread)
[User Picture]From: brad
2007-04-17 06:16 am (UTC)
In that case, ShipIt needs no extra steps/config, unless you want to also upload/etc the signature file.
(Reply) (Parent) (Thread)
(Deleted comment)
(Deleted comment)
(Deleted comment)
[User Picture]From: brad
2007-04-17 04:13 am (UTC)
Run it on ActiveState's Perl?
(Reply) (Parent) (Thread)
(Deleted comment)
[User Picture]From: brad
2007-04-17 06:15 am (UTC)
ActiveState's Perl runtime is free. There's no time-limited aspect to it.

Further, nothing in ShipIt should depend on Unix-isms. Maybe I let some slip (most likely), in the Perl Step subclasses, but for your C#-ish Step subclasses, there'd be no need... nothing in the core should be Unix-specific.
(Reply) (Parent) (Thread)
[User Picture]From: bulknews
2007-04-17 01:07 am (UTC)
I like this idea! When I wanted to automate the process of Plagger release management, I first looked at Module::Release on CPAN but the functionality was sort of limited and the object model looked weird, so ended up with a custom script.

Idea: make the release process pluggable so you can optionally announce the release to mailing list, blog, freshmeat or Twitter.
(Reply) (Thread)
[User Picture]From: brad
2007-04-17 01:26 am (UTC)
It's pluggable already.
(Reply) (Parent) (Thread)
[User Picture]From: bulknews
2007-04-17 06:58 am (UTC)
From the class structure I found it so, but was not sure how to actually "plug" it. I just checked out svn repository and will take a look at it on the plane (NRT -> SFO) in a few hours ...
(Reply) (Parent) (Thread)
[User Picture]From: brad
2007-04-17 07:11 am (UTC)
Well, it's pluggable in that you can write your own Step subclasses, and they're dynamically loaded.

In ShipIt's own .shipit config file:
steps = FindVersion, ChangeVersion, CheckChangeLog, DistTest, Commit, Tag, MakeDist, UploadCPAN
svn.tagpattern = ShipIt-%v
CheckChangeLog.files = ChangeLog


Where those steps are just shorthands for:

ShipIt::Step::FindVersion,
...

So if those are in your path, they're loaded, instantiated, and ->run.

If you want something more, let me know. I'm sure as I push it harder, I'll extend it more, but so far today I've done releases of 11 projects without needing to tweak anything much.
(Reply) (Parent) (Thread)