wooga / atlas-wdk-unity

Gradle Plugin to help wdk package development
https://wooga.github.io/atlas-wdk-unity
Apache License 2.0
0 stars 2 forks source link

Adds new WDK release plugin for UPM packages #57

Closed Joaquimmnetto closed 1 year ago

Joaquimmnetto commented 2 years ago

Description

Big release including a new inner plugin WDKPublishPlugin. It is an atlas-release replacement for UPM WDKs, so it orchestrates a bunch of plugins to create github releases and publish UPM packages.

WDK Publish Plugin

WDKPublishPlugin is intended to be a long-term replacement of atlas-release, but for now it has to be able to work alongside it. So, WDKPublishPlugin needs to work as a subproject, given that it will be used at first as an inner project release with the old paket releases still in the root project.

Similar to atlas-release, wdk-publish integrates with UPMPlugin to publish an UPMPackage, if an UPM project is present (directory with a package.json file) in its subdirectories. It generates github release notes and github releases as well. To avoid conflicts with atlas-release wdk-publish only creates a github release if a release for the same version doesn't exists. Else, it just skips the github release process alltogether.

The project versioning is commanded by whichever plugin is in the root project. If wdk-publish is the root, it inserts its own versioning configuration through atlas-version. Else, if it tries to fetch a version configuration from the root project, applying the plugin there if it's not applied yet.

This means that when used together with atlas-release, the version that will be used will be the one generated by it. However, for specifically for tagging UPM releases in artifactory, wdk-publish always forces a semver2 version, generating one itself if the root VersionPlugin configuration does not uses it. For github tags and releases and everything else, (like the set project.version value) will still be the ones set by the root project, ie. atlas-release.

WDKPublishPlugin has little in terms of configuration, as it is a plugin meant to skew configurations to wdk-specific bias:

wdkPublish {
    releaseNotesFile = //RegularFile, file where the generated github release notes will be stored in. Defaults to 'build/outputs/release-notes.md'
}

All its other functionalities can be configured by its applied plugins like atlas-upm-artifactory, atlas-version, atlas-github, etcetera.

Changes

Joaquimmnetto commented 1 year ago

PR was split into different projects