Skip to content

Hosts GitHub Action workflows and their descriptions used by the build projects at this organization

License

Notifications You must be signed in to change notification settings

JavaPOSWorkingGroup/javapos-workflow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JavaPOS Development Process

This repository hosts GitHub Action workflows used by the build projects at this organization. The main idea is to establish common workflows used across all builds as described at Reusing workflows.

Development process

The development process for adapting to a new UnifiedPOS version is as follows:

  1. Add the "-SNAPSHOT" suffix to every version definition at
  2. Add new category types as control interface types respectively new properties and new method to those control interface types at javapos-contracts/src/main/java/jpos
  3. Publish the javapos-contracts library as pre-release on GitHub. This will trigger an Gradle build via GitHub Action which publishes the snapshot library ("-SNAPSHOT" suffix required!) to Maven Central's snapshot repository.
  4. Run the Xtend based code generator from javapos-code-generators to generate
  5. Run the device control JUnit tests just generated.
  6. Publish the javapos-controls library as pre-release on GitHub. This will trigger an Gradle build via GitHub Action which publishes the snapshot library ("-SNAPSHOT" suffix required!) to Maven Central's snapshot repository.
  7. Check all components are working well at external integration projects.
  8. Publish releases of javapos-contracts and javapos-controls on GitHub (removing the "-SNAPSHOT" suffix at both) to get them published at the corresponding staging repository at Maven Central (Sonatype), check the content (especially the JAR contained MANIFEST and change-log files) and release it at the staging repository (a Nexus repository).
  9. Build the aggregation library at the javapos repository by referencing the 2 new released components.
  10. Publish a release of javapos to Maven Central (Sonatype)'s staging repository and release it from there after verification.

Note: The component javapos-config-loader is not UnifiedPOS version related (except, new categories are added) and normally does not need to be adapted in case of a new UnifiedPOS version. However, the same handling needs to be applied before it can be integrated into a new build version of javapos.

Handling of credentials

There are 4 credentials needed for releasing components to Maven Central which are maintained at organization's Action secrets settings page:

  • GPG_SIGNING_KEY -- the encrypted private key for JAR signing
  • GPG_SIGNING_PASSPHRASE -- the passphrase for decrypting the private key when signing JARs
  • SONATYPE_USERNAME -- the Sonatype user name for publishing to Maven Central
  • SONATYPE_PASSWORD -- the Sonatype password for publishing to Maven Central

GitHub Action workflows

All release relevant repositories are using organization workflows across all builds as described at Reusing workflows.

The JavaPOS organization workflows consist of 3 different workflows which get applied for different situations:

  • build.yml -- gets applied on each push of a branch, includes tests and JAR signing attempt and therefore requires credentials
  • check.yml -- gets applied on each Pull Request, for contributors; the JAR signing is skipped
  • release.yml -- gets applied when a released is published using GitHub's release mechanism on the repositories GibHub web site

About

Hosts GitHub Action workflows and their descriptions used by the build projects at this organization

Resources

License

Stars

Watchers

Forks

Packages

No packages published