News for hackers. Stuff that matters.
Re:Travis CI's new pricing plan threw a wrench in my open so... by sounds on Thursday November 05, 2020 @07:43PM (#25003724)
Hey Jeff,

This is hitting me hard, too. I hope this is the right moment for me to pipe up and say this:

I always just do the minimum with these CI integrations to get my shell script to run. I am grateful for the free minutes they offer open source projects - but any of the deeper integrations, the advanced automation?

No, thanks.

It's not like the other developers who use what I write have any more motivation than I do. No one wants to learn the custom setup steps, not even for the "biggest" of the bunch. (Is that still Github? Who knows? I don't.)

Oh, and if or when I migrate away from a CI system, like right now... Good thing I just kept it simple, you know?

Even for builds that target Windows, I just run a shell script.

I get it that Node and Rust builds really benefit from the advanced features. Anyone care to comment - is it as portable as a shell script?

Re:Travis CI's new pricing plan threw a wrench in my open so... by monkeybutton on Thursday November 05, 2020 @08:05PM (#25003852)
>do the minimum with these CI integrations to get my shell script to run

This. 100%. Where I'm working is migrating from Bamboo to Jenkins. For my team the new process is just calling "./build-test $params" while others are stuck re-implementing various stages, tasks and blah blah blah. Also an added bonus to this is having the full history of changes to the CI/CD process tracked in git.

Re:Travis CI's new pricing plan threw a wrench in my open so... by InsaneOstrich on Thursday November 05, 2020 @10:38PM (#25004639)
Are you moving to Jenkins because of the recent Atlassian license changes?
Re:Travis CI's new pricing plan threw a wrench in my open so... by monkeybutton on Friday November 06, 2020 @10:18AM (#25008181)
Not entirely but I think it was the straw that broke the camel's back. Apparently our journey to the cloud will have to wait.
Re:Travis CI's new pricing plan threw a wrench in my open so... by InsaneOstrich on Friday November 06, 2020 @12:59PM (#25009658)
I think there will still be a on premise version of Bamboo going forward, but all the license changes have made my company consider the possibility of moving from Bamboo to something else. That's kind of a shame, because Bamboo works really well for us.
Re:Travis CI's new pricing plan threw a wrench in my open so... by est31 on Thursday November 05, 2020 @08:36PM (#25004003)
> while others are stuck re-implementing various stages, tasks and blah blah blah. Also an added bonus to this is having the full history of changes to the CI/CD process tracked in git.

Can't those stages, tasks, etc. be specified in the CI specific config files of the repository? Specifying them via an UI seems horrible to me. At least Github actions is all file-specified (except for secrets).

Re:Travis CI's new pricing plan threw a wrench in my open so... by manigandham on Thursday November 05, 2020 @08:46PM (#25004065)
It still requires conversion of config files and formats vs a script that is the same everywhere.
Re:Travis CI's new pricing plan threw a wrench in my open so... by est31 on Thursday November 05, 2020 @08:59PM (#25004146)
Yes, that's a valid point, and definitely a disadvantage. I was referring to the point that it's not tracked in git.
Re:Travis CI's new pricing plan threw a wrench in my open so... by merb on Friday November 06, 2020 @03:32PM (#25010861)
btw. even gitlab does that with their autodevops, besides that they create gitlab-runner:

https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitla... https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitla... https://gitlab.com/gitlab-org/cluster-integration/auto-deplo...

I found these fascinating, I mean they still have lots of things in their ci file, but basically the have tons of shell scripts that would work without their gitlab-runner.

Not affiliated with gitlab I just tried to figure out how some of their stuff works to have the same k8s integration than their autodevops offers.

Re:Travis CI's new pricing plan threw a wrench in my open so... by redis_mlc on Thursday November 05, 2020 @08:32PM (#25003984)
I call mine make.sh.

Now get off my lawn!

Re:Travis CI's new pricing plan threw a wrench in my open so... by monkeybutton on Thursday November 05, 2020 @08:40PM (#25004032)
Hey! I started with C projects and make scripts and I long for the simplicity of those days! Obtuse web front ends, bunches of build server pools segregated by random capabilities, job queues clogged by competing developer teams and on and on is no fun.
Re:Travis CI's new pricing plan threw a wrench in my open so... by saurik on Thursday November 05, 2020 @09:55PM (#25004440)
I wouldn't want something called "make.sh" to install tooling on the computer, though, and that is an important step of CI stuff.
Re:Travis CI's new pricing plan threw a wrench in my open so... by aprdm on Friday November 06, 2020 @01:17AM (#25005394)
Run it in a docker container so that it does the same in your computer and in the CI worker.

make prepare

make build

make test

make release

Working the same waylocally and in jenkins makes things very easy.

What it does is up to the team but make prepare usually pulls some docker image and install dependencies, make build builds something inside the docker image, make test runs test inside it and make release publishes the docker img

Re:Travis CI's new pricing plan threw a wrench in my open so... by laumars on Friday November 06, 2020 @02:18AM (#25005702)
Or use a CI/CD tool that natively supports Docker, like Concourse.

Added bonus is that pipelines are defined in YAML rather than web GUI so you can version control the pipelines themselves and not just any build or test suites.

Re:Travis CI's new pricing plan threw a wrench in my open so... by aprdm on Friday November 06, 2020 @03:00AM (#25005900)
Jenkins pipelines are written in Groovy and you do not need to use the web ui, everything is exposed via its API (i.e: new job creation).

I have heard good things about Concourse, want to give it a try in the future!

Re:Travis CI's new pricing plan threw a wrench in my open so... by laumars on Friday November 06, 2020 @04:02AM (#25006170)
> Jenkins pipelines are written in Groovy and you do not need to use the web ui, everything is exposed via its API (i.e: new job creation).

There's several ways you can codify Jenkins pipelines, Groovy being just one of them. But ultimately it's secondary to the main design of Jenkins. I'm not taking anything away from Jenkins as a solution - it has been invaluable over the years. But the way we write, test and deploy software has changed since Jenkins rose in popularity and as such we need to rely on different workflows that utilise different tooling. While Jenkins can be used in that way, I'd sooner use something which was primarily designed to be configured via code and used docker by default rather than something that requires enforcement to follow those best practices. That doesn't necessarily mean Concourse, there's Travis, Circle CI, AWS CodeBuild and a bunch of others that all default to that kind of workflow too, but it does mean I'm unlikely to ever advocate Jenkins again in future jobs.

Re:Travis CI's new pricing plan threw a wrench in my open so... by aprdm on Friday November 06, 2020 @12:28PM (#25009329)
While you’re not wrong I do use jenkins inside docker and use ansible to configure it, it is a bit different than other more modern tools but works fine.

I have yet to see other tools be as flexible (perforce , git, legacy tools, docker, 100s of workers across datacenters etc.)

Re:Travis CI's new pricing plan threw a wrench in my open so... by laumars on Saturday November 07, 2020 @03:57AM (#25013926)
I’m yet to see a CI/CD tool that can’t do all of that. What you’re describing there is the bare minimum I’d expect any CI/CD solution to do. I guess there might be some hobby platforms for indie devs but they’re not really the use case we are discussing when talking about Jenkins and Concourse.
Re:Travis CI's new pricing plan threw a wrench in my open so... by XorNot on Friday November 06, 2020 @06:14AM (#25006786)
I've bounced off concourse several times now. The promise is great, but the setup is absurdly complex and at the end I'm stuck with CI in Docker containers (I usually want 1 or more VMs)
Re:Travis CI's new pricing plan threw a wrench in my open so... by laumars on Friday November 06, 2020 @06:51AM (#25006963)
Concourse can run as many VMs as you want. The point is those jobs get pushed to a farm of workers (typically VMs) and then docker is used so you have an ephemeral and repeatable build environment. It is absurdly complex to set up though. I feel there is a gap in the market for a Concourse-like solution but simplified immensely.
Re:Travis CI's new pricing plan threw a wrench in my open so... by geerlingguy on Thursday November 05, 2020 @08:48PM (#25004078)
Makefiles are the gold standard there, warts and all.

But in every case, unless you encode a whole plethora of hacks in your golden build script, you still need minimal environment setup, like Python + Docker + [insert library here].

Most of my Travis files are only 10-20 lines long, but I work in a lot of different types of environments, so it's not always as easy as "three lines of bash and a docker run command".

Plus I have a number of legacy projects which did use some of Travis' more exotic features, and those will take longer. Not just for myself, but I'm thinking of tons of smaller OSS libraries and projects that are minimally maintained yet have a large footprint under more popular and maintained software!

Re:Travis CI's new pricing plan threw a wrench in my open so... by sounds on Friday November 06, 2020 @10:14AM (#25008144)
I'd be interested to have a deeper discussion with you about Makefiles, sometime.

We've actually migrated all our projects off Makefiles. Developers hate having to live within the constraints.

Re:Travis CI's new pricing plan threw a wrench in my open so... by hinkley on Friday November 06, 2020 @07:04AM (#25007015)
You want coworkers and collaborators to have such an easy time validating build failures locally that only an idiot or an asshole won’t do anything about a problem they may have caused.

Developers hate being thought of as idiots, and being an asshole is a problem you can take to HR. So for the people who don’t pitch in on general principle, straightforward processes help bring them around. And in general that means not leaning on clever CI features, and instead leaning hard on the CLI tools your ecosystem supports.

There are exceptions to every rule of course. Features around scheduling have little to no impact on what gets built and how, just when and why. Similarly, analytics have second order effects on how and when, but once a problem is discovered you can mostly ignore them for a while. Integration with external tools and services on the other hand, should always be questioned. Do I have another way to do this mostly outside of the CI system?

Re:Travis CI's new pricing plan threw a wrench in my open so... by steveklabnik on Thursday November 05, 2020 @08:02PM (#25003830)
I don’t think either of them really “benefit from the advanced features” any more than any other language. Also, both have builds that are generally more cross platform than a shell script, given that they’re native on all platforms, and shell is not.
Re:Travis CI's new pricing plan threw a wrench in my open so... by DrBazza on Friday November 06, 2020 @05:23AM (#25006564)
> I always just do the minimum with these CI integrations to get my shell script to run.

Absolutely. Moving CI systems always shows up where your build logic has leaked into the CI system, rather than staying in your repo.

If you can't identically build your code from the command line and from the CI system, you're going to have problems.

Re:Travis CI's new pricing plan threw a wrench in my open so... by curryhoward on Thursday November 05, 2020 @10:48PM (#25004704)
Small plug: consider using Toast [1] to define your CI jobs. It's essentially Make + Docker. You define whatever targets you want (build, test, lint, etc.) and the dependencies between them in a YAML file, and Toast runs them in Docker containers. You can run your jobs on any machine that has Docker—including CI systems like Travis and GitHub Actions. You aren't locked into any CI system, and you can also run your jobs locally.

[1] https://github.com/stepchowfun/toast

Re:Travis CI's new pricing plan threw a wrench in my open so... by __s on Friday November 06, 2020 @07:20AM (#25007105)
My .travis.yml for a node project is pretty simple: https://github.com/serprex/openEtG/blob/542c645c53dba36d6653...

Python's easy too: https://github.com/serprex/aespython/blob/c3256b656308af8119...

A Rust repo I contribute to has a .travis.yml not created by me, but still pretty simple: https://github.com/dpc/hex2d-rs/blob/master/.travis.yml

edit: updated node project to Github Actions https://github.com/serprex/openEtG/commit/4196992bb23ce43f34...

Re:Travis CI's new pricing plan threw a wrench in my open so... by qppo on Friday November 06, 2020 @12:09AM (#25005086)
Once you start caring about cross-platform, incremental, distributed builds with a bunch of people committing to a monorepo those advanced features start becoming attractive. Shell scripts handle the 'run this build/test task' but not 'pull these artifacts from another set of tasks, run this task to produce a bunch more artifacts, cache them for later.'

In these scenarios the lines between build system, package manager, and task runner all become pretty blurred. Haven't found an all in one solution that I would call "portable" yet.

Re:Travis CI's new pricing plan threw a wrench in my open so... by emptysea on Friday November 06, 2020 @12:22AM (#25005146)
Sounds like your describing what I like to call a fancy build system

Something like Bazel[0], Buck[1] Pants[2], etc. One of their main features is robust caching of build artifacts, which is helpful for larger projects. But they require some major investment compared to your typical `scripts/build.sh`.

[0]: https://bazel.build [1]: https://buck.build [2]: https://www.pantsbuild.org

Re:Travis CI's new pricing plan threw a wrench in my open so... by brabel on Friday November 06, 2020 @01:41AM (#25005514)
Gradle can also do everything imaginable, we've managed to get rid of basically all our horrible bash scripts and wrote most build stuff using Gradle API and using a proper programming language (put actual code in Gradle's buildSrc/, only configure it in build.gradle, and you've got a extremely powerful build).
Re:Travis CI's new pricing plan threw a wrench in my open so... by hinkley on Friday November 06, 2020 @11:17AM (#25008719)
Shebangs are also your friend, if your primary language can be used that way.

The cons of that solution are that there’s a tendency to make them ornate, and the trap of circular dependencies. Reusing an internal library in your build scripts, you have it building itself which can get out of hand quickly.

Re:Travis CI's new pricing plan threw a wrench in my open so... by moonbug on Friday November 06, 2020 @04:42AM (#25006379)
sweet summer child.
Re:Travis CI's new pricing plan threw a wrench in my open so... by qppo on Friday November 06, 2020 @01:04AM (#25005328)
I have a lot of ideas (or rather, one idea) about how to fix my CI problems and "fancy build system" is pretty apt. Bazel is the closest thing I've seen to what I want.