Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TeamCity Build & Deploy: How do you pass dependent artifact paths to a script?

How do you pass the artifact paths to a script in TeamCity. The scenario is this

  1. Build Project
  2. Deploy Project (with an artifact dependency to #1)

Step 2 consists of a a script which

  1. Stops a service (to unlock files)
  2. Copies the build artifacts to the server
  3. Restarts the service

I'm struggling with step 2, I figure I need to pass the path of the build artifacts into the script but I can't see how you do it?

like image 701
David Hayes Avatar asked Apr 27 '12 16:04

David Hayes


People also ask

What is a TeamCity build?

TeamCity is used to build and test software products in an automated manner. It provides rapid feedback on every code change, reduces code integration problems, and leads to more effective teamwork. Many popular games, websites, banking systems, and all JetBrains products are built with TeamCity.

How do I run a build on TeamCity?

To run a custom build with specific changes, open the build results page, go to the Changes tab, expand the required change, click the Run build with this change, and proceed with the options in the Run Custom Build dialog. Use HTTP request or REST API request to TeamCity to trigger a build.

How do I make a TeamCity build?

Go to Administration | Projects and open the required project. Alternatively, open the project using the Projects pop-up menu and click Edit Project Settings. The Project Settings page will open. On the Project Settings page, click Create build configuration under the Build Configurations section.

What is TeamCity personal build?

A personal build is a build-out of the common build sequence which typically uses the changes not yet committed into the version control. Personal builds are usually initiated from one of the supported IDEs via the Remote Run procedure.


1 Answers

We do something like this. It is not 100% clear but it looks like you want to do the build and deployment as two separate builds in TeamCity with an artifact dependency from the deployment build on the main build which is exactly what we do. Here is how we do it.

  • Setup your artifacts from the main build which it sounds like you have already done.

    Example: **\bin\release\*.* => bin
  • Set up the artifact dependency (we also do a snap shot dependency as well but you don't have to) to pull your artifacts from the main build and put them into a local folder in your deployment build.

    Example: Artifacts paths: bin\**\*.* Destination path: bin\
  • We use a mixture of MSBuild and PowerShell for doing the actual deployment work. In each case you can reference the artifacts using a relative path.

    IF the build work folder looks like this:

    root
     |- bin (Artifacts pulled in from main build)
     |- src
     |- build (Where your build and deployment scripts live)
    

    You would access the bin files from your deployment script located in the build folder like:

    ..\bin\[your files]

You can then pass the path to your build artifacts like this

%teamcity.build.checkoutDir%\bin\
like image 162
Bronumski Avatar answered Sep 23 '22 08:09

Bronumski