Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
76 changes: 20 additions & 56 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,68 +1,32 @@
name: 'Build'

on:
pull_request:
push:
branches:
- '**develop'
- 'master'
- 'release/**'
- 'master'
pull_request:

permissions:
contents: write

jobs:
build:
concurrency:
group: build-${{ github.ref }}
cancel-in-progress: true
runs-on: ubuntu-latest
steps:
- name: 'Checkout'
uses: actions/checkout@v4

- name: 'Setup JDK'
uses: actions/setup-java@v4
with:
java-version: 17
distribution: temurin

- name: 'Setup Android SDK'
uses: android-actions/setup-android@v3

- name: 'Setup Gradle'
uses: gradle/actions/setup-gradle@v4
with:
dependency-graph: generate-and-submit

- name: 'Configure Gradle Properties'
run: echo 'org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=2g -XX:+HeapDumpOnOutOfMemoryError' >> gradle.properties

- name: 'Assemble'
run: ./gradlew assembleDebug

- name: 'Detekt'
run: ./gradlew detektDebug

- name: 'Upload Detekt Report Artifacts'
uses: actions/upload-artifact@v4
with:
name: 'Detekt Results'
path: |
**/build/reports/detekt/*.md

- name: 'Android Lint'
run: ./gradlew lintDebug

- name: 'Upload Lint Report Artifacts'
uses: actions/upload-artifact@v4
with:
name: 'Lint Results'
path: |
**/build/reports/lint/*.html

- uses: yutailang0119/action-android-lint@v4
with:
report-path: |
**/build/reports/lint/*.xml
continue-on-error: false
pipeline:
uses: move-android/ams-actions/.github/workflows/build.yml@master
secrets:
artifactory-url: ${{ vars.ARTIFACTORY_URL }}
artifactory-username: ${{ secrets.ARTIFACTORY_USERNAME }}
artifactory-password: ${{ secrets.ARTIFACTORY_PASSWORD }}
debug-keystore: ${{ secrets.DEBUG_KEYSTORE }}
release-keystore: ${{ secrets.RELEASE_KEYSTORE }}
github-token: ${{ secrets.READ_GITHUB_PACKAGE_TOKEN }}
sonar-token: ${{ secrets.SONAR_TOKEN }}
sonar-url: ${{ vars.SONAR_HOST_URL }}
app-distribution-account: ${{ secrets.APP_DISTRIBUTION_ACCOUNT }}
slack-bot-token: ${{ secrets.SLACK_BOT_TOKEN }}
private-repo-ssh-key: ${{ secrets.PRIVATE_REPO_SSH_KEY }}
with:
java-version: 17
use-larger-runner: true
setup-init-file: true
36 changes: 36 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import com.m2mobi.m2ci.extension.model.BuildVariant
import com.m2mobi.m2ci.task.distribute.model.DistributionDestination
import io.gitlab.arturbosch.detekt.DetektCreateBaselineTask
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

Expand All @@ -10,13 +12,47 @@ buildscript {
}

plugins {
alias(libs.plugins.m2ci)
alias(libs.plugins.android.application) apply false
alias(libs.plugins.android.library) apply false
alias(libs.plugins.detekt)
alias(libs.plugins.kotlin.android) apply false
alias(libs.plugins.kotlin.jvm) apply false
}

ci {
jvmVersion = JavaVersion.toVersion(libs.versions.jvm.get())
projectName = BuildConstants.ProjectName
projectVersion = BuildConstants.VersionName

buildConfiguration {
all { mainVariant = BuildVariant(buildType = "release") }
}

assemble {
enable = true
versionMetadataBuilders = emptySet()
}

distribute {
enable = true
destination = DistributionDestination.Library
}

sonarqube {
enable = false
}
// sonarqube {
// projectKey = BuildConstants.ProjectKey
// coverageExclusions = SonarQubeTask.DEFAULT_COVERAGE_EXCLUSIONS + setOf(
// "view/**",
// )
// exclusions = SonarQubeTask.DEFAULT_EXCLUSIONS + setOf(
// "**/src/jvmTest/**",
// )
// }
}

allprojects {
repositories {
google()
Expand Down
1 change: 1 addition & 0 deletions buildSrc/src/main/kotlin/BuildConstants.kt
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ object BuildConstants {
const val VersionName = "3.0.0-alpha12"

const val Namespace = "com.moveagency.markymark"
const val ProjectName = "MarkyMark"

const val MinSdk = 24
const val TargetSdk = 35
Expand Down
61 changes: 61 additions & 0 deletions buildSrc/src/main/kotlin/Publish.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
import org.gradle.api.Project
import org.gradle.api.artifacts.repositories.MavenArtifactRepository
import org.gradle.api.credentials.HttpHeaderCredentials
import org.gradle.api.publish.PublishingExtension
import org.gradle.api.publish.maven.MavenPublication
import org.gradle.authentication.http.HttpHeaderAuthentication
import org.gradle.kotlin.dsl.create
import org.gradle.kotlin.dsl.credentials
import org.gradle.kotlin.dsl.get

object Publish {

fun MavenPublication.setup(project: Project) = project.run {
groupId = BuildConstants.Namespace
version = BuildConstants.VersionName
from(components[if (isAndroid()) "release" else "java"])
pom {
url.set("https://github.com/move-android/MarkyMark-Android")
organization {
name.set("Framna")
url.set("https://www.framna.com/")
}
scm {
connection.set("scm:git:git://github.com/move-android/MarkyMark-Android.git")
developerConnection.set("scm:git:ssh://git@github.com/move-android/MarkyMark-Android.git")
url.set("https://github.com/move-android/MarkyMark-Android")
}
}
}

fun PublishingExtension.addPublishRepository(project: Project) = project.run {
repositories {
maven {
name = "GitHubPackages"
url = uri("https://maven.pkg.github.com/move-android/MarkyMark-Android")
headerAuthentication(getRepoToken().orEmpty())
}
}
}

fun Project.isAndroid() = plugins.findPlugin("com.android.library") != null ||
plugins.findPlugin("com.android.application") != null

fun Project.getRepoUsername() = findProperty("com.moveagency.username") as String

fun Project.getRepoPassword() = findProperty("com.moveagency.password") as String

fun Project.getRepoUrl() = findProperty("com.moveagency.repo") as String

fun Project.getRepoToken() = findProperty("com.moveagency.github.token") as? String

fun MavenArtifactRepository.headerAuthentication(token: String) {
credentials(HttpHeaderCredentials::class) {
name = "Authorization"
value = "Bearer $token"
}
authentication {
create<HttpHeaderAuthentication>("header")
}
}
}
2 changes: 2 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ jvm = "17"
kodeview = "0.9.0"
kotlin = "2.2.0"
coreKtxVersion = "1.16.0"
m2ci = "64"

[libraries]
accompanist-systemuicontroller = { module = "com.google.accompanist:accompanist-systemuicontroller", version.ref = "accompanist" }
Expand Down Expand Up @@ -43,5 +44,6 @@ compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "
detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin" }
m2ci = { id = "com.m2mobi.m2ci", version.ref = "m2ci" }

[bundles]
14 changes: 14 additions & 0 deletions markymark/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@

@file:Suppress("UnstableApiUsage")

import Publish.addPublishRepository
import Publish.setup

plugins {
alias(libs.plugins.android.library)
alias(libs.plugins.kotlin.android)
Expand Down Expand Up @@ -100,3 +103,14 @@ dependencies {

api(libs.kodeview)
}

afterEvaluate {
publishing {
publications {
create<MavenPublication>("mavenRelease") {
setup(project)
}
}
addPublishRepository(project)
}
}
24 changes: 24 additions & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,27 @@ pluginManagement {
gradlePluginPortal()
}
}

pluginManagement.repositories.m2ciPlugin()


fun RepositoryHandler.m2ciPlugin() = addGitHubRepository(path = "move-android/m2ci")

fun RepositoryHandler.addGitHubRepository(path: String) {
val gitHubToken = (settings.extra["com.moveagency.github.token"] as? String).orEmpty()
maven {
name = path
url = uri("https://maven.pkg.github.com/$path")
headerAuthentication(gitHubToken)
}
}

fun MavenArtifactRepository.headerAuthentication(token: String) {
credentials(HttpHeaderCredentials::class) {
name = "Authorization"
value = "Bearer $token"
}
authentication {
create<HttpHeaderAuthentication>("header")
}
}