ThoughtWorks FAQs | Comparably
ThoughtWorks Claimed Company
Founded over 25 years ago, we’ve grown from a small team in Chicago to a leading global software consultancy of more than 7000 ThoughtWorkers. With our roots in custom systems and agile software delivery, we’re at the forefront of defining the tech principles used by some of the world’s most successful organizations. We have invested in organic growth, building on the strategy, design, data and engineering capabilities required to bring a truly integrated approach to solving our client's toughest challenges. Our collaborative, cross-functional teams deliver real results, fast. ThoughtWorks challenges curious minds to make a real impact. Together, we’re creating a place where you are free to make your mark on the world through technology. read more
EMPLOYEE
PARTICIPANTS
179
TOTAL
RATINGS
2160

ThoughtWorks FAQs

ThoughtWorks's Frequently Asked Questions page is a central hub where its customers can always go to with their most common questions. These are the 733 most popular questions ThoughtWorks receives.

Frequently Asked Questions About ThoughtWorks

  • You can use maven and Go together by using the "exec" builder of cruise.

    Please do the following to set up maven with Go:

    1. Create a batch file(If you are on windows, else, .sh file) with the maven command you want to run through Go.2. While setting up the pipeline, choose "exec" as your builder and give the batch file name (created in step 1) and the parameters, if any.

    Go recognizes build tools like ant, rake and nant; any other build tool can be integrated with cruise using the "exec" builder where you call the build commands through a batch file.

    View Article
  • I'm wondering if there's a way to somehow alert on "stale" items.

    My usage case here is that we've moved some defects to a "blocked" status if they need more analysis/further decisions prior to fixing them. Sometimes we forget about these defects, and have had some sit for weeks with no updates. I'd like a way to notify someone (e.g. via the RSS feed) when something hasn't been updated in awhile.

    Per the thread on "alert on new comment," I find it unlikely this is supported directly, but if it is please let me know.

    I was thinking I could "hack" this somehow by putting a formula property on cards like "Today-LastUpdateDate", putting in a transition that resets "LastUpdateDate" to today and requires a comment, and setting up alerts when "TimeSinceLastUpdate" changes to something greater than 7. Then I get an e-mail for blocked defects if someone hasn't "hit the snooze button" and added a comment in the last week.

    This seems like a terrible hack, and I don't think it would actually work (I don't believe I can use "today" in a formula property, unless I make it a project value and update it every day...). Anyone have better (preferably working) ideas?

    View Article
  • Often it is required to migrate Mingle to new servers. In such a case, there are 2 approaches. Both have been described via the KB article : http://support.thoughtworks.com/entries/20413413-Migrating-Mingle-to-a-new-server. Through this article we will be explaining more about the 2nd option which involves taking the database backup and restoring it on the new server. For our example, lets call the current server 'Server A' and the new server 'Server B'. So the goal is to migrate Mingle data from Server A to Server B.

    Before we proceed further, it is important to understand where Mingle stores its data.

    1. Mingle Database stores all the Mingle project related data ( for example, all cards, properties, transitions, user profile and preferences...etc).

    2. Mingle Data and Config directories, refer : http://support.thoughtworks.com/entries/23550246-Mingle-Data-And-Config-directories

    Actual migration would involve the following steps:

    1. Stop Mingle on Server A and back up the Mingle Data and Config directories

    2. To backup database, please refer : http://support.thoughtworks.com/entries/23532212-Backup-and-Restore-Postgres-database

    3. Copy over the Mingle Data and Config directories from Server A to Server B. Please note that all the configuration files will be pointing to Server A, and you will have to manually check and edit the configuration files to reflect the changes.

    For example, the parameter '-Dmingle.siteURL' in the mingle.properties file will be pointing to Server A.

    4. Restore database on Server B, refer : http://support.thoughtworks.com/entries/23532212-Backup-and-Restore-Postgres-database

    Please make sure that the database.yml is updated with the correct values.

    5. Install Mingle on Server B and point Mingle to the Mingle Data and Config directories copied over from Server A. Please refer to the installation steps provided at :

    After the migration, you will be able to login to Mingle using the same username and password as before.

    View Article
  • All LDAP/AD users who login in to GO after the authentication is setup are given admin privileges unless you specifically grant admin permissions to user(s). As soon as you make any one user a Go administrator, all others will lose there admin permissions.

    Reason being, Go provides two authentication mechanisms, LDAP and password file. However setting up this part does nothing for the authorisation, i.e. there is no restrictions at this point. It's only when user decides to enable authorisation by declaring explicit people and/or groups that belong to the admin role that authorisation is enabled.

    View Article
  • Hi,

    I would like to filter a burn down chart on tags. However, it does not seem to be possible to use the tagged_with property in MQL. If not, is there some kind of work-around?

    Thanks,

    Peter

    View Article
  • My name is Ethan. I’m one of the Product Managers at ThoughtWorks Studios.

    Are you frustrated by the effort required to manage user accounts in Mingle or Go? Have you ever wished for a centralized way to grant users access to multiple projects or pipeline groups?

    We’re currently working on something new that we hope will improve this experience in our products. If this is something you’ve been looking for, please indicate your interest by filling out the short survey below.

    Thank you! We will contact you soon!

    http://www.surveymonkey.com/s/YFT3LX2

    View Article
  • I've tried to embed an img tag in a Mingle wiki page by specifying the HTML for the image as below:

    <img src="http://some-server.co.uk/*.*" />

    Mingle unfortunately mangles the URI when this is presented, such that this appears as the HTML:

    <p>img<img src="http://some-server.co.uk/<strong>.</strong>” /></p></p>

    This obviously doesn't work. Apart from the extra p tags the URI has been altered and the HTML is not valid. It seems to be the *.* part of the URI that causes the problem, as this:

    <img src="http://some-server.co.uk/" />

    produces this (valid) HTML:

    <p><img src=" http://some-server.co.uk/ " /></p>

    This is preventing me from showing a useful dashboard of metrics presented using the api of an external system within the wiki.

    View Article
  • Hi together,

    I want to ask, if there is a tutorial or an instruction available how to backup a mingle system, so that an admin is able to recover the system after a crash.

    We run mingle on windows with a postgres db.

    Thanks in advance

    Rainer

    View Article
  • Go’s support for job level properties can be used to pass variables to other pipelines. Before, we get into properties, let’s see what is already available.

    What’s available out-of-the-box

    As documented, the following dependency variables are available to child pipeline tasks as environment variables.

    GO_DEPENDENCY_LABEL_PARENT e.g. value: parent-123

    GO_DEPENDENCY_LOCATOR_PARENT e.g. value: parent/123/stage2/1

    By child pipeline, we mean a pipeline that is immediately downstream to a parent pipeline i.e. the child has the parent configured as a pipeline dependency material. What if we want the label and locator of the grandparent? Or if we just want to pass a value generated by a task in one pipeline to another pipeline?

    Passing via Properties

    Publishing Properties

    note: Properties serve a different purpose from environment variables or parameters.

    A property is a key value pair. To set a property (e.g. appversion=1.2.3) at runtime for the current job, just use this API call from a task.

    curl -u user:passwd -d "value=1.2.3" http://go-server:8153/go/properties/${ GO_PIPELINE_NAME}/${GO_PIPELINE_COUNTER}/${GO_STAGE_NAME}/${GO_STAGE_COUNTER}/${GO_JOB_NAME}/appversion

    Fetching properties

    To fetch the above property from a dependent pipeline, we use:

    curl -u user:passwd http://go-server:8153/go/properties/${GO_DEPENDENCY_LOCATOR_PARENT}/job-name/appversion 2>/dev/null|sed -n '2p'

    The API returns the property key-value in CSV format with key on line 1 and value on line 2. The sed command above returns just the value (line 2).

    To fetch properties from an arbitrary pipeline, we’ll need to expand the URL section provided by GO_DEPENDENCY_LOCATOR ourselves. i.e. pipeline-name/pipeline-counter/stage-name/stage-counter

    Passing via artifacts

    Another approach is to stick the key value pairs into a properties file and publish it as a metadata artifact. For dynamic publishing, use the create or append API. A downstream pipeline can now fetch this metadata file using fetch ancestor artifact. Other arbitrary pipelines could use the artifact API.

    View Article
  • Maybe I'm missing something obvious.. but I am trying to show a total at the bottom of a table... like a total for sum planning estimate here.

    Any ideas?

    Query and screenshot below..

    Thanks,

    Mike

    table

    query: SELECT 'Development Completed in Sprint', SUM('Planning Estimate'), SUM('Actual Effort') WHERE 'Type' IN ('Task','Story') AND Status != 'Deleted'

    View Article
  • I am having difficulty running multiple instances of the same pipeline simultaneously. Once one instance is running, it doesn't seem to allow another one to be triggered until the current instance has completed. I have the setting "Automatic pipeline locking" unselected, so I'd expect that it would allow simultaneous execution.

    Are there other settings that impact the ability to run simultaneously?

    View Article
  • Problem

    We've configured an environment, a pipeline and a step within that pipeline, but nothing happens when we try to trigger the pipeline platform is Windows 2008 R2. We have 3 build agents. The pipeline step is an MSBuild task.

    Solution

    Git checkout is a known issue on Windows when path length is too long for Windows to handle(ref: http://trac.openmicroscopy.org.uk/ome/ticket/4381).

    Windows has a 260 char path limit on file-path length. To work around this change server installation to a shorter path like C:\go or increase file-path max-length limit (it seems there is a way to increase file-path length limit: http://msdn.microsoft.com/en-us/library/aa365247(v=vs.85).aspx#maxpath).

    View Article
  • Hi,

    I have a very nice burn up chart for the current iteration butI'mstill facing a problem with the weekends. I would like to hide them in my chart! Is there an option to do something like that?

    I think one posible solution is to offer something like x-labels-hide: '28 Nov 2009', '29 Nov 2009'.

    The problem with my current chart is that the trend line is always wrong due to the Out of Office days in my burn up chart.

    Is there any other alternative for a burn up chart?

    Thanks a lot,

    Ariel

    Image

    a: SELECT 'Development Completed On', SUM('Actual Effort') WHERE type = Task AND 'Task Status' >= 'Completed'

    View Article
  • Hi All,

    The Mingle API allows you to manage users, create/edit cards, attach multiple images, etc.This article is intended to direct you to the Mingle API help page, and also for users to share their tips and tricks in the comments! We also have a dedicated space just for developers/tech savvy on our blog with more documentation.

    If you have any questions about the Mingle API, please submit a support ticket to us here !

    Regards,

    Leo

    View Article
  • Pipelines in Go can get triggered in several ways. Given below is a quick guide describing the behavior of these different trigger types.

    1. Automatic Trigger

    Go server polls all materials to get latest changes, approximately, once per minute. A pipeline gets triggered automatically whenever there is a new checkin detected for its material. During automatic trigger, material revisions are resolved based on upstream dependencies of the pipeline.

    Special Cases:

    (i) If the polling of the material is disabled, then the pipeline will not get automatically triggered.

    (ii) If the first stage of a pipeline is manual then the pipeline will not get triggered, irrespective of whether the polling is disabled or enabled.

    (iii) If some files in the material have been blacklisted, changes to these files also will not trigger the pipeline.

    2. Manual Trigger.

    A pipeline can be manually triggered by using the "Play" or "Trigger" button available on the dashboard. It can also be triggered using the scheduleAPI. When a pipeline is manually triggered, the Go server mandatorily polls for the latest changes of all the materials and schedules the pipeline.

    Few things to keep in mind while triggering a pipeline:

    (i) Manual trigger does not resolve the changes based on fanin or upstream dependencies.

    (ii) Any pipeline can be manually triggered irrespective of its configuration.

    A pipeline can also be manually triggered with any selected revisions. This can be done either by using the "Trigger with Options" button on the dashboard, or via the schedule API. It is to be noted that the revisions available for selection will only be those that the Go server already knows about.

    3. Timer Trigger

    A pipeline can be configured to run at a specific time e.g.: 8 a.m every monday morning. The timer can be configured using a cron-like format. Go server uses the last known revisions of the materials to trigger the pipeline. It does not poll the material to get the latest changes.

    Few things to keep in mind while configuring your pipeline to be timer trigger:

    (i) If polling is turned off for the material, the Go server will not know about any new revisions checked into the material and hence the timer pipeline will not run with them.

    (ii) The pipeline will get triggered on the scheduled time, even if a previous pipeline instance has already run with the same set of material revisions.

    (iii) If it is desirable that the pipeline should trigger only on the scheduled time and not on every check-in, the first stage should be made manual.

    View Article
  • A dependency is created when a pipeline is configured to depend on either an SCM or another pipeline. The domain concept for this is called a material. If a pipeline has a dependency it has been configured to have either an SCM material or a pipeline material.

    SCM Dependency

    Pipeline 1 depends on an SCM.

    Pipeline 1 will trigger each time it polls the SCM and detects a new revision.

    Pipeline Dependency

    Pipeline 2 depends on Pipeline 1.

    Pipeline 2 will trigger each time Pipeline 1 successfully completes.

    Pipeline and SCM Dependency

    Pipeline 2 depends on Pipeline 1 and an SCM.

    The expectation may be that a new revision will trigger both Pipeline 1 and 2. That’s not the case.

    Instead, Pipeline 2 will only trigger if a new revision has successfully passed through Pipeline 1.

    Real world example:

    SCM contains application code and acceptance tests

    Both pipelines depend on the SCM

    Pipeline 1 compiles code and creates an artifact

    Pipeline 2 fetches the build artifact and runs the tests that were written for the compiled code

    Pipeline 2 has to use the same acceptance tests committed with the code

    Someone commits code and tests as part of the same SCM commit.

    Fan-out

    Pipelines 1 and 2 depend on the same SCM.

    A new revision will trigger both Pipeline 1 and 2.

    Why fan-out?

    Speed up the feedback loop and enable a team to fail and learn faster.

    Fan-in - Pipeline

    Pipelines 1 and 2 depend on an SCM.

    Pipeline 3 depends on Pipelines 1 and 2.

    The expectation may be that any successful run of Pipeline 1 or Pipeline 2 will trigger Pipeline 3. That’s not the case.

    Instead, Pipeline 3 will only trigger if a new revision (SCM) has successfully passed through both Pipeline 1 and Pipeline 2.

    Why fan-in?

    Faster feedback - You can fan-out to get significantly faster feedback now that Go handles the fan-in.

    Eliminates spurious builds - Test software only when it's necessary and don’t waste resources.

    Meaningful feedback - You won't have false-positives or false-negatives.

    Fan-in - Pipeline and SCM

    Pipelines 1 and 2 depend on SCM 1.

    Pipeline 3 depends on Pipelines 1 and 2, and SCM 2.

    Pipeline 3 will trigger:

    if a new revision (SCM 1) has successfully passed through both Pipeline 1 and Pipeline 2

    each time it polls SCM 2 and detects a new revision

    Fan-in - Pipeline with different originating SCM

    Pipelines 1 and 2 depend on SCM 1.

    Pipeline 3 depends on SCM 2.

    Pipeline 4 depends on Pipelines 1, 2 and 3.

    Pipeline 4 will trigger:

    if a new revision (SCM 1) has successfully passed through Pipelines 1 and 2.

    each time Pipeline 3 successfully completes (SCM 2)

    ------------------------------------------------------------------------------------------------------------------------------------

    For each diagram:

    SCM is a Go supported SCM

    each rectangle is a Go pipeline

    assume that 2 different developers check in code at different times

    Go polls the SCM for changes automatically (default behavior)

    There are no manual gateways

    ------------------------------------------------------------------------------------------------------------------------------------

    Once you understand how Go manages dependencies your team can model a Build-Test-Release workflow like this.

    View Article
  • Enabling LDAPs will involve 2 main parts:

    A. Importing the LDAP server's certificate on the Mingle Server. You will have to export the certificate from your LDAP server: http://social.technet.microsoft.com/wiki/contents/articles/2980.ldap-over-ssl-ldaps-certificate.aspx

    B. Specifying the parameters in the auth_config.yml file and restarting Mingle.

    A. Importing the LDAP server's certificate : For a Mingle Server to trust your directory's certificate, the certificate must be imported into your Java runtime environment. The JDK stores trusted certificates in a file called a keystore. The default keystore file is called cacerts and it lives in the jre\lib\security sub-directory of your Java installation.

    Navigate to the directory in which Java is installed. It's probably called something like: /usr/java/jdk1.5.0_12.

    Run the command below, where server-certificate.crt is the name of the file from your directory server:

    keytool -import -keystore .\jre\lib\security\cacerts -file server-certificate.crt

    keytool will prompt you for a password. The default keystore password is changeit.

    When prompted Trust this certificate? [no]: enter yes to confirm the key import:

    Enter keystore password: changeit

    Owner: CN=ad01, C=US

    Issuer: CN=ad01, C=US

    Serial number: 15563d6677a4e9e4582d8a84be683f9

    Valid from: Tue Aug 21 01:10:46 ACT 2007 until: Tue Aug 21 01:13:59 ACT 2012

    Certificate fingerprints:

    MD5: D6:56:F0:23:16:E3:62:2C:6F:8A:0A:37:30:A1:84:BE

    SHA1: 73:73:4E:A6:A0:D1:4E:F4:F3:CD:CE:BE:96:80:35:D2:B4:7C:79:C1

    Trust this certificate? [no]: yes

    Certificate was added to keystore

    B. You can then add the following settings to the auth_config.yml file

    ldapusessl: true

    ldapusetls: false

    ldaptruststore: location of cacerts (ex. /usr/java/jdk1.5.0_12/jre/lib/security/cacerts)

    View Article
  • Hi, I have rather a strange problem, but as I'm new to Go (but not cruise) I'm sure it's an easy one for someone

    Go can't connect to my git hub, which is setup as a private repository, and needs an SSH key configured for access.

    In creating a new pipeline I get the chance to test the connection, and Go does this with the following command:

    > git ls-remote [email protected]:foo/bar.git

    The result is:

    --- Environment --- {} --- INPUT ---- --OUTPUT --- --- ERROR --- ERROR: Host key verification failed. ERROR: fatal: The remote end hung up unexpectedly ---

    However, Git hub is correctly configured with my Public SSH key, thus:

    rails@webtest1:/var/log/go-server$ ssh -T [email protected]

    Hi FooBarGit! You've successfully authenticated, but GitHub does not provide shell access.

    And running the same command line that fails for Go, works for me:

    rails@webtest1:/var/log/go-server$ git ls-remote [email protected]:Foo/Bar.git

    c0452f00b1469703acc98bd11da47827c8074843 HEAD

    6e2350bb5c17aa55ea1fe1e3676f113e5cf89d13 refs/heads/analytics-work

    08a333cf8c6669df77164f148c812b26522c546b refs/heads/expert_page_2

    af8609ff19cde6d1a6ed179e64231a8bef77f876 refs/heads/expertrecommendationpage

    Any ideas?

    thanks,

    Guillaume

    View Article
  • Problem:

    While installing mingle on windows, when you initially try to start the mingle service it throws the below error:

    'Error 1067,Process terminated unexpectedly'

    Solution:

    Please add the below lines to mingle.properties file (<mingle data directory>/config folder)

    -Xms256m

    -Xmx256m

    And now try starting the Mingle service again.

    View Article
  • I use the planning tree to manage how stories fall into iterations and iterations into releases. My iterations, in real life, have an order: iteration 1 is followed by iteration 2, etc.. However, I’m not quite sure how to model this in a MQL query.

    I’d like to be able to query against cards and infer an ordering of those cards. For example, I’d like to be able to get a list of the cards that are not done, but are booked in elapsed iterations. So I’d like to do something like this:

    table query: SELECT name, number, iteration WHERE Type = Story AND Status != Done and Status != Deleted and Iteration < ‘(Current Iteration)’

    The trouble here is that the iteration cards have no implied order. The “Iteration < ‘Current Iteration’) does not generate an error, but also does not produce the expected results. I haven’t quite figured out what logic is being used for the less-than. I’d like to do something like this, where StartDate is a property on my Iteration card:

    table query: SELECT name, number, iteration WHERE Type = Story AND Status != Done and Status != Deleted and Iteration.StartDate < ‘(Current Iteration).StartDate’

    Is there a way to do something like this?

    View Article
  • Can the "color by" dropdown box be modified in the grid view? If so, how do you do that?

    Thanks,

    Michelle

    View Article
  • Hi,

    we are currently evaluating the GO Enterprise edition 2.1.0(11943-65dd4ee228d8) and are wondering about the "fetchartifact" behaviour.

    From the go documentation:

    <fetchartifact stage="dev" job="unit" srcdir="pkg" dest="lib"/>

    Fetch all artifacts in the directory 'pkg' from the previous stage in the same pipeline and put them under the directory 'lib'

    So if "pkg" contained e.g. foo.jar and bar.jar, I would expect that those artifacts end up in "lib". However, the whole "pkg" folder is copied to "lib" so that you end up having "lib/pkg/foo.jar" and "lib/pkg/bar.jar". Is that the intended behaviour? So if we need the jars directly under "lib", is the only way to achieve that to specify them all separately and use the "srcfile" attribute? That would be quite tedious especially if you've got a lot of artifacts...

    Cheers,

    Christof

    View Article
  • Hi all, I know this is a beta feature butI'mgetting the following error and I would like to double check ifI'mdoing something wrong or this is not yet supported.

    Im executing the following MQL:

    pivot-table:

    conditions: type = "Designation" AND 'Team Member' IN (SELECT number Where type = 'Team Member' AND Location = BA)

    aggregation: sum('Planned FTE')

    rows: 'project name'

    columns: 'Month'

    empty-rows: false

    empty-columns: false

    totals: true

    AndI'mgetting the following error:

    undefined method `accept' for nil:NilClass Help

    If this doesnt work I have to hardcode all existing team members from that location in all the MQLs which Idon'tlike because the Team Members assigned to a specif project are constantly changing

    This is what I have to do:

    pivot-table:

    conditions: type = "Designation" AND 'Team Member' numbers in (5, 8, 9, 10, 11, 12, 13, 30, 31, 32, 33, 74)

    aggregation: sum('Planned FTE')

    rows: 'project name'

    columns: 'Month'

    empty-rows: false

    empty-columns: false

    totals: true

    Is there any workaround or any other way that I can use Pivot tables in a similar way?

    Thanks a lot,

    Ariel.

    View Article
  • Ifsecure access is setup for Mingle then the following should be considered when upgrading Mingle:

    1. Ensure that the keystore file is moved to the new folder structure associated with new version. Say you were migrating from 3.3 to 3.4 then it is possible that the keystore is lying in one of the 3.3 sub folders. Move it to equivalent sub folder under Mingle 3.4

    2. Update mingle.properties with the new path to the keystore (after step #1)

    -Dmingle.ssl.keystore=c:\users\someuser\Mingle34\config\keystore.new

    3. Depending on the SSL tool used to create certificate, there could be more SSL files lying in the MINGLE_INSTALL_DIR/jre/bin of the old version. This is more true of Windows because we ship the JVM along with the Windows version. Every install of Mingle comes with ownjre/bin. A Linux/ Othe_OSinstall will not have this problembecause it will most likely continue to point to the same jre/bin as before the upgrade.

    Move allSSL files from jre/bin folder of earlier version to the jre/bin of the new version.

    4. Restart Mingle server for it to be able to find the SSL files in new folders.

    View Article
  • Is there a way to get to the user information at build time? I would like to know who has kicked off a build so I can add them to an internally generated email. Not all users will want to subscribe to all actions, but there are some instances we want to send emails, rather than having GO manage emails.

    View Article
  • In the new Hybrid Agile with Tasks, what is everyone using Tasks for? It appears Stories are the only cards that track dates, estimates and times while Tasks are essentially associated with stories and only have a title.

    Let's say I wanted to assign an engineer a task to refactor some code and have it show up in the Iteration, tasks would not be the way to go about it. But a story doesn't make sense.

    View Article
  • Hi All

    I am trying to make an automatic release script that will create a tag in git on the development branch (or feature branch) that GO is looking at. The script should find out which remote branch the commit sha1 in $go_revision comes from, check it out, create a tag and move it to a master branch. All in one swoop. However if I issue git branch in the build dir in my development pipeline git says "master". Even though the pipeline is setup to fetch from a development branch.

    Any ideas how to solve my branch problem OR any finished scripts that does what I want will be appreciated :)

    -Erling Mller

    Developer at YouSee

    View Article
  • For those of you who don't monitor the general Announcement forum here is the link to the news about the immediate availability of Go 13.2.1

    View Article
  • I am using Go Version: 2.3.1(14065-5593a5e73beeca). From the pipeline I am running a powershell script. There I am trying to unzip a folder. So I have used the conventional way of unziping a file(below line).

    $destinationFolder.CopyHere($zipPackage.Items(), 16)

    But it is not unziping the file as expected. This I think is a issue with the GO server as when I run the same script directly it workes perfectly.

    I am in Windows 2008 R2 server. Can anyone please share some lights on this?

    View Article
  • Hi

    I am having some problems updating a card with the Mingle API. Getting card information out of Mingle API is working. Any suggestions on how I can update card info via API?

    This is python code to update that is not working:

    import httplib2

    import urllib

    http = httplib2.Http()

    mingle_user = 'user name'

    mingle_pass = 'password'

    http.add_credentials(mingle_user, mingle_pass)

    data = {'card[name]': 'Some_new_name'}

    body = urllib.urlencode(data)

    print body # card\%5Bname\%5D=Some_new_name

    #note that database id=1617 for card #634

    response, content = http.request('http://10.40.30.23:8080/projects/project/cards/1617.xml', method="POST", body=body)

    print response

    print content

    The error I get is Either the resource you requested does not exist or you do not have access rights to that resource

    I do have rights, I think, as I able to get info from Mingle via the following code.

    import httplib2

    from module_xml import xml2obj

    http = httplib2.Http()

    mingle_user = 'user name'

    mingle_pass = 'password'

    http.add_credentials(mingle_user, mingle_pass)

    response, content = http.request('http://10.40.30.23:8080/projects/project/cards/634.xml')

    print response

    print content

    mingle_card = xml2obj(content) #function to converts XML data into native Python object

    print mingle_card.id # <id type="integer">1617</id>

    Any Suggestions?

    RegardsRudi

    View Article
  • Hi all. Happy New Year!

    Is there a way I can get aggregates of aggregates (for example, in a card tree). I’d like to use Task cards and link them to Story cards. I’d like each of those Task cards to have an effort estimate in hours upon which I can create an aggregate estimate calculation per Story to get total hours of all tasks per Story. That, I believe, I can do now in v2.1 of Mingle. I believe I can also use that newly created aggregate calculation (at the Story level) in other calculations at the Story level (for example, I can divide that hour total number by X to get an estimate of days of effort as opposed to hours for each Story).

    What I am not sure about, however, is what I want to do next. I want to be able to link stories (which, remember, now have tasks with estimates in hours associated with them) to iterations and then also have aggregate calculations at the iteration level (total hours for all stories in that iteration, for example). I don’t think there’s a way I can currently do that in Mingle (but that’d be a GREAT addition to the tool).

    Does anyone have recommendations for how to address this need?

    View Article
  • I'm trying to port a really nice chart I've seen drawn by hand on a wall into Mingle. It's essentially a variant on the "stacked bar chart" concept.

    The notion is to draw 2 stacked bars on the same date. The twist is one bar goes up from zero, and the other goes down from zero. In the example I'm using, the bar going up from zero is "defects added' and the bar going down is "defects closed."

    I find this is a nice and intuitive way to represent defects flows. The center of the stacked rectangle tells us whether we had a net gain or loss of defects, and the size of the rectangle tells us how much defect activity we had. This is superior to just graphing the net change in defects, because it shows the difference between "no new defects in or out" and "fixed 20 defects, but added 20 more."

    Is this something the existing Mingle charting could handle? I've tried hacking this in my changing my data: clause to be -1*Count(*) instead of Count(*), but MQL doesn't seem to like this (and I'm not sure it would give the chart I want anyways).

    View Article
  • Hi. I'm working on a plugin at the moment and need to access one of the project variables which is a card, with unexpected results. I can access numeric variables fine, but not those that are cards.

    An example:

    def execute

    something = @project.value_of_project_variable('Something')

    current_sprint = @project.value_of_project_variable('Current Sprint')

    "Something: #{something}, Current Sprint: #{current_sprint}"

    end

    Output:

    Something: 42, Current Sprint: 3790

    Something is a numeric variable and prints out the value (42) as expected. Current Sprint is a card (#1267 Sprint 16) -- what is the 3790 being printed out? The documentation states that the display value of the card should be returned from value_of_project_variable().

    Edit: forgot to mention, I'm using Mingle 2.2

    Thanks,

    Michael.

    View Article
  • Hi all,

    I would like to use a filter to display our backlog. What we want to do is to display all the stories that are assigned to a future Iteration or the Iteration is Not Set.

    I tried to do something like this using a project variable in the Advanced Filter Tab but it is not working:

    Type = Story AND (Iteration > NUMBER ('Current Iteration Number') OR Iteration = NULL)

    This is working fine:

    Type = Story AND (Iteration > NUMBER 49 OR Iteration = NULL)

    Do you know if there is another option to do that?

    Many thanks,

    Ariel.

    View Article
  • Has anyone produced or using RUP with Mingle?

    I have a project coming up that is using RUP and we don't want to use another tool just for the RUP process.

    Maybe someone could create a template?

    Thanks in advance

    Russ

    View Article
  • Hi, folks,

    I'm trying to put together a burn-up chart, and there are some things that are really bugging me. I'm not sure if there's a tick I don't know or if what I want isn't supported.

    What I want to do is draw a burn-up chart for my release, which is expected to be N iterations long. I'm plotting the number of story points Analysis Complete, Development Complete, etc., by creating a plot with cumulative series based on hidden fields for "Iteration Analysis Complete," "Iteration Development Complete," etc.,

    My problem is that I can't find a sensible way to model the fact that we're part-way through the release. What I ideally want is for ONE of the lines (the scope line) to run all the way across to the end of the release (so we see what the "target" we're aming for is), but I want the "data" lines to stop at the current iteration. I can't figure out how to make this happen. See example below--I want the black line to run to iteration 31, but I want the red, blue, green lines to stop at iteration 25, not run horizontally.

    I could partially work around this by using x-labels-end (as JoeZ found in his post below), but that's not really what I want, because that will also cut off the total scope "target" line. I'd like to eventually add some "target" lines to validate that we are/aren't on pace to finish on time, so I don't want the whole chart to end "now," just the data lines.

    What I'd really like is some way to set some equivalent to x-labels-end ("stop drawing after this point") on individual series. An alternative would be having a series-level concept analogous to trend-ignore: zeroes-at-end (i.e. stop padding forward with zeroes), but that seems to only be an option for trend lines, not "real" data lines.

    Any ideas?

    View Article
  • Problem

    Murmurs, a feature introduced in Mingle 3.0, adds new team collaboration capabilities by enabling users to capture ambient data which occurs in day-to-day conversations that would otherwise be lost in space forever. Murmurs enables Mingle users a means to associate once lost conversations to project artifacts, centralizing and archiving contextually relevant data.

    In this video, see how Murmurs:

    Extends existing team collaboration capabilities with "IM chat meets Twitter-like" functionality.

    Captures ambient data that comes out of day-to-day conversations and associate them to project- and artifacts; making contextually relevant data available for the whole team when it is needed. Without Murmurs these conversations would otherwise be lost.

    Improves team collaboration by allowing members to capture and associate previously uncaptured discussions within projects and associate them to specific artifacts.

    Provides improvements in traceability by centralizing unstructured communications so any team member can easily see what’s going on or the historical context of a given card or artifact. If your neighboring paired programmers gets laid-off, no worries their history of work and its context are automatically archived.

    Online Video

    View Article
  • Hi,

    I've had Go installed for 5 weeks now and we're using it with 3 different pipelines, 2 automated on subversion commits the other scheduled. I'd like to configure the auto pipelines so that if they fail then either only the developer who committed code that broke the build is allowed to do the next commit, or the next commit (in Subversion) must have a message with a specific string to indicate it's fixing the broken build. (ie enforce fixing a broken build before the next commit takes place).

    I've looked through the discussion forum and the help pages and whilst there's some talk about the "is_locked" feature for a pipeline I don't see this will give me what I want. I can't see anything else that describes a method for implementing what I want.

    So does anyone out there have any pointers/suggestions?

    regards

    Steve

    View Article
  • Hi all

    I'm evaluating Go at the moment, and I would like to run the agent on one of our Solaris boxes.

    I don't have root privilages though.

    I've read that I can start the agent using a java boot strap, which would create all the correct dorectories etc.

    How do I get hold of that (without any install script wrapped around it)?

    Thanks

    Dom

    View Article
  • Hi

    I am new to this user group so apologies upfront if this is not the appropriate discussion topic.

    I have a 'Product Backlog' tab which displays #, name, type, priority, status, estimate, sprint amongst other things.

    I would like to be able to print this (along with the associated data) so that it renders in the same way as it does within mingle. I have not found a way of doing this. Additionally, if I use the inbuilt print functionality, it displays all of the tags that have been added to the card eg:

    As an Agent I want to be able to find a customer's booking so that I can process the customer [[Halo Desktop Booking]] {\%dashboard-panel \%} {\% panel-heading \%}Story List{\% panel-heading \%} {\% panel-content \%} {\% panel-content \%} {\%dashboard-panel \%}

    My aim is to print out the story list so that I can give it to business users. They are not going to be too impressed with loads of tags etc.

    Can anyone suggest a good approach to achieving my aim

    I have tried cut and paste into word -- not good as it does not retain the formatting

    I have tried printing from the browser -- not good as it does not retain the formatting

    Many thanks

    Gary

    View Article
  • Is it possible to configure the content of emails generated from Go?

    View Article
  • I just set up Go today, and to ThoughtWork's credit it setup rapidly. I am just having one issue. Right now when it goes to build, it deletes all files from the working directory then gets all of the files again (with what might be only one or two changes).

    I was wondering if there is a way to make it so SVN only gets the lastest files to the working directory.

    Thanks

    View Article
  • How to update Mingle Card data/details by using c#.net through Mingle API?

    View Article
  • Hmmm, just set up a new Mingle 3.4 instance on Windows/Oracle64 and when I create a new project based on the Agile Hybrid Template, I can't view any card properties. It fails out with the following error message:

    We're sorry but Mingle found a problem it couldn't fix

    We apologize for the inconvenience.

    You should be able to continue work by returning to the projects page or you may prefer to sign out and sign in again.

    Logging out and back in doesn't make a difference...

    Seen this before or have some hints to provide?

    C

    View Article
  • Request:

    I have multiple materials for a pipeline which are for separate repositories. Often, a check-in spans multiple repositories.Is there any way to delay the trigger of a pipeline when a repository change is detected, to allow the developer to make multiple check-ins prior to having a continuous build kickoff? And is it possible for this muti-repository triggering to be consolidated, such that only one pipeline trigger is done, rather than one for every check-in during this time delay window?

    Solution:

    By default, Go polls the repository once every minute. Therefore the trigger of the pipeline is not dependent on the every check in. Go server wait for one minute (in this time there might be multiple check ins from multiple users. After a minute has passed the server will check for changes and pick up all the changes that occurred in that minute.

    You can increase the polling frequency of the server in order to delay the polling time.

    Steps to increase the polling frequency:

    #stop the server

    sudo /etc/init.d/go-server stop

    #please update this line in /etc/default/go-server

    #change

    GO_SERVER_SYSTEM_PROPERTIES=

    #to

    GO_SERVER_SYSTEM_PROPERTIES=-Dcruise.material.update.interval=300000

    #and make sure that the next line that exports the property is uncommented

    Here is an example of increase the polling frequency to 5 minutes (300000 milliseconds = 5 minutes)

    View Article
  • Recently we came across a issue where presence of special characters in the auth_config.yml caused certain features of Mingle to not work as expected. Features that are affected include search, project export/import, revision caching, aggregate calculation. The problem was because the ldapbindpasswd began with a special character '\%'. Hence it is advised that you quote the ldapbindpasswd if it contains any special characters.

    View Article
  • The simplest way to backup the Mingle database would be to use the pgadmin. Its graphical interface supports all PostgreSQL features and makes administration easy. The attached PDF describes the steps in detail to dump and restore the database via pgadmin.

    If you are comfortable with command-line, you could use the following commands:

    1) Backup db ( run the command as the Postgres user)

    pg_dump db_name > db_name.dump

    2) Restore db:

    Create a database using the command : createdb db_name

    psql db_name < db_name.dump ( where db_name.dump is the dump obtained from the previous step)

    View Article
  • If the ThoughtWorks Studios Support Team suggests enabling GC logs, please perform the following steps:

    In your mingle.configDir, open the file mingle.properties in your preferred text editor.

    Add the following lines:

    -Xloggc:gclog.log

    -XX:+PrintGCDetails

    -XX:+PrintGCTimeStamps

    For this to take effect, you must restart your Mingle instance.

    Please note: When you restart it will overwrite any existing gclog.log files. Therefore if you are experiencing bad performance, you should capture the log file during the bad performance, BEFORE restarting Mingle. Once you have copied the logs to send to the support team, you can then safely restart which will clear out the gclog.

    View Article
  • Starting from 13.2.2, there are two minor changes.

    1. The value query macro is not supported as part of URL, as seen below:

    /projects/project_id/cards/new?properties[Type]=Task&properties[Story]={{value query: SELECT Number WHERE Number = THIS CARD.Number}}

    Mingle will throw a 500 error - after saving and clicking the link - prompting you to either return to the Projects page or to sign out.

    Users often use this macro to create new child cards while on the parent card. An alternate solution would be to add a child card to a parent card by clicking on the blue add icon to the right of the tree. This will bring up a box that will allow you to add multiple cards to a card type. (see below)

    2. The {{project}} macro is also no longer supported as part of the URL.

    Old method: /projects/{{project}}/cards/new?properties[type]=Story

    New method:/projects/project_id/cards/new?properties[type]=Story

    View Article
  • When Mingle is accessed over https and if you face the below issues:

    1. From the programs tab under Plan you can see the objectives planned but when you click on Plan to view the objectives, you do not see them. (Please find attached screen shot1 which shows objective created under plan and screen shot2 showing plan page only waiting to render but never renders these objectives)

    2. When you directly create objectives from the Plan page you will be able to see it but when you move out of the page and come back it disappears.

    The error seen on Jconsole will be something similar to:

    ---------------------------------------------------------------------------------------------------------------------------

    Resource interpreted as Font but transferred with MIME type application/octet-stream: " https://mingle.example.com/font/fontawesome-webfont.w off". plan:14

    The page at https://mingle.example.com/programs/program1/plan displayed insecure content from http://mingle.example.com/programs/program1/plan/objectives.json?ms=1369 _2.

    Refused to get unsafe header "X-JSON" base_packaged.js:97

    Ajax.Request.Class.create.getHeader base_packaged.js:97

    Ajax.Response.Class.create._getHeaderJSON base_packaged.js:98

    Ajax.Response.Class.create.initialize base_packaged.js:97

    klass base_packaged.js:22

    Ajax.Request.Class.create.respondToReadyState base_packaged.js:93

    Ajax.RequestOverriden.respondToReadyState base_packaged.js:1400

    Ajax.Request.Class.create.onStateChange base_packaged.js:85

    (anonymous function)

    ---------------------------------------------------------------------------------------------------------------

    To check jconsole error, from your chrome browser navigate to the Plan page click on View>Developer>JavaScript Console.

    This problem is due to an apache setting.

    Solution:

    Enable header module on apache.

    Add the below lines to the apache config file:

    RequestHeader set X_FORWARDED_PROTO 'https'

    SSLHonorCipherOrder On

    SSLInsecureRenegotiation Off

    View Article

Curious about ThoughtWorks?

Anonymously Ask ThoughtWorks Any Question

Ask Anonymous Question

×
Rate your company