Close Menu
    DevStackTipsDevStackTips
    • Home
    • News & Updates
      1. Tech & Work
      2. View All

      BrowserStack launches Figma plugin for detecting accessibility issues in design phase

      July 22, 2025

      Parasoft brings agentic AI to service virtualization in latest release

      July 22, 2025

      Node.js vs. Python for Backend: 7 Reasons C-Level Leaders Choose Node.js Talent

      July 21, 2025

      Handling JavaScript Event Listeners With Parameters

      July 21, 2025

      I finally gave NotebookLM my full attention – and it really is a total game changer

      July 22, 2025

      Google Chrome for iOS now lets you switch between personal and work accounts

      July 22, 2025

      How the Trump administration changed AI: A timeline

      July 22, 2025

      Download your photos before AT&T shuts down its cloud storage service permanently

      July 22, 2025
    • Development
      1. Algorithms & Data Structures
      2. Artificial Intelligence
      3. Back-End Development
      4. Databases
      5. Front-End Development
      6. Libraries & Frameworks
      7. Machine Learning
      8. Security
      9. Software Engineering
      10. Tools & IDEs
      11. Web Design
      12. Web Development
      13. Web Security
      14. Programming Languages
        • PHP
        • JavaScript
      Featured

      Laravel Live Denmark

      July 22, 2025
      Recent

      Laravel Live Denmark

      July 22, 2025

      The July 2025 Laravel Worldwide Meetup is Today

      July 22, 2025

      Livewire Security Vulnerability

      July 22, 2025
    • Operating Systems
      1. Windows
      2. Linux
      3. macOS
      Featured

      Galaxy Z Fold 7 review: Six years later — Samsung finally cracks the foldable code

      July 22, 2025
      Recent

      Galaxy Z Fold 7 review: Six years later — Samsung finally cracks the foldable code

      July 22, 2025

      Halo and Half-Life combine in wild new mod, bringing two of my favorite games together in one — here’s how to play, and how it works

      July 22, 2025

      Surprise! The iconic Roblox ‘oof’ sound is back — the beloved meme makes “a comeback so good it hurts” after three years of licensing issues

      July 22, 2025
    • Learning Resources
      • Books
      • Cheatsheets
      • Tutorials & Guides
    Home»News & Updates»CodeSOD: Continuous Installation

    CodeSOD: Continuous Installation

    June 3, 2025

    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.

    Source: Read More 

    Facebook Twitter Reddit Email Copy Link
    Previous ArticleScriptorium – write short stories and novels
    Next Article 5 Best Free and Open Source Text Expander Tools

    Related Posts

    News & Updates

    I finally gave NotebookLM my full attention – and it really is a total game changer

    July 22, 2025
    News & Updates

    Google Chrome for iOS now lets you switch between personal and work accounts

    July 22, 2025
    Leave A Reply Cancel Reply

    For security, use of Google's reCAPTCHA service is required which is subject to the Google Privacy Policy and Terms of Use.

    Continue Reading

    5 Business Benefits of Investing in AI-Powered Performance Testing

    Development

    CVE-2025-1495 – IBM Business Automation Workflow Information Disclosure Vulnerability

    Common Vulnerabilities and Exposures (CVEs)

    Google Reports 75 Zero-Days Exploited in 2024 — 44% Targeted Enterprise Security Products

    Development

    1800 Minecraft logins leak online

    Development

    Highlights

    News & Updates

    Snap & Grab mixes camp thievery with Hitman-like shenanigans, and it’s coming to Xbox Game Pass in 2026

    June 17, 2025

    Snap & Grab is a game where you need to be gay and do crimes.…

    A Coding Implementation with Arcade: Integrating Gemini Developer API Tools into LangGraph Agents for Autonomous AI Workflows

    April 26, 2025

    From Protocol to Production: How Model Context Protocol (MCP) Gateways Enable Secure, Scalable, and Seamless AI Integrations Across Enterprises

    May 22, 2025

    VS slaat alarm over ransomware-aanvallen via SimpleHelp-lek

    June 13, 2025
    © DevStackTips 2025. All rights reserved.
    • Contact
    • Privacy Policy

    Type above and press Enter to search. Press Esc to cancel.