Skip to content

itsallcode/openfasttrace-gradle

main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

openfasttrace-gradle

Gradle plugin for the requirement tracing suite OpenFastTrace.

Project Information

Java CI with Gradle Sonarcloud Quality Gate Coverage

Usage

  1. Preconditions: Java 11 and Gradle 7.0

  2. Add plugin org.itsallcode.openfasttrace to your project:

    plugins {
      id "org.itsallcode.openfasttrace" version "1.1.0"
    }
  3. Configure your project, see examples

  4. Run

    ./gradlew traceRequirements
  5. Report is written to build/reports/tracing.txt by default.

Configuring the short tag importer

The short tag importer allows omitting artifact type and the covered artifact type. Optionally you can add a prefix to the item name, e.g. a common module name.

requirementTracing {
  tags {
    tag {
      paths = fileTree(dir: 'src/').include '*.impl.*'
      coveredItemNamePrefix = 'prefix'
      tagArtifactType = 'impl'
      coveredItemArtifactType = 'dsn'
    }
    tag {
      paths = fileTree(dir: 'src/').include '*.test.*'
      tagArtifactType = 'utest'
      coveredItemArtifactType = 'dsn'
    }
  }
}

As a benefit the tags are much shorter and contain only the name and revision:

// [[tagname:1]]

See multi-project/sub1 for a basic example.

Sharing requirements

In bigger setups you might want to share requirements between multiple projects.

Example: The Software Architecture Design project swad contains overall requirements that must be fulfilled by projects component-a and component-b.

  1. The swad project publishes its requirements as a zip file swad-req to a maven repository.
  2. Both components import these requirements and cover them in their Software Detailed Design (swdd).
  3. Both components publish their requirements as artefacts component-a-req and component-b-req to the shared maven repository.
  4. A regular job check that all requirements from swad are covered by tracing swad-req, component-a-req and component-b-req.

Publishing requirements to a maven repository

If you want to publish requirements to a maven repository you can use the following configuration in your build.gradle:

plugins {
  id 'org.itsallcode.openfasttrace'
  id 'maven-publish'
}

requirementTracing {
  inputDirectories = files('doc')
}

task requirementsZip(type: Zip, dependsOn: collectRequirements) {
 from collectRequirements.outputFile
 into '/'
}

publishing {
  publications {
    maven(MavenPublication) {
      artifact requirementsZip
    }
  }
}

See publish-config for a basic example.

Importing external requirements

You can import requirements from another project using the importedRequirements configuration. The requirements must be published to a repository as a zip file and can be referenced using the usual gradle dependency syntax:

repositories {
  maven {
    url "http://repo.example.com/maven2"
  }
}
requirementTracing {
  importedRequirements = ['com.example:swad:1.0.0@zip']
}

See dependency-config for a basic example.

Development

git clone https://github.com/itsallcode/openfasttrace-gradle-gradle.git
./gradlew check
# Test report: build/reports/tests/index.html

Use openfasttrace from source

To use openfasttrace from source during development:

  1. Clone https://github.com/itsallcode/openfasttrace to ../openfasttrace

  2. Create file gradle.properties with the following content:

    oftSourceDir = ../openfasttrace

Using eclipse

Import into eclipse using buildship plugin:

  1. Select File > Import... > Gradle > Gradle Project
  2. Click "Next"
  3. Select Project root directory
  4. Click "Finish"

Check if dependencies are up-to-date

./gradlew dependencyUpdates

Check dependencies for vulnerabilities

./gradlew ossIndexAudit

Run local sonar analysis

./gradlew clean sonar --info \
    -Dsonar.host.url=https://sonarcloud.io \
    -Dsonar.organization=itsallcode \
    -Dsonar.login=[token]

Publish to plugins.gradle.org

Preparations

Add your API key to ~/.gradle/gradle.properties:

gradle.publish.key = <key>
gradle.publish.secret = <secret>

Publish release

  1. Make sure that property oftSourceDir in file gradle.properties is commented out, i.e. OpenFastTrace is not used from source.

  2. Update version number in build.gradle and README.md.

  3. Add changes in new version to CHANGELOG.md.

  4. Commit and push changes.

  5. Run

    ./gradlew clean publishPlugins --info

    Plugin will be published at https://plugins.gradle.org/m2/org/itsallcode/openfasttrace/org.itsallcode.openfasttrace.gradle.plugin/

  6. Create a release in GitHub