dev to basic spring #9
33
.github/workflows/build_deploy_dev.yml
vendored
Normal file
33
.github/workflows/build_deploy_dev.yml
vendored
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
name: build and publish docker image / deploy
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: ["dev"]
|
||||||
|
pull_request:
|
||||||
|
branches: ["dev"]
|
||||||
|
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: https://github.com/actions/checkout@v4
|
||||||
|
with:
|
||||||
|
repository: 'learningpulse/server'
|
||||||
|
ref: 'dev'
|
||||||
|
token: '${{ secrets.token }}'
|
||||||
|
- name: 'Set up java 22'
|
||||||
|
uses: https://github.com/actions/setup-java@v3
|
||||||
|
with:
|
||||||
|
java-version: "22"
|
||||||
|
distribution: "temurin"
|
||||||
|
|
||||||
|
- name: "Setup maven"
|
||||||
|
uses: https://github.com/stCarolas/setup-maven@v5
|
||||||
|
|
||||||
|
- name: Build with Maven
|
||||||
|
run: mvn -Dtoken=${{ secrets.token }} clean compile jib:build -e
|
||||||
|
|
||||||
|
|
||||||
|
|
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
result/*
|
||||||
|
result
|
13
flake.lock
13
flake.lock
|
@ -2,18 +2,17 @@
|
||||||
"nodes": {
|
"nodes": {
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1716293225,
|
"lastModified": 1716509168,
|
||||||
"narHash": "sha256-pU9ViBVE3XYb70xZx+jK6SEVphvt7xMTbm6yDIF4xPs=",
|
"narHash": "sha256-4zSIhSRRIoEBwjbPm3YiGtbd8HDWzFxJjw5DYSDy1n8=",
|
||||||
"owner": "nixos",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "3eaeaeb6b1e08a016380c279f8846e0bd8808916",
|
"rev": "bfb7a882678e518398ce9a31a881538679f6f092",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nixos",
|
"id": "nixpkgs",
|
||||||
"ref": "nixos-unstable",
|
"ref": "nixos-unstable",
|
||||||
"repo": "nixpkgs",
|
"type": "indirect"
|
||||||
"type": "github"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": {
|
"root": {
|
||||||
|
|
113
flake.nix
113
flake.nix
|
@ -1,48 +1,95 @@
|
||||||
{
|
{
|
||||||
description = "Learning Pulse";
|
description = "CI, devshell and package definition for learningpulse";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
nixpkgs.url = "nixpkgs/nixos-unstable";
|
||||||
};
|
};
|
||||||
|
outputs = { self, nixpkgs, ... }:
|
||||||
outputs =
|
|
||||||
{ self
|
|
||||||
, nixpkgs
|
|
||||||
, maven
|
|
||||||
, makeWrapper
|
|
||||||
}:
|
|
||||||
let
|
let
|
||||||
javaVersion = 22;
|
# TODO add more systems
|
||||||
overlays = [
|
system = "x86_64-linux";
|
||||||
(final: prev: rec {
|
pkgs = import nixpkgs { inherit system; };
|
||||||
jdk = prev."jdk${toString javaVersion}";
|
|
||||||
gradle = prev.gradle.override { java = jdk; };
|
|
||||||
maven = prev.maven.override { inherit jdk; };
|
|
||||||
})
|
|
||||||
];
|
|
||||||
supportedSystems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin" ];
|
|
||||||
forEachSupportedSystem = f: nixpkgs.lib.genAttrs supportedSystems (system: f {
|
|
||||||
pkgs = import nixpkgs { inherit overlays system; };
|
|
||||||
});
|
|
||||||
|
|
||||||
|
buildPackages = with pkgs; [
|
||||||
|
jdk22
|
||||||
|
makeWrapper
|
||||||
|
];
|
||||||
in
|
in
|
||||||
|
rec {
|
||||||
|
packages.${system} =
|
||||||
{
|
{
|
||||||
hydraJobs = {
|
learningpulse-gateway = pkgs.maven.buildMavenPackage rec {
|
||||||
gateway = maven.buildMavenPackage rec {
|
pname = "gateway";
|
||||||
pname = "learningpulse-gateway";
|
version = "0.0.1";
|
||||||
version = "1.2.1";
|
|
||||||
#
|
src = ./.;
|
||||||
# hello i wrote something here to test pulling
|
# todo get automatically
|
||||||
|
mvnHash = "sha256-YCK1Qujgx73cZdEx2mRip+y+66px5TxL247fBIMyoy4=";
|
||||||
|
|
||||||
|
nativeBuildInputs = buildPackages;
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/bin $out/share/${pname}
|
||||||
|
install -Dm644 ${pname}/target/${pname}-${version}.jar $out/share/${pname}
|
||||||
|
|
||||||
|
makeWrapper ${pkgs.jre8}/bin/java $out/bin/${pname} \
|
||||||
|
--add-flags "-jar $out/share/${pname}/${pname}-${version}.jar"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
learningpulse-eureka = pkgs.maven.buildMavenPackage rec {
|
||||||
|
pname = "eureka";
|
||||||
|
version = "0.0.1";
|
||||||
|
|
||||||
|
src = ./.;
|
||||||
|
# todo get automatically
|
||||||
|
mvnHash = "sha256-YCK1Qujgx73cZdEx2mRip+y+66px5TxL247fBIMyoy4=";
|
||||||
|
|
||||||
|
nativeBuildInputs = buildPackages;
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/bin $out/share/${pname}
|
||||||
|
install -Dm644 ${pname}/target/${pname}-${version}.jar $out/share/${pname}
|
||||||
|
|
||||||
|
makeWrapper ${pkgs.jre8}/bin/java $out/bin/${pname} \
|
||||||
|
--add-flags "-jar $out/share/${pname}/${pname}-${version}.jar"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
learningpulse-dummy = pkgs.maven.buildMavenPackage rec {
|
||||||
|
pname = "dummy";
|
||||||
|
version = "0.0.1";
|
||||||
|
|
||||||
|
src = ./.;
|
||||||
|
# todo get automatically
|
||||||
|
mvnHash = "sha256-YCK1Qujgx73cZdEx2mRip+y+66px5TxL247fBIMyoy4=";
|
||||||
|
|
||||||
|
nativeBuildInputs = buildPackages;
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/bin $out/share/${pname}
|
||||||
|
install -Dm644 ${pname}/target/${pname}-${version}.jar $out/share/${pname}
|
||||||
|
|
||||||
|
makeWrapper ${pkgs.jre8}/bin/java $out/bin/${pname} \
|
||||||
|
--add-flags "-jar $out/share/${pname}/${pname}-${version}.jar"
|
||||||
|
'';
|
||||||
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
devShells = forEachSupportedSystem ({ pkgs }: {
|
|
||||||
default = pkgs.mkShell {
|
hydraJobs = {
|
||||||
packages = with pkgs; [
|
inherit (self)
|
||||||
jdk
|
packages;
|
||||||
|
};
|
||||||
|
|
||||||
|
devShells."${system}".default = pkgs.mkShell {
|
||||||
|
buildInputs = with pkgs; [
|
||||||
maven
|
maven
|
||||||
|
jdk22
|
||||||
|
jre8
|
||||||
|
# top run actions locally
|
||||||
|
act
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
<groupId>com.learningpulse</groupId>
|
<groupId>com.learningpulse</groupId>
|
||||||
<artifactId>server</artifactId>
|
<artifactId>server</artifactId>
|
||||||
<version>0.0.1</version>
|
<version>0.0.1</version>
|
||||||
<relativePath/> <!-- lookup parent from repository -->
|
|
||||||
</parent>
|
</parent>
|
||||||
<artifactId>gateway</artifactId>
|
<artifactId>gateway</artifactId>
|
||||||
<version>0.0.1</version>
|
<version>0.0.1</version>
|
||||||
|
|
43
pom.xml
43
pom.xml
|
@ -67,15 +67,46 @@
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>org.springframework.boot</groupId>
|
||||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
|
||||||
<pluginManagement>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.springframework.boot</groupId>
|
<groupId>com.google.cloud.tools</groupId>
|
||||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
<artifactId>jib-maven-plugin</artifactId>
|
||||||
|
<version>3.4.2</version>
|
||||||
|
<configuration>
|
||||||
|
<from>
|
||||||
|
<image>eclipse-temurin:22-jre</image>
|
||||||
|
<!-- <auth>
|
||||||
|
<username>${dockerusername}</username>
|
||||||
|
<password>${dockerpassword}</password>
|
||||||
|
</auth> -->
|
||||||
|
<platforms>
|
||||||
|
<platform>
|
||||||
|
<architecture>amd64</architecture>
|
||||||
|
<os>linux</os>
|
||||||
|
</platform>
|
||||||
|
<platform>
|
||||||
|
<architecture>arm64</architecture>
|
||||||
|
<os>linux</os>
|
||||||
|
</platform>
|
||||||
|
</platforms>
|
||||||
|
</from>
|
||||||
|
<to>
|
||||||
|
<image>git.4o1x5.dev/learningpulse/server/${project.artifactId}:${project.version}</image>
|
||||||
|
<auth>
|
||||||
|
<username>hydrabot</username>
|
||||||
|
<password>${token}</password>
|
||||||
|
</auth>
|
||||||
|
</to>
|
||||||
|
</configuration>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>dockerBuild</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</pluginManagement>
|
|
||||||
</build>
|
</build>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|
23
readme.md
Normal file
23
readme.md
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
# LearningPulse server
|
||||||
|
|
||||||
|
## CI/CD
|
||||||
|
|
||||||
|
To check up on builds head to [the hydra server](https://hydra.4o1x5.dev/project/learningpulse)
|
||||||
|
|
||||||
|
### Enter developer shell
|
||||||
|
|
||||||
|
```bash
|
||||||
|
nix develop
|
||||||
|
```
|
||||||
|
|
||||||
|
### Build services
|
||||||
|
|
||||||
|
```bash
|
||||||
|
nix build .#learningpulse-dummy
|
||||||
|
```
|
||||||
|
|
||||||
|
### Run service
|
||||||
|
|
||||||
|
```bash
|
||||||
|
nix develop && cd dummy && mvn run spring-boot:run
|
||||||
|
```
|
Reference in a new issue