Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Workflow & build touch-ups #66

Merged
merged 31 commits into from
Feb 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
4ab0ba2
Clean-up build conventions
mizosoft Feb 4, 2024
df27ef1
Add aggregate test report task
mizosoft Feb 4, 2024
7df15a2
Extract CI jobs
mizosoft Feb 5, 2024
e5c2a40
Delete analysis.yml
mizosoft Feb 5, 2024
2c77642
Trigger
mizosoft Feb 5, 2024
849bbb7
Add missed ci.yml
mizosoft Feb 5, 2024
f2ab602
Remove space
mizosoft Feb 5, 2024
1fc081f
Add quotes to escape special character
mizosoft Feb 5, 2024
4af75eb
Allow manually running workflow (for now)
mizosoft Feb 5, 2024
dcfef3f
Relativize path
mizosoft Feb 5, 2024
9f7e7f7
Invert quotes
mizosoft Feb 5, 2024
bccfc2d
Skip java 21 (for now)
mizosoft Feb 5, 2024
c8e8bf0
Use jdk11-compatible javafx
mizosoft Feb 9, 2024
8cf533c
Fix IDE warning by specifying type explicitly
mizosoft Feb 9, 2024
4755775
Build touch-ups
mizosoft Feb 9, 2024
e9b6873
Remove quotes
mizosoft Feb 9, 2024
d15b855
Fix typo
mizosoft Feb 9, 2024
3853ec7
Cleanup
mizosoft Feb 10, 2024
3277ca8
Use Version build model
mizosoft Feb 10, 2024
4ac4191
Add release jobs
mizosoft Feb 10, 2024
21f7983
Add job for publishing site
mizosoft Feb 10, 2024
c1cbaa6
Remove BASE_OS env
mizosoft Feb 10, 2024
8162043
Run javadoc on a more recent version
mizosoft Feb 10, 2024
46efbbe
Cleanup aggregateJavadoc task
mizosoft Feb 10, 2024
5993bb2
Update path in generate-docs.sh
mizosoft Feb 10, 2024
09a8a48
Correct input name
mizosoft Feb 10, 2024
3557a41
Update action versions
mizosoft Feb 10, 2024
f34d378
Add Java 21 in matrix
mizosoft Feb 10, 2024
da829c3
Use correct action repo
mizosoft Feb 10, 2024
5308ad3
Remove PR branch from publish-site.yml
mizosoft Feb 10, 2024
6d0eadd
Merge branch 'master' into refactor-workflows
mizosoft Feb 10, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 36 additions & 0 deletions .github/actions/gradle/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Setup & run Gradle

description: Setup Java & Gradle & optionally run a Gradle command

inputs:
java:
default: '21'
description: Java version
gradle-args:
required: false
description: Arguments to Gradle command (optional)

runs:
using: composite
steps:
- name: Setup Java ${{ inputs.java }}
id: setup-java
uses: actions/setup-java@v4
with:
java-version: ${{ inputs.java }}
distribution: temurin

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3

- name: Make gradlew executable
if: inputs.gradle-args != '' && (runner.os == 'linux' || runner.os == 'macOS')
shell: bash
run: chmod +x gradlew

- name: Run Gradle command
if: ${{ inputs.gradle-args }} != ''
env:
JAVA_HOME: ${{ steps.setup-gradle-jdk.outputs.path }}
shell: bash
run: ./gradlew ${{ inputs.gradle-args }}
100 changes: 100 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
name: Build

on: [ push, pull_request, workflow_dispatch ]

env:
BASE_JAVA: 11

jobs:
tests:
name: Test on ${{ matrix.os }} with Java ${{ matrix.java }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- ubuntu-latest
- windows-latest
- macos-latest
java: [ 11, 21 ]
steps:
- uses: actions/checkout@v4

- name: Setup Redis
shell: bash
# It seems there's no straightforward way to install a recent redis version on Windows, so
# let's only consider macOS & Ubuntu for RedisStore tests.
run: |
if [[ "${{ matrix.os }}" == macos* ]]
then
brew install redis
elif [[ "${{ matrix.os }}" == ubuntu* ]]
then
chmod +x install-redis-ubuntu.sh
./install-redis-ubuntu.sh
fi

- name: Run tests
uses: ./.github/actions/gradle
if: "!startsWith(matrix.os, 'macos')"
with:
java: ${{ matrix.java }}
gradle-args: check

# Brotli is not currently supported on macOS so related tests are excluded there.
- name: Run tests
uses: ./.github/actions/gradle
if: startsWith(matrix.os, 'macos')
with:
java: ${{ matrix.java }}
gradle-args: check -x :methanol-brotli:test

- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: ${{ matrix.os }}-java-${{ matrix.java }}-test-results
path: |
**/build/test-results/
**/build/**/*.exec

coverage:
name: Upload coverage report
needs: tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Download test results
uses: actions/download-artifact@v4
with:
name: ubuntu-latest-java-${{ env.BASE_JAVA }}-test-results

- name: Generate coverage report
uses: ./.github/actions/gradle
env:
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
with:
java: ${{ env.BASE_JAVA }}
gradle-args: coveralls

snapshot-release:
name: Release snapshot
if: |
github.event_name == 'push'
&& github.ref_name == github.event.repository.default_branch
needs: tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Publish snapshot release artifacts
uses: ./github/actions/gradle
env:
ORG_GRADLE_PROJECT_nexusUsername: ${{ secrets.NEXUS_USERNAME }}
ORG_GRADLE_PROJECT_nexusPassword: ${{ secrets.NEXUS_PASSWORD }}
ORG_GRADLE_PROJECT_signingKeyId: ${{ secrets.SIGNING_KEY_ID }}
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.SIGNING_KEY }}
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.SIGNING_PASSWORD }}
with:
java: ${{ env.BASE_JAVA }}
gradle-args: publishToSonatype
128 changes: 0 additions & 128 deletions .github/workflows/main.yml

This file was deleted.

35 changes: 35 additions & 0 deletions .github/workflows/publish-site.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Publish site

on:
push:
branches: [ master ]

env:
BASE_JAVA: 11

jobs:
publish-site:
name: Publish site
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

# MkDocs needs python to run.
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.11.1

- name: Setup Gradle
uses: ./.github/actions/gradle
with:
java: 21 # Javadoc generation needs Java >= 12.

- name: Generate docs
run: chmod +x ./generate-docs.sh && ./generate-docs.sh

- name: Deploy site
uses: JamesIves/github-pages-deploy-action@4.1.1
with:
branch: gh-pages
folder: site
27 changes: 27 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Release

on:
release:
types: [ created ]

env:
BASE_JAVA: 11

jobs:
release:
name: Release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Publish release artifacts
uses: ./github/actions/gradle
env:
ORG_GRADLE_PROJECT_nexusUsername: ${{ secrets.NEXUS_USERNAME }}
ORG_GRADLE_PROJECT_nexusPassword: ${{ secrets.NEXUS_PASSWORD }}
ORG_GRADLE_PROJECT_signingKeyId: ${{ secrets.SIGNING_KEY_ID }}
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.SIGNING_KEY }}
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.SIGNING_PASSWORD }}
with:
java: ${{ env.BASE_JAVA }}
gradle-args: publishToSonatype closeAndReleaseSonatypeStagingRepository -PfinalRelease
18 changes: 13 additions & 5 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,29 +1,37 @@
import extensions.Version

plugins {
id("conventions.aggregate-coverage")
id("conventions.aggregate-javadoc")
id("conventions.aggregate-testing")
alias(libs.plugins.nexus.publish)
alias(libs.plugins.versions)
}

allprojects {
description = "Lightweight HTTP extensions for Java"
group = "com.github.mizosoft.methanol"
version = "1.8.0-SNAPSHOT"
version = Version(
major = 1,
minor = 8,
patch = 0,
release = if (project.hasProperty("finalRelease")) Version.Release.FINAL else Version.Release.SNAPSHOT
)

repositories {
mavenCentral()
}
}

nexusPublishing {
this.repositories {
repositories {
sonatype {
username.set(project.findProperty("nexusUsername")?.toString())
password.set(project.findProperty("nexusPassword")?.toString())
}
}
}

//tasks.register("clean") {
// delete(rootProject.buildDir)
//}
tasks.register("clean") {
delete(rootProject.layout.buildDirectory)
}
4 changes: 2 additions & 2 deletions buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ dependencies {
// See https://github.com/gradle/gradle/issues/15383.
implementation(files(libs.javaClass.superclass.protectionDomain.codeSource.location))

implementation(libs.javaparser)
implementation(libs.checkerframework.plugin)
implementation(libs.errorprone.plugin)
implementation(libs.nullaway.plugin)
implementation(libs.javaparser)
implementation(libs.coveralls)
implementation(libs.coveralls.plugin)
}
Loading