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": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1716293225,
|
||||
"narHash": "sha256-pU9ViBVE3XYb70xZx+jK6SEVphvt7xMTbm6yDIF4xPs=",
|
||||
"owner": "nixos",
|
||||
"lastModified": 1716509168,
|
||||
"narHash": "sha256-4zSIhSRRIoEBwjbPm3YiGtbd8HDWzFxJjw5DYSDy1n8=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "3eaeaeb6b1e08a016380c279f8846e0bd8808916",
|
||||
"rev": "bfb7a882678e518398ce9a31a881538679f6f092",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"id": "nixpkgs",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
"type": "indirect"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
|
|
113
flake.nix
113
flake.nix
|
@ -1,48 +1,95 @@
|
|||
{
|
||||
description = "Learning Pulse";
|
||||
|
||||
description = "CI, devshell and package definition for learningpulse";
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
||||
nixpkgs.url = "nixpkgs/nixos-unstable";
|
||||
};
|
||||
|
||||
outputs =
|
||||
{ self
|
||||
, nixpkgs
|
||||
, maven
|
||||
, makeWrapper
|
||||
}:
|
||||
outputs = { self, nixpkgs, ... }:
|
||||
let
|
||||
javaVersion = 22;
|
||||
overlays = [
|
||||
(final: prev: rec {
|
||||
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; };
|
||||
});
|
||||
# TODO add more systems
|
||||
system = "x86_64-linux";
|
||||
pkgs = import nixpkgs { inherit system; };
|
||||
|
||||
buildPackages = with pkgs; [
|
||||
jdk22
|
||||
makeWrapper
|
||||
];
|
||||
in
|
||||
rec {
|
||||
packages.${system} =
|
||||
{
|
||||
hydraJobs = {
|
||||
gateway = maven.buildMavenPackage rec {
|
||||
pname = "learningpulse-gateway";
|
||||
version = "1.2.1";
|
||||
#
|
||||
# hello i wrote something here to test pulling
|
||||
learningpulse-gateway = pkgs.maven.buildMavenPackage rec {
|
||||
pname = "gateway";
|
||||
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-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 {
|
||||
packages = with pkgs; [
|
||||
jdk
|
||||
|
||||
hydraJobs = {
|
||||
inherit (self)
|
||||
packages;
|
||||
};
|
||||
|
||||
devShells."${system}".default = pkgs.mkShell {
|
||||
buildInputs = with pkgs; [
|
||||
maven
|
||||
jdk22
|
||||
jre8
|
||||
# top run actions locally
|
||||
act
|
||||
];
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
<groupId>com.learningpulse</groupId>
|
||||
<artifactId>server</artifactId>
|
||||
<version>0.0.1</version>
|
||||
<relativePath/> <!-- lookup parent from repository -->
|
||||
</parent>
|
||||
<artifactId>gateway</artifactId>
|
||||
<version>0.0.1</version>
|
||||
|
|
43
pom.xml
43
pom.xml
|
@ -67,15 +67,46 @@
|
|||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
</plugin>
|
||||
</plugins>
|
||||
<pluginManagement>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
<groupId>com.google.cloud.tools</groupId>
|
||||
<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>
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
</build>
|
||||
|
||||
</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