Skip to content

Commit

Permalink
Merge pull request #6 from matejsemancik/feature/ci-cd
Browse files Browse the repository at this point in the history
CI/CD
  • Loading branch information
matejsemancik authored Feb 18, 2025
2 parents 10e679c + cf1d026 commit 6749f26
Show file tree
Hide file tree
Showing 11 changed files with 117 additions and 6 deletions.
27 changes: 27 additions & 0 deletions .github/workflows/on_pull_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Pull Request Check

on:
pull_request:
types:
- opened

jobs:
check:
strategy:
matrix:
os: [ ubuntu-latest ]
runs-on: ${{ matrix.os }}
timeout-minutes: 10
steps:
- name: 'Checkout'
uses: actions/checkout@v4
- name: 'Setup Java'
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
- name: "Setup Gradle"
uses: gradle/actions/setup-gradle@v4
- name: 'Check'
run: |
./gradlew check
38 changes: 38 additions & 0 deletions .github/workflows/on_release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Build Release Artifacts

on:
release:
types:
- published

jobs:
build:
timeout-minutes: 15 # Windows is such a special snowflake 🙂
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
runs-on: ${{ matrix.os }}
permissions:
contents: write
steps:
- name: 'Checkout'
uses: actions/checkout@v4
- name: 'Setup Java'
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
- name: "Setup Gradle"
uses: gradle/actions/setup-gradle@v4
- name: 'Build'
env:
DESKTOP_PACKAGE_VERSION: ${{ github.event.release.tag_name }}
run: |
./gradlew packageDistributionForCurrentOS
- name: 'Upload assets'
uses: softprops/action-gh-release@v2
with:
files: |
**/build/compose/binaries/main/dmg/*
**/build/compose/binaries/main/deb/*
**/build/compose/binaries/main/msi/*
10 changes: 8 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,15 @@ The app is tested on macOS. It supports Jira Cloud only.

Interested in Kotlin Multiplatform? Learn more [here](https://www.jetbrains.com/help/kotlin-multiplatform-dev/get-started.html).

## Installation
## Download
[![GitHub Release](https://img.shields.io/github/v/release/matejsemancik/tempo-timer?include_prereleases&sort=semver&display_name=release&style=flat&link=https%3A%2F%2Fgithub.com%2Fmatejsemancik%2Ftempo-timer%2Freleases%2Flatest)](https://github.com/matejsemancik/tempo-timer/releases/latest)

Publishing WIP. For now, you can run using `./gradlew runDistributable`.
Download latest release [here](https://github.com/matejsemancik/tempo-timer/releases/latest).

## Development

- To build package locally, run `./gradlew packageDistributionForCurrentOS`
- Run with `./gradlew runDistributable`

## Getting started

Expand Down
2 changes: 1 addition & 1 deletion desktopApp/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ compose.desktop {
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)

packageName = "Tempo Timer"
packageVersion = System.getenv("DESKTOP_PACKAGE_VERSION") ?: "1.0.0"
packageVersion = System.getenv("DESKTOP_PACKAGE_VERSION")?.takeIf { it.isNotBlank() } ?: "1.0.0"
description = "Desktop client for Tempo Timesheets"
copyright = "Copyright (c) 2025 Matej Semančík"
vendor = "matsem.dev"
Expand Down
1 change: 0 additions & 1 deletion desktopApp/src/desktopMain/kotlin/dev/matsem/bpm/main.kt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import dev.matsem.bpm.injection.AppInjection
import org.jetbrains.compose.resources.painterResource
import org.koin.compose.KoinContext
import java.awt.Desktop
import java.awt.PopupMenu
import java.awt.Taskbar
import java.awt.desktop.AppReopenedListener

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import dev.matsem.bpm.feature.search.ui.SearchScreenUi
import dev.matsem.bpm.feature.settings.ui.SettingsScreenUi
import dev.matsem.bpm.feature.tracker.presentation.TrackerScreen
import dev.matsem.bpm.feature.tracker.ui.TrackerScreenUi
import dev.matsem.bpm.tooling.Platform
import kotlinx.coroutines.launch
import org.jetbrains.compose.ui.tooling.preview.Preview
import org.koin.compose.koinInject
Expand All @@ -46,6 +47,7 @@ fun AppUi() {
var commitDialogTimer: Timer? by rememberSaveable { mutableStateOf(null) }

val trackerScreen: TrackerScreen = koinInject()
val platform: Platform = koinInject()

BpmTheme(isDark = darkMode) {
Scaffold(
Expand Down Expand Up @@ -100,8 +102,9 @@ fun AppUi() {
)
}
Text(
"tempo-timer 0.1.0",
"tempo-timer (${platform.getVersionString()})",
style = BpmTheme.typography.labelMedium,
color = BpmTheme.colorScheme.outline,
modifier = Modifier.fillMaxWidth().padding(horizontal = Grid.d3)
)
},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
package dev.matsem.bpm.injection

import dev.matsem.bpm.injection.module.*
import dev.matsem.bpm.injection.module.databaseModule
import dev.matsem.bpm.injection.module.featureModule
import dev.matsem.bpm.injection.module.networkModule
import dev.matsem.bpm.injection.module.persistenceModule
import dev.matsem.bpm.injection.module.platformModule
import dev.matsem.bpm.injection.module.repositoryModule
import dev.matsem.bpm.injection.module.scopeModule
import dev.matsem.bpm.injection.module.systemModule
import org.koin.core.context.startKoin
import org.koin.core.logger.Level
import org.koin.core.logger.PrintLogger
Expand All @@ -11,6 +18,7 @@ object AppInjection {
logger(PrintLogger(Level.ERROR))

modules(
platformModule(),
systemModule(),
scopeModule(),
repositoryModule(),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package dev.matsem.bpm.injection.module

import org.koin.core.module.Module

expect fun platformModule(): Module
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package dev.matsem.bpm.tooling

interface Platform {
fun getVersionString(): String
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package dev.matsem.bpm.injection.module

import dev.matsem.bpm.tool.DesktopPlatform
import dev.matsem.bpm.tooling.Platform
import org.koin.core.module.Module
import org.koin.core.module.dsl.singleOf
import org.koin.dsl.bind
import org.koin.dsl.module

actual fun platformModule(): Module = module {
singleOf(::DesktopPlatform) bind Platform::class
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package dev.matsem.bpm.tool

import dev.matsem.bpm.tooling.Platform

internal class DesktopPlatform : Platform {
override fun getVersionString(): String =
System.getProperty("jpackage.app-version")?.takeIf { it.isNotBlank() } ?: "local"
}

0 comments on commit 6749f26

Please sign in to comment.