Comments

Comments

  • Santosh
    posted February 5, 2012 in Go > Feature Requests

    Hi Alex,

    We have custom views in our backlog. Can you elaborate on your use case of switching context. When would you add a pipeline or group to a separate view? How would the pipelines in a view be related?

    This will help us capture the use case better.

     

    Thanks,

    Santosh

  • glennh
    posted February 2, 2012 in Mingle > Feature Requests

    I, too, would like to have MQL functionality akin to SQL's "LIKE".  How do Mingle users live without this?

  • glennh
    posted February 2, 2012 in Mingle > Feature Requests

    Yes, yes, yes.  It would be helpful to be able to search for a substring within a text property value.

  • angshuman
    posted February 2, 2012 in Twist > General Discussion

    You can autowire the "Environment" to your fixture and get your os and enviroment level properties from it. For example, if you have a Context (or Fixture), naming "Login", you can do like below to get environmental properties like os.arch, os.name etc:

    public class Login {   
        @Autowired
        org.springframework.core.env.Environment env;
        
        public void setUp() throws Exception {
             System.out.println(env.getProperty("os.arch"));
         }

        public void tearDown() throws Exception {
        }

    }

     

    If you are looking to get the properties declared in twist.properties, then you have to do a little bit more. Following is an approach where we have a custom PropertyPlaceholderConfigurer which binds the properties at the context xml level, as well provide a way to read the same properties when it is referred elsewhere.

    ** Declare your Custom property placeholder first like the class below (e.g. com.test.CustomPropertyPlaceHolderConfigurer)

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

    package com.test;

    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.Properties;

    import org.springframework.beans.BeansException;
    import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
    import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;

    public class CustomPropertyPlaceHolderConfigurer extends
            PropertyPlaceholderConfigurer {

        private int sysPropMode;
        private Map<String, String> propertiesMap;

        @Override
        public void setSystemPropertiesMode(int systemPropertiesMode) {
            super.setSystemPropertiesMode(systemPropertiesMode);
            this.sysPropMode = systemPropertiesMode;
        }
        
        @Override
        protected void processProperties(
                ConfigurableListableBeanFactory beanFactoryToProcess,
                Properties props) throws BeansException {
            super.processProperties(beanFactoryToProcess, props);
            propertiesMap = new HashMap<String, String>();
            for (Object key : props.keySet()) {
                String keyStr = key.toString();
                String valueStr = resolvePlaceholder(keyStr, props, sysPropMode);
                propertiesMap.put(keyStr, valueStr);
            }
        }
        
        public String getPropertyValue(String name) {
            return propertiesMap.get(name);
        }
        
        public List<String> getPropertyNames() {
            ArrayList<String> propertyNames = new ArrayList<String>();
            for (Object key : propertiesMap.keySet()) {
                propertyNames.add(key.toString());
            }
            return propertyNames;
        }
    }

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

    ** change the applicationContext-suite.xml file to refer to your custom property placeholder like below (note, only thing that i have changed is the classname)

    <bean class="com.test.CustomPropertyPlaceHolderConfigurer">
        <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
        <property name="locations">
          <value>classpath:twist.properties</value>
        </property>
    </bean>

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

    ** now you can autowire the custom placeholder to your context or fixture. e.g. in your Login class

    public class Login {   
        @Autowired
       com.test.CustomPropertyPlaceHolderConfigurer propertyConfigurer;
        
        public void setUp() throws Exception {

            System.out.println(propertyConfigurer.getPropertyValue("twist.generate_local_report"));
             for (String property : propertyConfigurer.getPropertyNames()) {
                System.out.println(String.format("Property %s=%s", property, propertyConfigurer.getPropertyValue(property)));
            }
         }

        public void tearDown() throws Exception {
        }

    }

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

     

    Hope this works for you.

    regards

  • Jon
    posted February 1, 2012 in Mingle > Feature Requests

    +1

    We have a dozen repositories being used in 1 project, 1 repository isn't useful. It also isn't clear if http protocol is required for git integration, but I would also like to request git protocol. our git server uses git protocol only.

  • Brian Smith
    posted February 1, 2012 in Mingle > Feature Requests

    When is the future release?  Where's the Mingle on Mingle page so I can check the status of this feature?  This is pretty sad that such a basic reporting feature is not yet implemented.

  • Steve Elkind
    posted February 1, 2012 in Go > Feature Requests

     Actually, now that I think about it, an alterative solution to the problem would be roles that are scoped to a pipeline group, and which can be administered by the group administrator(s).

  • goley
    posted January 31, 2012 in Go > General Discussion

    Hi Russell,

    Answer to your first few queries:

    Parameters are not really meant to be dynamic. They are a part of your configuration and can be used to customize/simplify the pipeline configuration.

    GO_PIPELINE_NAME and GO_PIPELINE_COUNTER are environment variables and cannot be used as parameters.

       " So how would I tell <fetchartifact> the dynamically generated name of this artifact?  Is this even currently possible?"

    No, this is not currently possible. 

    Just as a suggestion, when you define a fetchArtifact task to fetch artifact from PipelineA-StageA-JobA, then it will always pick it up from the the latest run of PipelineA-StageA-JobA. So you could fetch the whole folder which cotains your artifact too.

  • Nathan Feltch
    posted January 30, 2012 in Go > General Discussion

    I'd like to add my name to those experiencing this issue.  Any word as to a solution, or a fix from ThoughtWorks?

  • weswilliamz
    posted January 30, 2012 in Mingle > General Discussion

    thanks for the ideas, I think two trees is more complex for my simple situation which generally has one week of overlap and minimal work on the previous release.