diff --git a/.github/GitHub-Actions.org b/.github/GitHub-Actions.org new file mode 100644 index 0000000..1c882b8 --- /dev/null +++ b/.github/GitHub-Actions.org @@ -0,0 +1,41 @@ +* Deploying using Github Actions + +** Actions definition: workflow/sonatype-deploy.yml + +When a GitHub Release is created, usually from a tag, this action will trigger. + +Using JDK8 the software will be packaged, including running any tests. + +Then the Deploy script will sign the created artifacts then deploy them according to the distributionManagement configuration in the `pom.xml`. + +** Deploy Script + +Uses a signing key provided from the GitHub Actions Secrets as an environment variable to sign the artifact(s) before they are then deployed. + +*** Inputs + +**** DEPLOY_PROJECTS (optional) + +An optional list of modules in a multi-module project to be deployed. If this value is not specified, then all projects will be deployed. + +** Maven Configuration + +Picks up the credentials from Environment variables for authenticating both with GPG and with the target deployment server (e.g. sonatype-nexus). + +*** Inputs + +**** NEXUS_USERNAME + +The username for your account on the deployment server. + +**** NEXUS_PASSWORD + +The password for your account on the deployement server. + +**** GPG_KEYNAME + +The key to use when signing. + +**** GPG_PASSPHRASE + +The passphrase to unlock the key to use when signing. diff --git a/.github/NOTES b/.github/NOTES new file mode 100644 index 0000000..64253c9 --- /dev/null +++ b/.github/NOTES @@ -0,0 +1,53 @@ +Add subkeys: + +???? + +Publish: + +gpg --send-keys --keyserver keyserver.ubuntu.com $KEYID +gpg --send-keys --keyserver pgp.mit.edu $KEYID +gpg --send-keys --keyserver pool.sks-keyservers.net $KEYID + +Backup: + +gpg --export --armor pcampbell@kemitix.net > gpg-key-backup.asc +gpg --export-secret-keys --armor pcampbell@kemitix.net >> gpg-key-backup.asc + +Export sub-keys: + +gpg --export-secret-subkeys pcampbell@kemitix.net > subkeys + +Remove master keys: + +gpg --delete-secret-key pcampbell@kemitix.net + +Import sub-keys and clean up: + +gpg --import subkeys + +shred --remove subkeys + +Delete any encryption subkeys: + +gpg --edit-key pcampbell@kemitix.net + +2 +delkey +save + +Change passphrase: + +gpg --edit-key pcampbell@kemitix.net +passwd +save + +Export keys: + +gpg --export --armor pcampbell@kemitix.net > codesigning.asc +gpg --export-secret-keys --armor pcampbell@kemitix.net >> codesigning.asc + +Encrypt keys: + +gpg --symmetric --cipher-algo AES256 codesigning.asc + +shred codesigning.asc diff --git a/.github/codesigning.asc.gpg b/.github/codesigning.asc.gpg new file mode 100644 index 0000000..f5c71e0 Binary files /dev/null and b/.github/codesigning.asc.gpg differ diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..a217b34 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,7 @@ +version: 2 +updates: +- package-ecosystem: maven + directory: "/" + schedule: + interval: daily + open-pull-requests-limit: 10 diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml new file mode 100644 index 0000000..146ec7d --- /dev/null +++ b/.github/release-drafter.yml @@ -0,0 +1,34 @@ +name-template: 'v$RESOLVED_VERSION 🌈' +tag-template: 'v$RESOLVED_VERSION' +categories: + - title: '🚀 Features' + labels: + - 'feature' + - 'enhancement' + - title: '🐛 Bug Fixes' + labels: + - 'fix' + - 'bugfix' + - 'bug' + - title: '🧰 Maintenance' + labels: + - 'chore' + - 'dependencies' +change-template: '- $TITLE @$AUTHOR (#$NUMBER)' +version-resolver: + major: + labels: + - 'major' + minor: + labels: + - 'minor' + patch: + labels: + - 'patch' + default: patch +exclude-labels: + - 'skip-changelog' +template: | + ## Changes + + $CHANGES diff --git a/.github/settings.xml b/.github/settings.xml new file mode 100644 index 0000000..8791e47 --- /dev/null +++ b/.github/settings.xml @@ -0,0 +1,28 @@ + + + + + sonatype-nexus-snapshots + ${env.NEXUS_USERNAME} + ${env.NEXUS_PASSWORD} + + + sonatype-nexus-staging + ${env.NEXUS_USERNAME} + ${env.NEXUS_PASSWORD} + + + + + gpg-sign + + true + + + gpg + ${env.GPG_KEYNAME} + ${env.GPG_PASSPHRASE} + + + + diff --git a/.github/stale.yaml b/.github/stale.yaml new file mode 100644 index 0000000..dc90e5a --- /dev/null +++ b/.github/stale.yaml @@ -0,0 +1,17 @@ +# Number of days of inactivity before an issue becomes stale +daysUntilStale: 60 +# Number of days of inactivity before a stale issue is closed +daysUntilClose: 7 +# Issues with these labels will never be considered stale +exemptLabels: + - pinned + - security +# Label to use when marking an issue as stale +staleLabel: wontfix +# Comment to post when marking an issue as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked as stale because it has not had + recent activity. It will be closed if no further activity occurs. Thank you + for your contributions. +# Comment to post when closing a stale issue. Set to `false` to disable +closeComment: false diff --git a/.github/workflows/build-maven.yml b/.github/workflows/build-maven.yml new file mode 100644 index 0000000..fd1129e --- /dev/null +++ b/.github/workflows/build-maven.yml @@ -0,0 +1,23 @@ +name: maven-build + +on: + push: + branches: '*' + pull_request: + branches: '*' + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + java: [ 8, 11, 14 ] + steps: + - uses: kamiazya/setup-graphviz@v1 + - uses: actions/checkout@v2 + - name: setup-jdk-${{ matrix.java }} + uses: actions/setup-java@v1 + with: + java-version: ${{ matrix.java }} + - name: build-jar + run: mvn -B install diff --git a/.github/workflows/deploy-sonatype.yml b/.github/workflows/deploy-sonatype.yml new file mode 100644 index 0000000..ea469cb --- /dev/null +++ b/.github/workflows/deploy-sonatype.yml @@ -0,0 +1,40 @@ +name: sonatype-deploy + +on: + push: + tags: + - "v*" + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: kamiazya/setup-graphviz@v1 + - uses: actions/checkout@v2 + - name: Set up JDK + uses: actions/setup-java@v1 + with: + java-version: 8 + - name: Build with Maven + run: mvn -B install + - name: Nexus Repo Publish + run: | + gpg --quiet \ + --batch \ + --yes \ + --decrypt \ + --passphrase="${{ secrets.GPG_PASSPHRASE }}" \ + --output codesigning.asc \ + .github/codesigning.asc.gpg + gpg --batch \ + --fast-import codesigning.asc + mvn --settings .github/settings.xml \ + -Dskip-Tests=true \ + -P release \ + -B \ + deploy + env: + NEXUS_USERNAME: ${{ secrets.NEXUS_USERNAME }} + NEXUS_PASSWORD: ${{ secrets.NEXUS_PASSWORD }} + GPG_KEYNAME: ${{ secrets.GPG_KEYNAME }} + GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }} diff --git a/.github/workflows/draft-release.yml b/.github/workflows/draft-release.yml new file mode 100644 index 0000000..f3d4750 --- /dev/null +++ b/.github/workflows/draft-release.yml @@ -0,0 +1,14 @@ +name: draft-release + +on: + push: + branches: + - master + +jobs: + update_draft_release: + runs-on: ubuntu-latest + steps: + - uses: release-drafter/release-drafter@v5.11.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore index 241b5c1..49be06a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +*.iml +.idea/ /target test.epub nb-configuration.xml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index b5711c5..0000000 --- a/.travis.yml +++ /dev/null @@ -1,20 +0,0 @@ -language: java -jdk: - - oraclejdk8 - - oraclejdk7 - -env: - global: - # The next declaration is the encrypted COVERITY_SCAN_TOKEN, created - # via the "travis encrypt" command using the project repo's public key - - secure: "kuMEP/lj5qM4NpEjR+jxLcJIyc7XGWI74FU2gwzMaM0/9HzX8LI2qk1NfqIc5jf1K6jPrLa4bBfMENluaVMizWisM5ShxrRJB9djm0G4rXeyBsmdSsrkmbjxxjqStPwunykVn8Npo5lZsetfRYCdjzSwiY9F/wKLjrwn+nq9YvZV3B3dOVS5ZCAPn0ZugqUAvYtSLX87N3q2SOowHRc8mkQ1MqTsRFC07H2rdo6qAcCROsVLhmMKRFSk/jPwFYPMFKYuDlwMEj/reqqJ0KpPoJ3qu9FPmHDwhyWwVl/T+eZEf6bJ0Q5BjWeXLgzgqaytrQX9p8x2dAYYBInTvH1zpeAoOB8vMAdKm7kcuLE5ovVmuq95akQ0Qe41mcx2f6JQ2kMRfcxpWLQhcfvoWNSCszmAfVd9fhQUCwqOgE68nJmSZcp5xR1VcG5KV7pKj9coTGOin1vH/lNdAe1OcK9RlwkC4TbEdtaAf5UVsb0tMBn6o9MIs29dViPDPQ14YoXJb89UpkypYzDqLst/557CmOf7Uw8QjgPkQziKS2/gZpihhoZPzT0N5hShteHQGBN+rhBxLDFfT+NxVm6izzKumIp8jPGiYoosr+pDwN3K7smgG+V1T8iy8EVUBXpjT/3AQTxgDI4ZwHr9+0dQm0shgdRJO/GITMx/v6076e657i8=" - -addons: - coverity_scan: - project: - name: "OpenCollabZA/epub-creator" - description: "Build submitted via Travis CI" - notification_email: samuel@opencollab.co.za - build_command_prepend: "mvn clean" - build_command: "mvn -DskipTests=true compile" - branch_pattern: coverity_scan diff --git a/README.md b/README.md index 7c16998..f730d15 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,16 @@ # epub-creator -[![epub-creator version](https://img.shields.io/badge/epub--creator-v1.0.0-green.svg?style=flat)](http://semver.org) [![WTFPL license](http://img.shields.io/badge/License-MIT-blue.svg)](http://opensource.org/licenses/MIT) [![Build Status](https://travis-ci.org/OpenCollabZA/epub-creator.svg)](https://travis-ci.org/OpenCollabZA/epub-creator) [![Coverity Scan Build Status](https://scan.coverity.com/projects/8384/badge.svg)](https://scan.coverity.com/projects/opencollabza-epub-creator) + +![GitHub release (latest by date)]( +https://img.shields.io/github/v/release/kemitix/epub-creator?style=for-the-badge) +![GitHub Release Date]( +https://img.shields.io/github/release-date/kemitix/epub-creator?style=for-the-badge) + +[![Nexus]( +https://img.shields.io/nexus/r/https/oss.sonatype.org/net.kemitix/epub-creator.svg?style=for-the-badge)]( +https://oss.sonatype.org/content/repositories/releases/net/kemitix/epub-creator/) +[![Maven-Central]( +https://img.shields.io/maven-central/v/net.kemitix/epub-creator.svg?style=for-the-badge)]( +https://search.maven.org/search?q=g:net.kemitix%20a:epub-creator) # Java EPUB3 creator API @@ -16,7 +27,7 @@ Create EPUB3 standard ebooks. You will need -1. [Java 7+](http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html) +1. Java 8+ 2. [Maven 3+](https://maven.apache.org/download.cgi) ``` diff --git a/pom.xml b/pom.xml index b79da26..ff99609 100644 --- a/pom.xml +++ b/pom.xml @@ -1,22 +1,32 @@ 4.0.0 + + + kemitix-parent + net.kemitix + 5.3.0 + + + coza.opencollab.epub epub-creator - 1.0.2-SNAPSHOT - jar + 1.0.2 - scm:git:git@github.com:OpenCollabZA/epub-creator.git - scm:git:git@github.com:OpenCollabZA/epub-creator.git - scm:git:git@github.com:OpenCollabZA/epub-creator.git - HEAD - + scm:git:git@github.com:kemitix/epub-creator.git + scm:git:git@github.com:kemitix/epub-creator.git + scm:git:git@github.com:kemitix/epub-creator.git + HEAD + UTF-8 - 1.7 - 1.7 + 1.8 + 1.8 + + 2.13 + 2.8.0 @@ -47,51 +57,24 @@ - org.apache.maven.plugins - maven-release-plugin - 2.5.3 + io.repaint.maven + tiles-maven-plugin + ${tiles-maven-plugin.version} + true + + + net.kemitix.tiles:maven-plugins:${kemitix-tiles.version} + net.kemitix.tiles:enforcer:${kemitix-tiles.version} + net.kemitix.tiles:compiler-jdk-8:${kemitix-tiles.version} + + + net.kemitix.tiles:testing:${kemitix-tiles.version} + + + + - - - - opencollab-maven-public-releases - OPENCOLLAB public releases repository - https://nexus3.opencollab.co.za/repository/opencollab-maven-public-releases - - - opencollab-maven-public-snapshots - OPENCOLLAB public snaphots repository - https://nexus3.opencollab.co.za/repository/opencollab-maven-public-snapshots - - - - - releases - - - - org.sonatype.plugins - nexus-staging-maven-plugin - 1.5.1 - - - default-deploy - deploy - - deploy - - - - - nexus-releases - https://nexus3.opencollab.co.za/repository/opencollab-maven-public-releases - true - - - - - - + diff --git a/pom.xml.releaseBackup b/pom.xml.releaseBackup deleted file mode 100644 index 8d5063e..0000000 --- a/pom.xml.releaseBackup +++ /dev/null @@ -1,97 +0,0 @@ - - - 4.0.0 - coza.opencollab.epub - epub-creator - 1.0.1-SNAPSHOT - jar - - - scm:git:francois-opencollab@github.com:OpenCollabZA/epub-creator.git - scm:git:francois-opencollab@github.com:OpenCollabZA/epub-creator.git - scm:git:francois-opencollab@github.com:OpenCollabZA/epub-creator.git - HEAD - - - - UTF-8 - 1.7 - 1.7 - - - - - junit - junit - 4.10 - test - - - net.sourceforge.htmlcleaner - htmlcleaner - 2.8 - - - commons-io - commons-io - 2.4 - - - commons-collections - commons-collections - 3.2.1 - - - - - - - - org.apache.maven.plugins - maven-release-plugin - 2.5.3 - - - - - - - opencollab-maven-public-releases - OPENCOLLAB public releases repository - https://nexus3.opencollab.co.za/repository/opencollab-maven-public-releases - - - opencollab-maven-public-snapshots - OPENCOLLAB public snaphots repository - https://nexus3.opencollab.co.za/repository/opencollab-maven-public-snapshots - - - - - releases - - - - org.sonatype.plugins - nexus-staging-maven-plugin - 1.5.1 - - - default-deploy - deploy - - deploy - - - - - nexus-releases - https://nexus3.opencollab.co.za/repository/opencollab-maven-public-releases - true - - - - - - - diff --git a/release.properties b/release.properties deleted file mode 100644 index 96dada1..0000000 --- a/release.properties +++ /dev/null @@ -1,18 +0,0 @@ -#release configuration -#Wed Nov 06 00:48:36 SAST 2019 -project.scm.coza.opencollab.epub\:epub-creator.tag=HEAD -project.scm.coza.opencollab.epub\:epub-creator.developerConnection=scm\:git\:git@github.com\:OpenCollabZA/epub-creator.git -scm.tagNameFormat=@{project.artifactId}-@{project.version} -project.scm.coza.opencollab.epub\:epub-creator.url=scm\:git\:git@github.com\:OpenCollabZA/epub-creator.git -scm.tag=epub-creator-1.0.1 -pushChanges=true -scm.url=scm\:git\:git@github.com\:OpenCollabZA/epub-creator.git -preparationGoals=clean verify -remoteTagging=true -projectVersionPolicyId=default -scm.commentPrefix=[maven-release-plugin] -project.scm.coza.opencollab.epub\:epub-creator.connection=scm\:git\:git@github.com\:OpenCollabZA/epub-creator.git -project.dev.coza.opencollab.epub\:epub-creator=1.0.2-SNAPSHOT -project.rel.coza.opencollab.epub\:epub-creator=1.0.1 -exec.snapshotReleasePluginAllowed=false -completedPhase=scm-commit-release