Skip to content

Releases: RDTK/generator

Release 0.35

09 Oct 09:18
Compare
Choose a tag to compare
  • BUGFIX
    Generating Jenkins jobs for projects which use the archive SCM no longer fails.

  • ENHANCEMENT
    The Jenkins installation performed by the install-jenkins command now includes the permissive-script-security plugin which circumvents the approval mechanism for Groovy scripts. Please review the security implications before using a Jenkins installation created using the install-jenkins command.

  • ENHANCEMENT
    When a project which uses GIT SCM specifies a sub directory, Jenkins SCM polling is now configured to ignore repository changes outside of that sub directory.

  • ENHANCEMENT
    The generator can now produce output for targets other than Jenkins jobs. The generate command will be supported for backward compatibility, but the new generate-jenkins command should be used in newly written invocations. Additional targets will follow the same pattern, namely generate-TARGET and will accept target-specific commandline options to the command.

  • ENHANCEMENT
    The new generate-dockerfile command can be used to place into a specified output directory a Dockerfile with supporting scripts that build one or more distributions within a Docker container.

  • ENHANCEMENT
    The new generate-makefile command can be used to write a Makefile into a specified output directory. When executed, that Makefile builds and/or installs one or more distributions in the filesystem.

  • ENHANCEMENT
    The new build command builds or installs one or more distributions in the filesystem under the direct control of the generator process.

  • ENHANCEMENT
    Use HTTPS URL scheme in download URL for jenkins.war . The download server now seems to reply with a 308 redirect otherwise.

  • ENHANCEMENT
    Consume and produce both the current and the legacy Jenkins permission configuration format.

  • ENHANCEMENT
    Git LFS (large file storage) is now supported.

  • ENHANCEMENT
    The commands build, generate-dockerfile and generate-makefile now handle arguments to directory-related commandline options better when the trailing slash is omitted.

Release 0.34.2

07 Jun 18:54
Compare
Choose a tag to compare

Bug fix release.

  • ENHANCEMENT
    Use HTTPS URL scheme in download URL for jenkins.war . The download server now seems to reply with a 308 redirect otherwise.

Release 0.34

31 May 11:13
Compare
Choose a tag to compare
  • ENHANCEMENT (#53)
    The parameters aspect now supports the parameter kind "password". However, a default value cannot be specified for parameters of this kind.

  • ENHANCEMENT (#50)
    When a variant of the --on-error commandline option is supplied, errors during the analysis of a git repository (for example due to the repository being private) should no longer prevent the generation of a basic SCM configuration for the corresponding job.

  • BUGFIX (#49)
    The install-jenkins command is now more careful about downloading plugin versions that are compatible with the downloaded Jenkins core.
    The command also tries to prevent newer Jenkins versions from entering the setup wizard when started for the first time.

  • BUGFIX (#54, #55)
    Configurations involving the warnings-ng plugin should no longer break with every update of the plugin (Thanks to Robert Haschke).

  • BUGFIX
    The variables scm.username and scm.password are handled correctly.

Release 0.33

07 Dec 18:09
Compare
Choose a tag to compare
  • Linked against libssl.so.1.1 for Ubuntu Focal (#47)

  • INCOMPATIBLE-CHANGE
    The following Jenkins plugins have been deprecated and seem to no longer be available for download:

    • Warnings
    • Task Scanner
    • Checkstyle
    • PMD

    For this reason, the generator no longer attempts to install the plugins when installing a new Jenkins instance. The "Warnings NG" plugin has
    replaced the above plugins. The generator therefore now generates configuration data for the "Warnings NG" plugin by default. For Jenkins
    instances that have the deprecated plugins installed, the previous generator behavior can be selected by setting the following variables:

    -D aspect.checkstyle.implementation=legacy
    -D aspect.pmd.implementation=legacy
    -D aspect.tasks.implementation=legacy
    -D aspect.warnings.implementation=legacy
    
  • ENHANCEMENT (#44)
    The variable message can be used to specify a message that should be displayed after processing a project or distribution. The generate command displays all such messages as the final output before terminating the generator process. Example message for a distribution:

    job-list: |
      * ${jobs.list}
    message: >-
      Will install your stuff into ${toolkit.dir}.
    
      Generated the following jobs:
    
      @{job-list}
  • ENHANCEMENT (#47)
    The !b!include FILENAME and !b!literal-include FILENAME constructs can now refer to the to-be-included file in three ways:

    • FILENAME-NOT-STARTING-WITH-/ is interpreted as a filename relative to the directory of the recipe file in which the include construct occurs.
    • /REST-OF-FILENAME-NOT-STARTING-WITH-/ is interpreted as an absolute filename.
    • //REST-OF-FILENAME is interpreted as a filename relative to the root directory of the repository containing the recipe file in which the include construct occurs, that is REPOSITORY-ROOT/REST-OF-FILENAME.
      So assuming a repository /home/recipes containing a recipe /home/recipes/projects/my-project.project, include filename would be resolved as follows
    !b!include patches/patch.diff            → /home/recipes/projects/patches/patch.diff
    !b!include /usr/share/patches/patch.diff → /usr/share/patches/patch.diff
    !b!include //patches/patch.diff          → /home/recipes/patches/patch.diff
    

Release 0.32

29 Oct 17:03
Compare
Choose a tag to compare
  • BUGFIX (#42)
    Apparently, Jenkins at some point changed the way it installs and loads plugins such that it now expects installed plugin file to use the "jpi" extension. The install-jenkins command now uses this extension.

  • BUGFIX
    The json report kind works again.

  • ENHANCEMENT (#40, #41)
    Jenkins recently started using a stricter cross-site request forgery (CSRF) protection scheme combining session cookies and a CSRF protection token. This stricter scheme is now supported.

  • ENHANCEMENT (#39)
    The new variable dependencies.required-upstream-result controls the required status of upstream jobs in order to trigger builds of downstream jobs. Possible values are:

    • success - All upstream jobs must have successful builds.
    • unstable - All upstream jobs must have unstable (e.g. with test failures) or successful builds.
    • any - The build of the downstream job can start irregardless of the status of the upstream jobs.

    The new variable dependencies.required-result can be used to specify the status of jobs required to trigger downstream jobs. This can be used to relax the threshold established via dependencies.required-upstream-result in cases in which a known-unreliable upstream should still trigger downstream jobs. Note that marking the upstream job avoids the need to adapt the threshold in all downstream jobs.

  • ENHANCEMENT (#45)
    Dependency specifications (for example in the extra-requires, extra-provides, platform-requires and platform-provides variables) can now use the following shorthand syntax: NATURE: TARGET instead of the usual

    nature: NATURE
    target: TARGET

Release 0.31

20 Aug 09:37
Compare
Choose a tag to compare
  • ENHANCEMENT (#29)
    The analysis cache is now used by default. The default cache directory is obtained by appending build-generator/ to the XDG user cache directory.

  • ENHANCEMENT (generalization of #31)
    Template directories in recipe repositories can now contain a parents file referencing other template directories in the same repository. Syntactically the parents file is a YAML document the root node of which is a sequence of scalar nodes each of which is a relative directory pathname:

    # Fall back to templates in _common directory
    - ../_common
  • ENHANCEMENT (#30)
    Recipe repositories can now contain a parents file referencing other recipe repositories. The basic idea is: when a required recipe file cannot be found in the local repository, referenced repositories are probed and the recipe is loaded from a referenced repository if it can be found in one. Syntactically the parents file is a YAML document the root node of which is a sequence of a single scalar node which is either

    • a directory pathname:
      # Load recipes from sibling repository:
      - ../recipes-core/
    • or a git URL:
      # Load recipes from remote repository:
      - https://github.com/rdtk/recipes-core
      A specific branch of a remote repository can be specified using the fragment part of the URL:
      # Load recipes from remote repository:
      - https://github.com/rdtk/recipes-core#master
                                             ^^^^^^ branch

    Referenced remote repositories are cloned into the configured cache directory when first accessed and updated on subsequent accesses.

  • ENHANCEMENT
    Analysis of the CMake include() commands succeeds in more cases.

  • ENHANCEMENT
    Analysis of ASDF systems can now extract executable names (:build-pathname) and entry points (:entry-point) from system definitions.

  • ENHANCEMENT (#34)
    The install-jenkins command no longer silently accepts invalid Jenkins usernames.

Release 0.30.1

08 Jul 16:10
Compare
Choose a tag to compare

Bug fix release.

  • BUGFIX (#35)
    Recipes passed as relative paths no longer cause an error.

Release 0.30

25 Jun 10:18
Compare
Choose a tag to compare
  • INCOMPATIBLE-CHANGE (#26)
    The non-interactive commandline option is no longer accepted. This change represents no reduction in functionality since the option did not have any effect.

  • ENHANCEMENT
    Computing variable values is substantially faster than before. As a result, many user-level commands complete more quickly: generating Jenkins jobs, computing system requirements and generating reports.

  • ENHANCEMENT (#31)
    It is no longer necessary to create symbolic links for template recipe files that are shared between multiple modes. When a required template file MODE/NAME.template does not exist, _common/NAME.template is tried instead.

  • ENHANCEMENT (#33)
    Recipe files can now be placed into sub-directories. The respective directory name or names are part of the object name:

    Filename                                   Object name
    projects/ordinary.project                → "ordinary"
    projects/sub-directory/special.project   → "sub-directory/special"
    distributions/sub1/sub2/two.distribution → "sub1/sub2/two"
    

    The respective include syntax for projects and distributions uses this object name - not a (relative) path.

Release 0.29

27 May 07:33
Compare
Choose a tag to compare
  • ENHANCEMENT
    Analysis of projects with cmake nature now recognizes find_library and find_program calls and turns them into the following feature requirements:

    find_library(OUTPUT_VAR NAME …) → nature: library
                                      target: NAME
    find_program(OUTPUT_VAR NAME …) → nature: program
                                      target: NAME
    
  • ENHANCEMENT (#23)
    The generate command uses a better default pattern for deleting previously generated jobs if the delete-other commandline option is supplied, but delete-other-pattern is not supplied. The new default value corresponds to the regular expression (DISTRIBUTION-NAME₁|DISTRIBUTION_NAME₂|…)$ where DISTRIBUTION-NAMEₖ are the names of the distributions for which jobs are being generated.

  • ENHANCEMENT (#24)
    The console timestamper plugin for Jenkins is now supported.

  • ENHANCEMENT (#25)
    The console ANSI color plugin for Jenkins is now supported.

Release 0.28

15 Apr 19:11
Compare
Choose a tag to compare
  • INCOMPATIBLE-CHANGE
    The legacy syntax for including project versions in distribution recipes, i.e. [ "NAME", "VERSION₁", "VERSION₂", … ], is no longer recognized.

  • ENHANCEMENT (#19)
    Variable assignments specified on the commandline using -D NAME=VALUE are now taken into account when resolving project version includes in distribution recipes. That is, a project version include in a distribution recipe like the following

    variables:
      foo-tag: '1.1'
    
    versions:
    - project@v${foo-tag}

    is now affected by a -D foo-tag="1.2" commandline option.

  • BUGFIX
    Analysis results for archives are now cached in some cases that should have worked but did not.

  • ENHANCEMENT (#16)
    The variable platform-provides can now be used to describe system packages in terms of provided features, thus interfacing with the automatically analyzed or manually declared required features of projects. For example, the following entry could be used to describe the Protocol Buffers C++ Library:

    platform-provides:
    - name: protocol-buffers-cpp-library
      variables:
        extra-provides:
        - nature: cmake
          target: ProtocolBuffers
        platform-requires:
          ubuntu:
            packages:
            - libprotobuf-dev

    A project version requiring cmake:ProtocolBuffers would then automatically gain libprotobuf-dev as a platform requirement.

  • ENHANCEMENT
    Printing of error and warning messages has been improved:

    • Error and warning messages are now printed in color if it makes sense in the current context (apparently running interactively, non-dumb terminal)
    • Messages should no longer be printed twice
  • BUGFIX
    ssh sub-processes (started by git ) should no longer hang when encountering issues during host key verification.

  • ENHANCEMENT (#15)
    When processing information representing a person, names and email address explicitly specified in the name, aliases and identities sections of the corresponding person recipe take precedence over information collected during automatic analysis of project repositories.

  • ENHANCEMENT (#11)
    The install-jenkins command now accepts a profile option which can be used to choose among different Jenkins configuration profiles. The following profiles are currently built in:

    • single-user (default): the Jenkins installation will be used by a single user without additional slaves
    • local-docker: the Jenkins installation will use the Docker daemon on the local machine to dynamically create slaves