Skip to content
Open
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
4 changes: 2 additions & 2 deletions .env.template
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@
JAVA_HOME=/opt/jdk25/temurin
M2_HOME=
MAVEN_USER_HOME=$M2_HOME
MAVEN_HOME=$M2_HOME
MAVEN_HOME=$HOME/icecream/.local-volumes/maven-3.9.12
##########################################
### LOCAL MACHINE
##########################################
LOCAL_VOLUME=
LOCAL_STORAGE=
LOCAL_SYSTEM=
##########################################
### POSTGRESQL
##########################################
Expand Down
121 changes: 121 additions & 0 deletions .github/workflows/actions.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
name: Build & Push All Images

on:
push:
branches: ["master"]

env:
REGISTRY: ghcr.io
IMAGE_PREFIX: ${{ github.repository_owner }}/icecream

jobs:

#region Backend services
backend:
runs-on: ubuntu-latest
strategy:
matrix:
service: [consul, chronos, conflux, echo, memoir, codex]
permissions:
contents: read
packages: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Delete old package versions
uses: actions/delete-package-versions@v5
with:
package-name: icecream-${{ matrix.service }}
package-type: container
min-versions-to-keep: 0
delete-only-untagged-versions: false
continue-on-error: true
- name: Login to GHCR
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build & Push Backend Image
uses: docker/build-push-action@v5
with:
context: ./icecream-system
file: ./icecream-system/Dockerfile
push: true
build-args: |
MODULE=${{ matrix.service }}
tags: |
${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}-${{ matrix.service }}:latest
${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}-${{ matrix.service }}:${{ github.sha }}
cache-from: type=gha
cache-to: type=gha,mode=max
#endregion

#region UI Storefront
frontend:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Delete old package versions
uses: actions/delete-package-versions@v5
with:
package-name: icecream-storefront
package-type: container
min-versions-to-keep: 0
delete-only-untagged-versions: false
continue-on-error: true
- name: Login to GHCR
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build & Push Frontend Image
uses: docker/build-push-action@v5
with:
context: ./icecream-ui/storefront
file: ./icecream-ui/storefront/Dockerfile
push: true
tags: |
${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}-storefront:latest
${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}-storefront:${{ github.sha }}
cache-from: type=gha
cache-to: type=gha,mode=max
#endregion

#region Infra
infra-identity:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Delete old package versions
uses: actions/delete-package-versions@v5
with:
package-name: icecream-infra-identity
package-type: container
min-versions-to-keep: 0
delete-only-untagged-versions: false
continue-on-error: true
- name: Login to GHCR
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build & Push Identity Image
uses: docker/build-push-action@v6
with:
context: ./icecream-system/identity
push: true
tags: |
${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}-infra-identity:latest
${{ env.REGISTRY }}/${{ env.IMAGE_PREFIX }}-infra-identity:${{ github.sha }}
# This makes subsequent builds lightning fast
cache-from: type=gha
cache-to: type=gha,mode=max
#endregion
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Not so monolithic e-commerce system

## 🗺️ High‑Level System Overview

![Architecture Diagram](/assets/architecture.png)
![Architecture Diagram](/readme-assets/architecture.png)

At a glance:

Expand All @@ -23,7 +23,7 @@ At a glance:

## Observability architecture

![Observability Architecture Diagram](/assets/observability-architecture.png)
![Observability Architecture Diagram](/readme-assets/observability-architecture.png)

1. **Data Sources**

Expand Down
Empty file added icecream-ops/.gitkeep
Empty file.
2 changes: 1 addition & 1 deletion icecream-system/.env.template
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
JAVA_TOOL_OPTIONS="-javaagent:${LOCAL_STORAGE}/java-packages/opentelemetry-javaagent.jar -XX:NativeMemoryTracking=summary"
JAVA_TOOL_OPTIONS="-javaagent:${LOCAL_SYSTEM}/java-packages/opentelemetry-javaagent.jar -XX:NativeMemoryTracking=summary"
OTEL_EXPORTER_OTLP_ENDPOINT=http://${OTEL_COLLECTOR_HOST}:${OTEL_COLLECTOR_PORT}
OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf
OTEL_LOGS_EXPORTER=otlp
Expand Down
27 changes: 27 additions & 0 deletions icecream-system/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# -------- Build stage --------
FROM maven:3.9.13-eclipse-temurin-25 AS builder

WORKDIR /build
COPY . .

ARG MODULE
RUN mvn -pl ${MODULE} -am clean package -DskipTests

# -------- Runtime --------
FROM eclipse-temurin:25-jre-jammy

WORKDIR /app

# (Optional) OpenTelemetry agent
COPY java-packages/opentelemetry-javaagent.jar /otel/agent.jar

ARG MODULE
COPY --from=builder /build/${MODULE}/target/*.jar app.jar

ENTRYPOINT [
"java",
"-javaagent:/otel/agent.jar",
"-XX:MaxRAMPercentage=75.0",
"-jar",
"app.jar"
]
1 change: 1 addition & 0 deletions icecream-system/codex/pom.xml
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<parent>
Expand Down
3 changes: 3 additions & 0 deletions icecream-system/conflux/.mvn/wrapper/maven-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
wrapperVersion=3.3.4
distributionType=only-script
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.12/apache-maven-3.9.12-bin.zip
Loading