Migrate CI/CD to GitHub Actions
* Remove JFrog plugin since it is supplied from CI/CD by Gradle init script * Remove Sonar and Jacoco since we don't manage those service anymore # Conflicts: # .github/release-files-spec.json # .github/workflows/central-sync-close.yml # .github/workflows/central-sync-create.yml # .github/workflows/central-sync-release.yml # .github/workflows/ci-snapshot.yml # .github/workflows/pr-build-workflow.yml # build.gradle
This commit is contained in:
34
.github/release-files-spec.json
vendored
34
.github/release-files-spec.json
vendored
@@ -1,34 +0,0 @@
|
||||
{
|
||||
"files": [
|
||||
{
|
||||
"aql": {
|
||||
"items.find": {
|
||||
"$and": [
|
||||
{
|
||||
"@build.name": "${buildname}",
|
||||
"@build.number": "${buildnumber}",
|
||||
"path": {
|
||||
"$match": "org*"
|
||||
}
|
||||
},
|
||||
{
|
||||
"$or": [
|
||||
{
|
||||
"name": {
|
||||
"$match": "*.pom"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": {
|
||||
"$match": "*.jar"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"target": "nexus/"
|
||||
}
|
||||
]
|
||||
}
|
||||
23
.github/workflows/central-sync-close.yml
vendored
23
.github/workflows/central-sync-close.yml
vendored
@@ -1,23 +0,0 @@
|
||||
name: Central Sync Close
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
stagedRepositoryId:
|
||||
description: "Staged repository id"
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
||||
# Request close promotion repo
|
||||
- uses: jvalkeal/nexus-sync@v0
|
||||
with:
|
||||
url: ${{ secrets.OSSRH_URL }}
|
||||
username: ${{ secrets.OSSRH_S01_TOKEN_USERNAME }}
|
||||
password: ${{ secrets.OSSRH_S01_TOKEN_PASSWORD }}
|
||||
staging-profile-name: ${{ secrets.OSSRH_STAGING_PROFILE_NAME }}
|
||||
staging-repo-id: ${{ github.event.inputs.stagedRepositoryId }}
|
||||
close: true
|
||||
58
.github/workflows/central-sync-create.yml
vendored
58
.github/workflows/central-sync-create.yml
vendored
@@ -1,58 +0,0 @@
|
||||
name: Central Sync Create
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
buildName:
|
||||
description: "Artifactory build name"
|
||||
required: true
|
||||
buildNumber:
|
||||
description: "Artifactory build number"
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
||||
# to get spec file in .github
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
# Setup jfrog cli
|
||||
- uses: jfrog/setup-jfrog-cli@v1
|
||||
with:
|
||||
version: 1.46.4
|
||||
env:
|
||||
JF_ARTIFACTORY_SPRING: ${{ secrets.JF_ARTIFACTORY_SPRING }}
|
||||
|
||||
# Extract build id from input
|
||||
- name: Extract Build Id
|
||||
run: |
|
||||
echo JFROG_CLI_BUILD_NAME="${{ github.event.inputs.buildName }}" >> $GITHUB_ENV
|
||||
echo JFROG_CLI_BUILD_NUMBER=${{ github.event.inputs.buildNumber }} >> $GITHUB_ENV
|
||||
|
||||
# Download released files
|
||||
- name: Download Release Files
|
||||
run: |
|
||||
jfrog rt download \
|
||||
--spec .github/release-files-spec.json \
|
||||
--spec-vars "buildname=$JFROG_CLI_BUILD_NAME;buildnumber=$JFROG_CLI_BUILD_NUMBER"
|
||||
|
||||
# Create checksums, signatures and create staging repo on central and upload
|
||||
- uses: jvalkeal/nexus-sync@v0
|
||||
id: nexus
|
||||
with:
|
||||
url: ${{ secrets.OSSRH_URL }}
|
||||
username: ${{ secrets.OSSRH_S01_TOKEN_USERNAME }}
|
||||
password: ${{ secrets.OSSRH_S01_TOKEN_PASSWORD }}
|
||||
staging-profile-name: ${{ secrets.OSSRH_STAGING_PROFILE_NAME }}
|
||||
create: true
|
||||
upload: true
|
||||
generate-checksums: true
|
||||
pgp-sign: true
|
||||
pgp-sign-passphrase: ${{ secrets.GPG_PASSPHRASE }}
|
||||
pgp-sign-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
|
||||
|
||||
# Print staging repo id
|
||||
- name: Print Staging Repo Id
|
||||
run: echo ${{ steps.nexus.outputs.staged-repository-id }}
|
||||
23
.github/workflows/central-sync-release.yml
vendored
23
.github/workflows/central-sync-release.yml
vendored
@@ -1,23 +0,0 @@
|
||||
name: Central Sync Release
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
stagedRepositoryId:
|
||||
description: "Staged repository id"
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
||||
# Request release promotion repo
|
||||
- uses: jvalkeal/nexus-sync@v0
|
||||
with:
|
||||
url: ${{ secrets.OSSRH_URL }}
|
||||
username: ${{ secrets.OSSRH_S01_TOKEN_USERNAME }}
|
||||
password: ${{ secrets.OSSRH_S01_TOKEN_PASSWORD }}
|
||||
staging-profile-name: ${{ secrets.OSSRH_STAGING_PROFILE_NAME }}
|
||||
staging-repo-id: ${{ github.event.inputs.stagedRepositoryId }}
|
||||
release: true
|
||||
17
.github/workflows/ci-snapshot.yml
vendored
Normal file
17
.github/workflows/ci-snapshot.yml
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
name: CI SNAPSHOT
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- 6.1.x
|
||||
|
||||
jobs:
|
||||
build-snapshot:
|
||||
uses: artembilan/spring-github-workflows/.github/workflows/spring-artifactory-gradle-snapshot.yml@main
|
||||
secrets:
|
||||
GRADLE_ENTERPRISE_CACHE_USER: ${{ secrets.GRADLE_ENTERPRISE_CACHE_USER }}
|
||||
GRADLE_ENTERPRISE_CACHE_PASSWORD: ${{ secrets.GRADLE_ENTERPRISE_CACHE_PASSWORD }}
|
||||
GRADLE_ENTERPRISE_SECRET_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_SECRET_ACCESS_KEY }}
|
||||
JF_ARTIFACTORY_SPRING: ${{ secrets.JF_ARTIFACTORY_SPRING }}
|
||||
47
.github/workflows/pr-build-workflow.yml
vendored
47
.github/workflows/pr-build-workflow.yml
vendored
@@ -1,47 +0,0 @@
|
||||
name: Pull Request build
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
services:
|
||||
|
||||
rabbitmq:
|
||||
image: rabbitmq:management
|
||||
ports:
|
||||
- 5672:5672
|
||||
- 15672:15672
|
||||
|
||||
steps:
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Set up JDK
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
distribution: 'temurin'
|
||||
java-version: 17
|
||||
|
||||
- name: Run Gradle
|
||||
uses: burrunan/gradle-cache-action@v1
|
||||
env:
|
||||
SI_FATAL_WHEN_NO_BEANFACTORY: true
|
||||
NO_REFERENCE_TASK: true
|
||||
with:
|
||||
debug: false
|
||||
concurrent: true
|
||||
gradle-build-scan-report: false
|
||||
arguments: checkAsciidocLinks check
|
||||
|
||||
- name: Capture Test Results
|
||||
if: failure()
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: test-results
|
||||
path: '*/build/reports/tests/**/*.*'
|
||||
retention-days: 3
|
||||
10
.github/workflows/pr-build.yml
vendored
Normal file
10
.github/workflows/pr-build.yml
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
name: Pull Request Build
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
build-pull-request:
|
||||
uses: artembilan/spring-github-workflows/.github/workflows/spring-gradle-pull-request-build.yml@main
|
||||
26
.github/workflows/release.yml
vendored
Normal file
26
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
name: Release
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
|
||||
run-name: Release current version for branch ${{ github.ref_name }}
|
||||
|
||||
jobs:
|
||||
release:
|
||||
permissions:
|
||||
actions: write
|
||||
|
||||
uses: artembilan/spring-github-workflows/.github/workflows/spring-artifactory-gradle-release.yml@main
|
||||
secrets:
|
||||
GH_ACTIONS_REPO_TOKEN: ${{ secrets.GH_ACTIONS_REPO_TOKEN }}
|
||||
GRADLE_ENTERPRISE_CACHE_USER: ${{ secrets.GRADLE_ENTERPRISE_CACHE_USER }}
|
||||
GRADLE_ENTERPRISE_CACHE_PASSWORD: ${{ secrets.GRADLE_ENTERPRISE_CACHE_PASSWORD }}
|
||||
GRADLE_ENTERPRISE_SECRET_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_SECRET_ACCESS_KEY }}
|
||||
JF_ARTIFACTORY_SPRING: ${{ secrets.JF_ARTIFACTORY_SPRING }}
|
||||
OSSRH_URL: ${{ secrets.OSSRH_URL }}
|
||||
OSSRH_S01_TOKEN_USERNAME: ${{ secrets.OSSRH_S01_TOKEN_USERNAME }}
|
||||
OSSRH_S01_TOKEN_PASSWORD: ${{ secrets.OSSRH_S01_TOKEN_PASSWORD }}
|
||||
OSSRH_STAGING_PROFILE_NAME: ${{ secrets.OSSRH_STAGING_PROFILE_NAME }}
|
||||
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
|
||||
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
|
||||
SPRING_RELEASE_SLACK_WEBHOOK_URL: ${{ secrets.SPRING_RELEASE_SLACK_WEBHOOK_URL }}
|
||||
43
.github/workflows/verify-staged-artifacts.yml
vendored
Normal file
43
.github/workflows/verify-staged-artifacts.yml
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
name: Verify Staged Artifacts
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
releaseVersion:
|
||||
description: 'Release version like 5.0.0-M1, 5.1.0-RC1, 5.2.0 etc.'
|
||||
required: true
|
||||
type: string
|
||||
|
||||
env:
|
||||
GRADLE_ENTERPRISE_CACHE_USERNAME: ${{ secrets.GRADLE_ENTERPRISE_CACHE_USER }}
|
||||
GRADLE_ENTERPRISE_CACHE_PASSWORD: ${{ secrets.GRADLE_ENTERPRISE_CACHE_PASSWORD }}
|
||||
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_SECRET_ACCESS_KEY }}
|
||||
JF_ENV_SPRING: ${{ secrets.JF_ARTIFACTORY_SPRING }}
|
||||
|
||||
jobs:
|
||||
verify-staged-with-samples:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
||||
- name: Checkout Samples Repo
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: spring-projects/spring-integration-samples
|
||||
show-progress: false
|
||||
|
||||
- name: Set up JDK
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
distribution: temurin
|
||||
java-version: 17
|
||||
cache: 'gradle'
|
||||
|
||||
- uses: jfrog/setup-jfrog-cli@v3
|
||||
|
||||
- name: Configure JFrog Cli
|
||||
run: jf gradlec --repo-resolve libs-staging-local
|
||||
|
||||
- name: Verify Spring Integration Samples against staged release
|
||||
run: |
|
||||
sed -i "1,/springIntegrationVersion.*/s/springIntegrationVersion.*/springIntegrationVersion='${{ inputs.releaseVersion }}'/" build.gradle
|
||||
jf gradle check
|
||||
38
build.gradle
38
build.gradle
@@ -1,6 +1,6 @@
|
||||
buildscript {
|
||||
ext.kotlinVersion = '1.8.10'
|
||||
ext.isCI = System.getenv('GITHUB_ACTION') || System.getenv('bamboo_buildKey')
|
||||
ext.isCI = System.getenv('GITHUB_ACTION')
|
||||
repositories {
|
||||
gradlePluginPortal()
|
||||
mavenCentral()
|
||||
@@ -15,11 +15,10 @@ buildscript {
|
||||
}
|
||||
|
||||
plugins {
|
||||
id 'org.sonarqube' version '4.4.1.3373'
|
||||
id 'base'
|
||||
id 'io.spring.nohttp' version '0.0.11' apply false
|
||||
id 'org.ajoberstar.grgit' version '4.1.1'
|
||||
id 'io.spring.dependency-management' version '1.1.4'
|
||||
id 'com.jfrog.artifactory' version '5.1.10' apply false
|
||||
id 'org.jetbrains.dokka' version "$kotlinVersion"
|
||||
id 'org.asciidoctor.jvm.pdf' version '3.3.2'
|
||||
id 'org.asciidoctor.jvm.convert' version '3.3.2'
|
||||
@@ -183,7 +182,6 @@ configure(javaProjects) { subproject ->
|
||||
apply plugin: 'java-library'
|
||||
apply plugin: 'eclipse'
|
||||
apply plugin: 'idea'
|
||||
apply plugin: 'jacoco'
|
||||
apply plugin: 'checkstyle'
|
||||
apply plugin: 'kotlin'
|
||||
apply plugin: 'kotlin-spring'
|
||||
@@ -242,10 +240,6 @@ configure(javaProjects) { subproject ->
|
||||
}
|
||||
}
|
||||
|
||||
jacoco {
|
||||
toolVersion = '0.8.10'
|
||||
}
|
||||
|
||||
// dependencies that are common across all java projects
|
||||
dependencies {
|
||||
if (!(subproject.name ==~ /.*-test.*/)) {
|
||||
@@ -319,23 +313,9 @@ configure(javaProjects) { subproject ->
|
||||
|
||||
compileKotlin.dependsOn updateCopyrights
|
||||
|
||||
jacocoTestReport {
|
||||
onlyIf { System.properties['sonar.host.url'] }
|
||||
dependsOn test
|
||||
reports {
|
||||
xml.required = true
|
||||
html.required = false
|
||||
}
|
||||
}
|
||||
|
||||
rootProject.tasks['sonarqube'].dependsOn jacocoTestReport
|
||||
|
||||
test {
|
||||
maxHeapSize = '2g'
|
||||
jvmArgs '-XX:+HeapDumpOnOutOfMemoryError'
|
||||
jacoco {
|
||||
destinationFile = file("$buildDir/jacoco.exec")
|
||||
}
|
||||
}
|
||||
|
||||
task testAll(type: Test, dependsOn: [':checkAsciidocLinks', 'check'])
|
||||
@@ -1143,20 +1123,6 @@ project('spring-integration-bom') {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sonar {
|
||||
skipProject = true
|
||||
}
|
||||
}
|
||||
|
||||
sonar {
|
||||
properties {
|
||||
property 'sonar.links.homepage', linkHomepage
|
||||
property 'sonar.links.ci', linkCi
|
||||
property 'sonar.links.issue', linkIssue
|
||||
property 'sonar.links.scm', linkScmUrl
|
||||
property 'sonar.links.scm_dev', linkScmDevConnection
|
||||
}
|
||||
}
|
||||
|
||||
task api(type: Javadoc) {
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
apply plugin: 'maven-publish'
|
||||
apply plugin: 'com.jfrog.artifactory'
|
||||
|
||||
tasks.withType(GenerateModuleMetadata) {
|
||||
enabled = false
|
||||
@@ -66,7 +65,3 @@ publishing {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
artifactoryPublish {
|
||||
publications(publishing.publications.mavenJava)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user