Computer
Microsoft Cuts Hundreds of Jobs After Firing 6,000 in May
Read more of this story at Slashdot.
T-Mobile Launches Fiber Internet Service in the US With a Five-Year Price Lock
Read more of this story at Slashdot.
Meta's Going To Revive an Old Nuclear Power Plant
Read more of this story at Slashdot.
The Quietly Booming Business of Making Animals Live Forever
Read more of this story at Slashdot.
More Office Space Being Removed Than Added For First Time in At Least 25 Years
Read more of this story at Slashdot.
Ukraine's Massive Drone Attack Was Powered by Open Source Software
Read more of this story at Slashdot.
Ford Mustang Eleanor From Gone In 60 Seconds Can't Be Copyrighted
Read more of this story at Slashdot.
Wild-Animal Markets Pose Rising Pandemic Threat
Read more of this story at Slashdot.
VMware Drops the Lowest Tier of Its Partner Program, Except In Europe
Read more of this story at Slashdot.
Trump Wants $1 Billion For Private-Sector-Led Mars Exploration
Read more of this story at Slashdot.
The Milky Way Might Not Crash Into the Andromeda Galaxy After All
Read more of this story at Slashdot.
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.
[Advertisement] ProGet’s got you covered with security and access controls on your NuGet feeds. Learn more.Younger Generations Less Likely To Have Dementia, Study Suggests
Read more of this story at Slashdot.
Coinbase Breach Linked To Customer Data Leak In India
Read more of this story at Slashdot.
Microsoft To Finally Stop Bugging Windows Users About Edge - But Only in Europe
Read more of this story at Slashdot.
Texas Right To Repair Bill Passes
Read more of this story at Slashdot.
Pro-AI Subreddit Bans 'Uptick' of Users Who Suffer From AI Delusions
Read more of this story at Slashdot.
Jony Ive's OpenAI Device Gets the Laurene Powell Jobs Nod of Approval
Read more of this story at Slashdot.
Linux User Share Hits a Multi-Year High On Steam For May 2025
Read more of this story at Slashdot.
Snowflake Finance VP Says Big Companies Migrate at a Glacial Pace
Read more of this story at Slashdot.