Tools and Best Practices for 'make' clones

This topic contains 3 replies, has 2 voices, and was last updated by  Dave Wyatt 3 years, 10 months ago.

  • Author
    Posts
  • #12478

    davidski
    Participant

    I have a number of scripts on a tool server which retrieve various bits of data, munge them around, and spit out emails and update databases. As part of some code clean up, I'm looking for tools and processes by which I can take source code and deploy it alternatively in either test or production scenarios. This would entail pushing to directories and setting variables to the appropriate test or production servers (DB end points and prod/test API targets). This sounds like a scenario for some sort of make like functionality. All the queries I've done seem to focus on using PowerShell to enhance make for other languages (C#, etc.) and not on build environments for PowerShell scripts themselves.

    Before I take all my statically defined scripts and start re-inventing the wheel, has anyone tackled this problem before? Any tools or processes that you can recommend?

    David

  • #12479

    Dave Wyatt
    Moderator

    If I understand this correctly, you have scripts with hard-coded paths, and want to have another script that updates these values later? ie:

    $someVariable = 'DB Endpoint 1'
    $someOtherVariable = 'API Target 1'
    

    If that's the case, I would probably get away from hard-coding those values, and have the script read an XML config file instead. It would be very easy for your deployment script to generate new XML files on the fly (or just copy out a pre-made production or test file, if appropriate). Modifying another PowerShell script can be done, but there are a few potential pitfalls. For example, if you did that to a signed script, the signature would become invalid.

  • #12739

    davidski
    Participant

    Closing the loop on this, Dave's comment on using a config file was spot on. Referencing a common parameters file (in our case, we use a JSON formatted file and run it through ConvertFrom-Json) was a much more straightforward solution.

    Thanks, Dave!

  • #12740

    Dave Wyatt
    Moderator

    No problem. 🙂

You must be logged in to reply to this topic.