diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 10d829c2ca..a3ed49c0e5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,6 +1,13 @@ name: build -on: [push, pull_request] +on: + pull_request: {} + + push: + branches: + - '**' + tags-ignore: + - '**' env: GRADLE_OPTS: "-Dorg.gradle.jvmargs=-Xmx4g -Dorg.gradle.daemon=false -Dkotlin.incremental=false" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000000..45fd34924a --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,63 @@ +name: release + +on: + push: + tags: + - '**' + +env: + GRADLE_OPTS: "-Dorg.gradle.jvmargs=-Xmx4g -Dorg.gradle.daemon=false -Dkotlin.incremental=false" + +jobs: + release: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Configure JDK + uses: actions/setup-java@v3 + with: + distribution: 'zulu' + java-version: 17 + + - name: Publish Artifacts + run: ./gradlew -p paparazzi publishMavenPublicationToMavenCentralRepository paparazzi-gradle-plugin:publishPluginMavenPublicationToMavenCentralRepository paparazzi-gradle-plugin:publishPaparazziPluginMarkerMavenPublicationToMavenCentralRepository --no-parallel + env: + ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.SONATYPE_NEXUS_USERNAME }} + ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.SONATYPE_NEXUS_PASSWORD }} + ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.ARTIFACT_SIGNING_PRIVATE_KEY }} + + - name: Extract release notes + id: release_notes + uses: ffurrer2/extract-release-notes@v1 + + - name: Create release + uses: softprops/action-gh-release@v1 + with: + body: ${{ steps.release_notes.outputs.release_notes }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: 3.8 + + - name: Prep mkdocs + run: .github/workflows/prepare_mkdocs.sh + + - name: Build mkdocs + run: | + pip3 install -r .github/workflows/requirements.txt + mkdocs build + + - name: Deploy docs to website + if: success() + uses: JamesIves/github-pages-deploy-action@releases/v3 + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BRANCH: gh-pages + FOLDER: site + CLEAN: true diff --git a/RELEASING.md b/RELEASING.md index d246c0997f..e3a156e624 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -1,26 +1,16 @@ -Releasing -======== +# Releasing - 1. Change the version in `gradle.properties` to a non-SNAPSHOT version. - 2. Update the `CHANGELOG.md` for the impending release. - 3. Update the `README.md` with the new version. + 1. Update `VERSION_NAME` in `gradle.properties` to the release (non-SNAPSHOT) version. + 2. Update `CHANGELOG.md` for the impending release. + 1. Change the `Unreleased` header to the version, appending today's date + 2. Add a new `Unreleased` section to the top. + 3. Add a link URL at the bottom to ensure the impending release header link works. + 4. Update the `Unreleased` link URL to compare this new version...HEAD + 3. Update `README.md` with the new version. 4. `git commit -am "Prepare version X.Y.Z"` (where X.Y.Z is the new version) - 5. `./gradlew -p paparazzi clean publishMavenPublicationToMavenCentralRepository paparazzi-gradle-plugin:publishPluginMavenPublicationToMavenCentralRepository paparazzi-gradle-plugin:publishPaparazziPluginMarkerMavenPublicationToMavenCentralRepository --no-parallel` - 6. Visit [Sonatype Nexus](https://oss.sonatype.org/) and promote the artifacts. - 7. `git tag -a X.Y.Z -m "X.Y.Z"` (where X.Y.Z is the new version) - 8. Update the `gradle.properties` to the next SNAPSHOT version. - 9. `git commit -am "Prepare next development version"` - 10. `git push && git push --tags` - 11. Update the sample app to the release version and send a PR. + 5. `git tag -a X.Y.Z -m "X.Y.Z"` (where X.Y.Z is the new version) + 6. Update `VERSION_NAME` in `gradle.properties` to the next SNAPSHOT version. + 7. `git commit -am "Prepare next development version"` + 8. `git push && git push --tags` - -If step 5 or 6 fails, drop the Sonatype repo, fix the problem, commit, and start again at step 4. - - -Prerequisites -------------- - -In `~/.gradle/gradle.properties`, set the following: - - * `mavenCentralUsername` - Sonatype username for releasing to `app.cash`. - * `mavenCentralPassword` - Sonatype password for releasing to `app.cash`. +This will trigger a GitHub Action workflow which will create a GitHub release and upload the release artifacts to Maven Central.