Skip to content

Commit

Permalink
Merge pull request #15 from BME-MIT-IET/ci-cd
Browse files Browse the repository at this point in the history
CI/CD and deployment
  • Loading branch information
voroscsoki authored May 21, 2024
2 parents 7e6fedd + d42e673 commit b7dea2d
Show file tree
Hide file tree
Showing 6 changed files with 143 additions and 10 deletions.
38 changes: 38 additions & 0 deletions .github/workflows/maven.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-maven

# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.

name: Java CI with Maven

on:
push:
branches:
- '*'
pull_request:
branches:
- '*'
workflow_dispatch:
branches:
- '*' # Allow manual triggering of workflow


jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'adopt'

- name: Build with Maven
run: mvn -f "./Sivatagi vizhalozatok uzemeltetese a gyakorlatban 2/pom.xml" clean verify package
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
*.iml
*.class
*.xml
!pom.xml
*.bat
*.name
*.project
Expand Down
24 changes: 24 additions & 0 deletions Sivatagi vizhalozatok uzemeltetese a gyakorlatban 2/doc/ci-cd.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Vízhálózat játék CI-CD

Ez a dokumentum leírja a projekthez készített és felhasznált CI-CD rendszereket. A megvalósítás fő vektora a GitHub Actions volt.

## Részfeladatok
# 1. Maven beüzemelése
Az eredeti projekt Mavent használt a program fordításához és futtatásához. Ez többnyire működőképes volt, de a pom.xml fájlon változtatni kellett a kívánt hatás eléréséhez.

Fel kellett venni a maven compiler és jar pluginokat, ezek segítségével a projekt forráskódja fordítható, és további függőségektől mentes, önálló .jar fájlba csomagolható.
A kapott fájl bármilyen, a Java 11-es verzióját támogató környezetben futtatható, JDK telepítése nélkül, kizárólag a JRE használatával.

# 2. GitHub Actions
A GitHub Actions lehetővé teszi repository-k automata tesztelését, ellenőrzését, futtatását. A projekt másik egységében ezt a SonarCloud-hoz is kihasználtuk.

Az általam létrehozott action a következő lépéseket hajtja végre:
1. A legújabb stabil Ubuntu verzió használata
2. A projekt forráskódjának lemásolása
3. 11-es verziójú AdoptOpenJDK telepítése
4. A projekt buildelése a maven pom fájl segítségével, tesztekkel, tisztítással és csomagolással

Amennyiben ezek a lépések mind sikeresek, nagy bizonyossággal állíthatjuk, hogy a projekt futtatható a specifikált környezetben.
A sikert zöld pipa jelzi, a hibát piros X; ez utóbbi esetben értesítést kapunk a repository beállításai szerint.

Wendl Csongor (HZERYX) - 2024
28 changes: 28 additions & 0 deletions Sivatagi vizhalozatok uzemeltetese a gyakorlatban 2/doc/docker.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Vízhálózat játék deployment (Docker)

Ez a dokumentum leírja a projekthez készített és felhasznált konténerizációs és deploy megoldásokat. A megvalósítás fő vektora a Docker volt.

## Részfeladatok
# 1. Dockerfile készítése
A dockerfile írja le, hogy egy adott docker image elkészítéséhez milyen lépéseket kell végrehajtani. Ebben az esetben a lépések a következők:
- standard docker maven+openjdk11 image használatával:
- a projekt forráskódjának lemásolása, buildelése
- standard docker openjdk11 image használatával:
- xauth és egyéb függőségek telepítése (lásd lejjebb: X11)
- X11 kijelző célpont beállítása (docker virtuális)
- kész .jar és adatfájlok másolása
- VNC port nyitása
- jar file futtatása
# 2. Docker image futtatása
A docker image buildelhető így:
docker build -t IMAGE_NÉV .
A docker image futtatása a következő paranccsal történik:
docker run -e DISPLAY=host.docker.internal:0.0 --name CONTAINER_NÉV IMAGE_NÉV

A program ezután natív ablakként jelenik meg a host gépen és játszható.

# Információ: X11
Az X11 kijelzőszerver Unix rendszereken gyári felszereltségnek tekinthető, viszont Windows esetében ez nem adott. A program csakis grafikus felülettel rendelkezik, így a futtatáshoz elengedhetetlen az X11 szerver megléte.
Windowson erre például az Xming alkalmas, telepítése és futtatása elegendő. A dockerfile beállítja a megfelelő dockeres virtuális kijelzőt, ennek eredményeként a játék natív Windows ablakként jelenik meg és játszható.

Wendl Csongor (HZERYX) - 2024
28 changes: 28 additions & 0 deletions Sivatagi vizhalozatok uzemeltetese a gyakorlatban 2/dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Build with maven
FROM maven:3.8.6-openjdk-11 AS builder

WORKDIR /app
COPY pom.xml .
COPY src ./src

RUN mvn clean package

# Create the runtime image
FROM openjdk:11

RUN apt-get update && apt-get install -y \
xauth \
libxrender1 \
libxtst6 \
libxi6

# X11 env variable
ENV DISPLAY=host.docker.internal:0.0

WORKDIR /app
COPY --from=builder /app/target/*.jar /app/app.jar
COPY --from=builder /app/src/palya.txt /app/src/palya.txt

# Expose VNC port
EXPOSE 5800 5900
CMD ["java", "-jar", "/app/app.jar"]
34 changes: 24 additions & 10 deletions pom.xml → ...tok uzemeltetese a gyakorlatban 2/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,16 +36,30 @@

</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
<configuration>
<release>11</release>
</configuration>
</plugin>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
<configuration>
<release>11</release>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.4.1</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>Controll.ViewGame</mainClass>
</manifest>
</archive>
</configuration>
</plugin>

<!-- JUnit 5 requires Surefire version 2.22.1 or higher -->
<plugin>
Expand Down

0 comments on commit b7dea2d

Please sign in to comment.