Huge UK singer 'set for new Netflix film after battle with demons saw shock exit from the music industry' as rumours stir about a 2025 comeback
Five-star Miami hotel sued for staff member's disgusting act on guest while she was in the shower
Basildon home closed by council after 'reign of terror' on neighbours
Teenagers jailed for firework attack that killed elderly widower
Trump slaps Biden over Iran and denies U.S. nuclear deal would allow country to enrich uranium
Was this the moment Harry and Meghan realised they were no longer part of the Royal Family A-list?
The Milky Way Might Not Crash Into the Andromeda Galaxy After All
Read more of this story at Slashdot.
Jamie Foxx reveals exactly how he feels about Diddy amid rapper's sex trafficking trial
Mick Jagger, Leonardo DiCaprio and Madonna are dragged into Diddy trial as the case enters its fourth week
Woman causes outrage over bizarre method for frying an egg which she 'learnt from an Italian grandmother'
Regulator sues product comparison site alleged to only compare products on which it earned commission
Australia’s Securities & Investments Commission has sued a product comparison website that it alleges only considered products from a related company.…
Taylor Swift splashes out eye-watering sum on revenge look to dine with BFF Selena Gomez after buying masters
The man behind one of the most audacious military operations ever: RICHARD PENDLEBURY reveals the sensational inside story of Operation Spider's Web
Erin Patterson mushroom murder trial LIVE updates: Patterson accepts there were death cap mushrooms in the fatal beef wellington lunch
David Hasselhoff's ex Pamela Bach's coroner's report reveals what drugs were in her system before shock suicide at 62
Putin knows a nuclear revenge attack will force Ukraine's surrender. These are the four ways he'd strike... and we're powerless to stop this holocaust: COL RICHARD KEMP's chilling warning
CodeSOD: Continuous Installation
A recent code-review on a new build pipeline got Sandra's attention (previously). The normally responsible and reliable developer responsible for the commit included this in their Jenkinsfile:
sh ''' if ! command -v yamllint &> /dev/null; then if command -v apt-get &> /dev/null; then apt-get update && apt-get install -y yamllint elif command -v apk &> /dev/null; then apk add --no-cache yamllint elif command -v pip3 &> /dev/null; then pip3 install --break-system-packages yamllint fi fi find . -name '*.yaml' -exec yamllint {} \\; || true find . -name '*.yml' -exec yamllint {} \\; || true '''So the goal of this script is to check to see if the yamllint command is available. If it isn't, we check if apt-get is available, and if it is, we use that to install yamllint. Failing that, we try apk, Alpine's package manager, and failing that we use pip3 to install it out of PyPI. Then we run it against any YAML files in the repo.
There are a few problems with this approach.
The first, Sandra notes, is that they don't use Alpine Linux, and thus there's no reason to try apk. The second is that this particular repository contains no Python components and thus pip is not available in the CI environment. Third, this CI job runs inside of a Docker image which already has yamllint installed.
Now, you'd think the developer responsible would have known this, given that this very merge request also included the definition of the Dockerfile for this environment. They'd already installed yamllint in the image.
Sandra writes:
This kind of sloppiness is also wildly out of character for him, to the point where my first thought was that it was AI-generated - especially since this was far from the only WTF in the submitted Jenkinsfile. Thankfully, it didn't pass code review and was sent back for intensive rework.
Finally, while the reality is that we'll always need to resolve some dependencies at build time, things like "tooling" and "linters" really belong in the definition of the build environment, not resolved at build time.