diff --git a/.github/workflows/prevent-unauthorized-PRs.yml b/.github/workflows/prevent-unauthorized-PRs.yml deleted file mode 100644 index ea07368..0000000 --- a/.github/workflows/prevent-unauthorized-PRs.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Prevent Unauthorized PRs - -on: - pull_request: - types: - - opened - - reopened - - synchronize - - edited - -jobs: - check-membership: - runs-on: ubuntu-latest - steps: - - name: Check if user is a member of Microsoft organization - id: check_membership - run: | - USERNAME=${{ github.actor }} - USER_TOKEN=${{ secrets.USER_TOKEN }} - RESPONSE=$(curl -s -H "Authorization: token $USER_TOKEN" https://api.github.com/orgs/microsoft/memberships/$USERNAME) - if echo "$RESPONSE" | jq -e '.state == "active"' > /dev/null; then - echo "User is an active member of the Microsoft organization." - echo "::set-output name=member::true" - else - echo "User is not a member of the Microsoft organization." - echo "::set-output name=member::false" - exit 1 - fi \ No newline at end of file diff --git a/azure-pipelines-pr.yml b/azure-pipelines-pr.yml index f8bec87..3d197ee 100644 --- a/azure-pipelines-pr.yml +++ b/azure-pipelines-pr.yml @@ -1,4 +1,4 @@ -# Link To ADO Pipeline: https://dev.azure.com/microsoft/OS/_build?definitionId=176466 +# Link To ADO Pipeline: https://dev.azure.com/microsoft/OS/_build?definitionId=177937 trigger: batch: true branches: @@ -8,17 +8,26 @@ trigger: paths: include: - /* + +pr: + branches: + include: + - main + - release/* + paths: + include: + - /* + variables: - name: versionMajor - value: 2 - - template: ../../../Build/BuildNumber.yml + value: 3 + - name: versionMinor + value: 0 - name: versionBuild value: $[counter(format('{0}.{1}.{2}', variables['versionMajor'], variables['versionMinor'], eq(variables['build.reason'], 'PullRequest')), 1)] - - name: versionRevision - value: 0 - name: jdkVersion value: '1.17' -name: '$(versionMajor).$(versionMinor).$(versionBuild).$(versionRevision).$(build.reason)' +name: '$(versionMajor).$(versionMinor).$(versionBuild).$(build.reason)' resources: repositories: - repository: 1esPipelines @@ -66,7 +75,7 @@ extends: inputs: gradleWrapperFile: gradlew workingDirectory: $(Build.Repository.LocalPath) - options: '-PbuildNumber=$(versionMajor).$(versionMinor).$(versionBuild).$(versionRevision) -Pado_reader=$(ado_reader) -Pado_reader_mmxsdk_pass=$(ado_reader_mmxsdk_pass) -Pado_reader_ms_pass=$(ado_reader_ms_pass)' + options: '-PbuildNumber=$(versionMajor).$(versionMinor).$(versionBuild) -Pado_reader=$(ado_reader) -Pado_reader_mmxsdk_pass=$(ado_reader_mmxsdk_pass) -Pado_reader_ms_pass=$(ado_reader_ms_pass)' jdkVersionOption: $(jdkVersion) tasks: 'assembleRelease' publishJUnitResults: false @@ -76,7 +85,7 @@ extends: inputs: gradleWrapperFile: gradlew workingDirectory: $(Build.Repository.LocalPath) - options: '-PbuildNumber=$(versionMajor).$(versionMinor).$(versionBuild).$(versionRevision) -Pado_reader=$(ado_reader) -Pado_reader_mmxsdk_pass=$(ado_reader_mmxsdk_pass) -Pado_reader_ms_pass=$(ado_reader_ms_pass)' + options: '-PbuildNumber=$(versionMajor).$(versionMinor).$(versionBuild) -Pado_reader=$(ado_reader) -Pado_reader_mmxsdk_pass=$(ado_reader_mmxsdk_pass) -Pado_reader_ms_pass=$(ado_reader_ms_pass)' jdkVersionOption: $(jdkVersion) tasks: 'assembleDebug' publishJUnitResults: false @@ -109,7 +118,7 @@ extends: gradleWrapperFile: gradlew workingDirectory: $(Build.Repository.LocalPath) tasks: 'ktlintCheck' - options: '-PbuildNumber=$(versionMajor).$(versionMinor).$(versionBuild).$(versionRevision) -Pado_reader=$(ado_reader) -Pado_reader_mmxsdk_pass=$(ado_reader_mmxsdk_pass) -Pado_reader_ms_pass=$(ado_reader_ms_pass)' + options: '-PbuildNumber=$(versionMajor).$(versionMinor).$(versionBuild) -Pado_reader=$(ado_reader) -Pado_reader_mmxsdk_pass=$(ado_reader_mmxsdk_pass) -Pado_reader_ms_pass=$(ado_reader_ms_pass)' jdkVersionOption: $(jdkVersion) condition: succeededOrFailed() @@ -119,6 +128,6 @@ extends: gradleWrapperFile: gradlew workingDirectory: $(Build.Repository.LocalPath) tasks: 'detekt' - options: '-PbuildNumber=$(versionMajor).$(versionMinor).$(versionBuild).$(versionRevision) -Pado_reader=$(ado_reader) -Pado_reader_mmxsdk_pass=$(ado_reader_mmxsdk_pass) -Pado_reader_ms_pass=$(ado_reader_ms_pass)' + options: '-PbuildNumber=$(versionMajor).$(versionMinor).$(versionBuild) -Pado_reader=$(ado_reader) -Pado_reader_mmxsdk_pass=$(ado_reader_mmxsdk_pass) -Pado_reader_ms_pass=$(ado_reader_ms_pass)' jdkVersionOption: $(jdkVersion) condition: succeededOrFailed() \ No newline at end of file diff --git a/azure-pipelines-release.yml b/azure-pipelines-release.yml index 9497b9f..18a2369 100644 --- a/azure-pipelines-release.yml +++ b/azure-pipelines-release.yml @@ -1,23 +1,27 @@ -# Link To ADO Pipeline: https://dev.azure.com/microsoft/OS/_build?definitionId=125214185 +# Link To ADO Pipeline: https://dev.azure.com/microsoft/OS/_build?definitionId=177977 trigger: none variables: - name: versionMajor - value: 2 - - template: ../../../Build/BuildNumber.yml + value: 3 + - name: versionMinor + value: 0 - name: versionBuild value: $[counter(format('{0}.{1}.{2}', variables['versionMajor'], variables['versionMinor'], eq(variables['build.reason'], 'PullRequest')), 1)] - - name: versionRevision - value: 0 - name: jdkVersion value: '1.17' -name: '$(versionMajor).$(versionMinor).$(versionBuild).$(versionRevision).$(build.reason)' + - name: buildNumber + value: '$(versionMajor).$(versionMinor).$(versionBuild)' + +name: '$(versionMajor).$(versionMinor).$(versionBuild).$(build.reason)' + resources: repositories: - repository: 1esPipelines type: git name: 1ESPipelineTemplates/1ESPipelineTemplates ref: refs/tags/release + extends: template: v1/1ES.Official.PipelineTemplate.yml@1esPipelines parameters: @@ -59,7 +63,7 @@ extends: inputs: gradleWrapperFile: gradlew workingDirectory: $(Build.Repository.LocalPath) - options: '-PbuildNumber=$(versionMajor).$(versionMinor).$(versionBuild).$(versionRevision) -Pado_reader=$(ado_reader) -Pado_reader_mmxsdk_pass=$(ado_reader_mmxsdk_pass) -Pado_reader_ms_pass=$(ado_reader_ms_pass)' + options: '-PbuildNumber=$(buildNumber) -Pado_reader=$(ado_reader) -Pado_reader_mmxsdk_pass=$(ado_reader_mmxsdk_pass) -Pado_reader_ms_pass=$(ado_reader_ms_pass)' jdkVersionOption: $(jdkVersion) tasks: 'assemble' publishJUnitResults: false @@ -69,17 +73,28 @@ extends: inputs: gradleWrapperFile: gradlew workingDirectory: $(Build.Repository.LocalPath) - options: '-PbuildNumber=$(versionMajor).$(versionMinor).$(versionBuild).$(versionRevision) -Pado_reader=$(ado_reader) -Pado_reader_mmxsdk_pass=$(ado_reader_mmxsdk_pass) -Pado_reader_ms_pass=$(ado_reader_ms_pass)' + options: '-PbuildNumber=$(buildNumber) -Pado_reader=$(ado_reader) -Pado_reader_mmxsdk_pass=$(ado_reader_mmxsdk_pass) -Pado_reader_ms_pass=$(ado_reader_ms_pass)' jdkVersionOption: $(jdkVersion) tasks: 'generateKotlinDocs' publishJUnitResults: false condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest')) + - task: Gradle@2 + displayName: 'Publish to Maven' + inputs: + gradleWrapperFile: gradlew + workingDirectory: $(Build.Repository.LocalPath) + options: '-PbuildNumber=$(buildNumber) -Pado_reader=$(ado_reader) -Pado_reader_mmxsdk_pass=$(ado_reader_mmxsdk_pass) -Pado_reader_ms_pass=$(ado_reader_ms_pass)' + jdkVersionOption: $(jdkVersion) + tasks: 'publishAllToMaven' + publishJUnitResults: false + condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest')) - task: CopyFiles@2 displayName: 'Copy AAR Files to: $(build.artifactstagingdirectory)' inputs: SourceFolder: '$(Build.Repository.LocalPath)' Contents: '**/build/outputs/aar/**/*.aar' TargetFolder: '$(build.artifactstagingdirectory)' + flattenFolders: true condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest')) - task: CopyFiles@2 displayName: 'Copy kotlin doc zip to: $(build.artifactstagingdirectory)' @@ -94,4 +109,32 @@ extends: displayName: 'Publish Artifact: SDK (AzureArtifacts)' condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest')) targetPath: '$(Build.ArtifactStagingDirectory)' - artifactName: SDK \ No newline at end of file + artifactName: SDK + + - stage: Release + dependsOn: [ Build ] + + jobs: + - job: ReleaseJob + displayName: Release + timeoutInMinutes: 180 + cancelTimeoutInMinutes: 5 + templateContext: + type: releaseJob + isProduction: true + inputs: + - input: pipelineArtifact + artifactName: SDK + steps: + - task: GitHubRelease@1 + displayName: 'Create GitHub Release' + inputs: + gitHubConnection: 'Github-Windows-Cross-Device' + repositoryName: 'microsoft/Windows-Cross-Device' + action: 'create' + target: '$(Build.SourceVersion)' + tagSource: 'userSpecifiedTag' + tag: '$(buildNumber)' + assets: '$(Pipeline.Workspace)/*.aar' + changeLogCompareToRelease: 'lastFullRelease' + changeLogType: 'commitBased' diff --git a/build.gradle.kts b/build.gradle.kts index c9f5c1d..48d60ff 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -164,3 +164,30 @@ tasks.register("separateDocZipped") { } } } + +tasks.register("publishAllToMaven") { + subprojects { + val subproject = this + if (subproject.plugins.hasPlugin("com.android.library")) { + dependsOn("${subproject.name}:publish") + } + } +} + +subprojects { + afterEvaluate { + if (plugins.hasPlugin("com.android.library")) { + extensions.configure { + publishing { + multipleVariants("releaseAndDebug") { + includeBuildTypeValues("debug", "release") + } + } + + buildFeatures { + buildConfig = true + } + } + } + } +} diff --git a/continuity/build.gradle.kts b/continuity/build.gradle.kts index 90bbd62..82923ad 100644 --- a/continuity/build.gradle.kts +++ b/continuity/build.gradle.kts @@ -5,6 +5,8 @@ plugins { alias(libs.plugins.dokka) } +apply(from = "${rootDir}/gradle/maven-publish.gradle") + android { namespace = "com.microsoft.crossdevicesdk.continuity" compileSdk = libs.versions.compileSdk.get().toInt() diff --git a/gradle/maven-publish.gradle b/gradle/maven-publish.gradle new file mode 100644 index 0000000..08ca17c --- /dev/null +++ b/gradle/maven-publish.gradle @@ -0,0 +1,25 @@ +apply plugin: "maven-publish" + +publishing { + publications { + releaseAndDebug(MavenPublication) { + groupId "${rootProject.ext.mavenGroupId}" + artifactId "${rootProject.ext.build_sdkName}-${project.name}" + version "${rootProject.ext.componentizedSDKVersion}" + afterEvaluate { + from(components.releaseAndDebug) + } + } + } + + repositories { + maven { + name "mmxsdk-visualstudio.com-mmx_sdk" + url "https://mmxsdk.pkgs.visualstudio.com/_packaging/MMX_SDK/maven/v1" + credentials { + username ado_reader + password ado_reader_mmxsdk_pass + } + } + } +} \ No newline at end of file