fsprojects / fsprojects/Paket

support TeamCity dependencies?

Open
#1,725 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

extern question
Dominant language
F#
Stars
2.1k
Forks
528
Avg merge
1d 12m
Merged PRs (30d)
54

Description

Inspired by the fact that in Paket 3, Paket has demonstrated itself to be definitely more than just upgraded Nuget, I would like to bring up for discussion the fact that I currently have two ways for managing dependencies in my system:

  1. For things that are decoupled enough to live in different repos but have the same lifecycle, I use TeamCity builds chains to link them together. I then have FAKE code which imitates TeamCity's artifact resolution algorithm.
  2. For things that are so decoupled that they have unique lifecycles, I use pure Paket dependencies.

So what's I'm wondering is,

  1. Would there be a way to handle the TeamCity dependency resolution with today's Paket (Paket 3!)?
  2. If the answer to .1 is no, is there a way to include something that would help me unify these two dependency relationships without coupling Paket to my specific situation or even to TeamCity per se?

I have an idea that it might be possible to combine a dynamically created paket.local with HTTP dependencies to address .1. I'll have to noodle on it a little more, seems a tad hairbrained.

What I am doing today (this logic only runs locally):

  1. Having TeamCity commit its configurations into Git.
  2. Parsing the XML of its configuration to determine some parameters for the URL (the build configuration ID of the build under question, and its artifact dependency rules).
  3. Parsing the artifact dependency rules in order to figure out what to request, and where to put the downloaded files.
  4. Parsing the Git branch to determine another parameter for the URL.
  5. Checking to see if there are artifacts available in TeamCity for the current branch, and if so, downloading them.
  6. If there are no artifacts available for the current branch in TeamCity, falling back to the default branch, and downloading artifacts from there.
  7. Unpacking the downloaded stuff into the appropriate directory as specified by the artifact rules.

Setting aside the specifics of TeamCity and my situation, this boils down to:

  1. I do not have any way of statically referencing the dependencies; I have some specific logic to determine their exact form, and the logic of this may be too specific to TeamCity/my branching strategy to be included into Paket.
  2. I need a way of specifying that these dependencies only need to be retrieved for local builds so I can let TeamCity use its own resolution magic.

So I'm expecting I need some custom FAKE code one way or another; the question for me is just whether I can cede the actually downloading and unpacking of these dependencies to Paket.

Thoughts?

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue does not name specific Paket files, tests, or entry points. Start by investigating how Paket handles HTTP dependencies and local-only dependency retrieval, then compare that with the described TeamCity artifact-resolution workflow and determine whether a general solution is feasible.

Written by the indexing model from the issue text.

Assessment

Tech stack
fsharp
Domain
tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.