diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 0000000..a040d4b --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,76 @@ +name: Main build + +on: + workflow_dispatch: + push: + branches: [main] + +env: + REGISTRY: ghcr.io + NAMESPACE: galasa-dev + BRANCH: main + +jobs: + build-gradle: + name: Build Gradle source code and Docker image for development Maven registry + runs-on: ubuntu-latest + steps: + - name: Checkout Code + uses: actions/checkout@v4 + + - name: Setup JDK + uses: actions/setup-java@v4 + with: + java-version: '11' + distribution: 'semeru' + + # The githash is added to the development Maven registry to show what commit level it contains + - name: Print githash + run: | + echo $GITHUB_SHA > ./gradle.githash + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v3 + with: + gradle-version: 6.9.2 + + - name: Build Gradle source code + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + ORG_GRADLE_PROJECT_signingKeyId: ${{ secrets.GPG_KEYID }} + ORG_GRADLE_PROJECT_signingKey: ${{ secrets.GPG_KEY }} + ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.GPG_PASSPHRASE }} + run: | + gradle check publish --scan \ + -PsourceMaven=https://repo.maven.apache.org/maven2/ \ + -PcentralMaven=https://repo.maven.apache.org/maven2/ \ + -PtargetMaven=${{ github.workspace }}/repo \ + -PjacocoEnabled=true \ + -PisMainOrRelease=true + + - name: Login to Github Container Registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata for Gradle image + id: metadata + uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 + with: + images: ${{ env.REGISTRY }}/${{ env.NAMESPACE }}/gradle-maven-artefacts + + - name: Build Gradle image for development Maven registry + id: build + uses: docker/build-push-action@v5 + with: + context: . + file: dockerfiles/dockerfile.gradle + push: true + tags: ${{ steps.metadata.outputs.tags }} + labels: ${{ steps.metadata.outputs.labels }} + # dockerRepository will change to ghcr.io once the Wrapping image is available there + build-args: | + dockerRepository=harbor.galasa.dev + tag=${{ env.BRANCH }} diff --git a/.github/workflows/pr-build.yaml b/.github/workflows/pr-build.yaml new file mode 100644 index 0000000..8c4d1e5 --- /dev/null +++ b/.github/workflows/pr-build.yaml @@ -0,0 +1,63 @@ +name: PR build + +on: + workflow_dispatch: + pull_request: + branches: [main] + +env: + REGISTRY: ghcr.io + NAMESPACE: galasa-dev + +jobs: + build-gradle: + name: Build Gradle source code and Docker image + runs-on: ubuntu-latest + + steps: + - name: Checkout Code + uses: actions/checkout@v4 + + - name: Setup JDK + uses: actions/setup-java@v4 + with: + java-version: '11' + distribution: 'semeru' + + # The githash is added to the development Maven registry to show what commit level it contains + - name: Print githash + run: | + echo $GITHUB_SHA > ./gradle.githash + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v3 + with: + gradle-version: 6.9.2 + + - name: Build Gradle source code + run: | + gradle check publish \ + -PsourceMaven=https://repo.maven.apache.org/maven2/ \ + -PcentralMaven=https://repo.maven.apache.org/maven2/ \ + -PtargetMaven=${{ github.workspace }}/repo + + - name: Extract metadata for Gradle image + id: metadata + uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 + with: + images: ${{ env.REGISTRY }}/${{ env.NAMESPACE }}/gradle-maven-artefacts + + # This Docker image will not be used, it's just to test that the Docker build should work + - name: Build Gradle image + id: build + uses: docker/build-push-action@v5 + with: + context: . + file: dockerfiles/dockerfile.gradle + push: false + tags: ${{ steps.metadata.outputs.tags }} + labels: ${{ steps.metadata.outputs.labels }} + # dockerRepository will change to ghcr.io once the Wrapping image is available there + build-args: | + dockerRepository=harbor.galasa.dev + tag=main \ No newline at end of file diff --git a/build.gradle b/build.gradle index f765d5d..ebae2a4 100644 --- a/build.gradle +++ b/build.gradle @@ -12,6 +12,10 @@ group = "dev.galasa" version = "0.33.0" signing { + def signingKeyId = findProperty("signingKeyId") + def signingKey = findProperty("signingKey") + def signingPassword = findProperty("signingPassword") + useInMemoryPgpKeys(signingKeyId, signingKey, signingPassword) sign publishing.publications } @@ -27,7 +31,7 @@ allprojects { repositories { mavenLocal() maven { - url "https://development.galasa.dev/main/maven-repo/wrapping/" + url "https://maven.pkg.github.com/galasa-dev/wrapping/" } gradlePluginPortal() mavenCentral() @@ -91,15 +95,11 @@ publishing { if ("$targetMaven".startsWith('http')) { credentials { - username System.getenv('MAVENUSERNAME') - password System.getenv('MAVENPASSWORD') + username System.getenv("GITHUB_ACTOR") + password System.getenv("GITHUB_TOKEN") } } } } -} - - - - +} \ No newline at end of file diff --git a/dev.galasa.gradle.impl/build.gradle b/dev.galasa.gradle.impl/build.gradle index f65853d..406caa7 100644 --- a/dev.galasa.gradle.impl/build.gradle +++ b/dev.galasa.gradle.impl/build.gradle @@ -20,7 +20,7 @@ repositories { dependencies { implementation 'org.apache.felix:org.apache.felix.bundlerepository:2.0.10' implementation 'org.reflections:reflections:0.9.11' - implementation 'com.google.code.gson:gson:2.8.5' + implementation 'com.google.code.gson:gson:2.10.1' testImplementation 'junit:junit:4.13' implementation project(':dev.galasa.plugin.common') implementation project(':dev.galasa.plugin.common.impl') @@ -95,6 +95,10 @@ tasks.withType(Javadoc) { signing { + def signingKeyId = findProperty("signingKeyId") + def signingKey = findProperty("signingKey") + def signingPassword = findProperty("signingPassword") + useInMemoryPgpKeys(signingKeyId, signingKey, signingPassword) sign publishing.publications } @@ -150,8 +154,8 @@ publishing { if ("$targetMaven".startsWith('http')) { credentials { - username System.getenv('MAVENUSERNAME') - password System.getenv('MAVENPASSWORD') + username System.getenv("GITHUB_ACTOR") + password System.getenv("GITHUB_TOKEN") } } } diff --git a/dev.galasa.plugin.common.impl/build.gradle b/dev.galasa.plugin.common.impl/build.gradle index 2ee0613..c9a7e0d 100644 --- a/dev.galasa.plugin.common.impl/build.gradle +++ b/dev.galasa.plugin.common.impl/build.gradle @@ -42,6 +42,10 @@ tasks.withType(Javadoc) { signing { + def signingKeyId = findProperty("signingKeyId") + def signingKey = findProperty("signingKey") + def signingPassword = findProperty("signingPassword") + useInMemoryPgpKeys(signingKeyId, signingKey, signingPassword) sign publishing.publications } @@ -98,8 +102,8 @@ publishing { if ("$targetMaven".startsWith('http')) { credentials { - username System.getenv('MAVENUSERNAME') - password System.getenv('MAVENPASSWORD') + username System.getenv("GITHUB_ACTOR") + password System.getenv("GITHUB_TOKEN") } } } diff --git a/dev.galasa.plugin.common.test/build.gradle b/dev.galasa.plugin.common.test/build.gradle index 0d5090e..7b31e5c 100644 --- a/dev.galasa.plugin.common.test/build.gradle +++ b/dev.galasa.plugin.common.test/build.gradle @@ -41,6 +41,10 @@ tasks.withType(Javadoc) { signing { + def signingKeyId = findProperty("signingKeyId") + def signingKey = findProperty("signingKey") + def signingPassword = findProperty("signingPassword") + useInMemoryPgpKeys(signingKeyId, signingKey, signingPassword) sign publishing.publications } @@ -98,8 +102,8 @@ publishing { if ("$targetMaven".startsWith('http')) { credentials { - username System.getenv('MAVENUSERNAME') - password System.getenv('MAVENPASSWORD') + username System.getenv("GITHUB_ACTOR") + password System.getenv("GITHUB_TOKEN") } } } diff --git a/dev.galasa.plugin.common/build.gradle b/dev.galasa.plugin.common/build.gradle index 06d2ae1..d9a6c8f 100644 --- a/dev.galasa.plugin.common/build.gradle +++ b/dev.galasa.plugin.common/build.gradle @@ -70,6 +70,10 @@ tasks.withType(Javadoc) { } signing { + def signingKeyId = findProperty("signingKeyId") + def signingKey = findProperty("signingKey") + def signingPassword = findProperty("signingPassword") + useInMemoryPgpKeys(signingKeyId, signingKey, signingPassword) sign publishing.publications } @@ -122,8 +126,8 @@ publishing { if ("$targetMaven".startsWith('http')) { credentials { - username System.getenv('MAVENUSERNAME') - password System.getenv('MAVENPASSWORD') + username System.getenv("GITHUB_ACTOR") + password System.getenv("GITHUB_TOKEN") } } } diff --git a/dockerfiles/dockerfile.gradle b/dockerfiles/dockerfile.gradle new file mode 100644 index 0000000..68f7655 --- /dev/null +++ b/dockerfiles/dockerfile.gradle @@ -0,0 +1,6 @@ +ARG dockerRepository +ARG tag +FROM ${dockerRepository}/galasadev/galasa-wrapping:${tag} + +COPY repo/ /usr/local/apache2/htdocs/ +COPY gradle.githash /usr/local/apache2/htdocs/gradle.githash \ No newline at end of file