From 1aa76771c4dc74ed22ba691a20201223ded509b5 Mon Sep 17 00:00:00 2001 From: michael1986 Date: Thu, 27 Nov 2025 12:21:21 +0100 Subject: [PATCH] start --- .github/workflows/build.yml | 58 ++++++++++++++++++ .gitignore | 2 +- README.md | 2 + pom.xml | 15 ++++- .../java/com/auction/{scraper => }/Main.java | 2 +- .../{scraper => }/TroostwijkScraper.java | 3 +- .../main/java/com/auction}/deploy.yml | 0 target/classes/com/auction/scraper/Main.class | Bin 635 -> 0 bytes .../TroostwijkScraper$DatabaseService.class | Bin 9104 -> 0 bytes .../scraper/TroostwijkScraper$Lot.class | Bin 1128 -> 0 bytes ...ostwijkScraper$NotificationService$1.class | Bin 1161 -> 0 bytes ...roostwijkScraper$NotificationService.class | Bin 5720 -> 0 bytes ...stwijkScraper$ObjectDetectionService.class | Bin 5821 -> 0 bytes .../auction/scraper/TroostwijkScraper.class | Bin 17601 -> 0 bytes 14 files changed, 76 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/build.yml rename src/main/java/com/auction/{scraper => }/Main.java (87%) rename src/main/java/com/auction/{scraper => }/TroostwijkScraper.java (99%) rename {.github/workflows => src/main/java/com/auction}/deploy.yml (100%) delete mode 100644 target/classes/com/auction/scraper/Main.class delete mode 100644 target/classes/com/auction/scraper/TroostwijkScraper$DatabaseService.class delete mode 100644 target/classes/com/auction/scraper/TroostwijkScraper$Lot.class delete mode 100644 target/classes/com/auction/scraper/TroostwijkScraper$NotificationService$1.class delete mode 100644 target/classes/com/auction/scraper/TroostwijkScraper$NotificationService.class delete mode 100644 target/classes/com/auction/scraper/TroostwijkScraper$ObjectDetectionService.class delete mode 100644 target/classes/com/auction/scraper/TroostwijkScraper.class diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..436ebf9 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,58 @@ +name: Build and Deploy Auction App + +on: + push: + branches: + - master + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Java 17 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 17 + + - name: Build with Maven + run: mvn -B clean package + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: auction + path: target/*.jar + + deploy: + needs: build + runs-on: ubuntu-latest + + steps: + - name: Download artifact + uses: actions/download-artifact@v4 + with: + name: auction + + - name: Copy to server + uses: appleboy/scp-action@v0.1.7 + with: + host: ${{ secrets.SERVER_IP }} + username: ${{ secrets.SERVER_USER }} + key: ${{ secrets.SERVER_SSH_KEY }} + source: "*.jar" + target: "/opt/auction/app.jar" + + - name: Restart service + uses: appleboy/ssh-action@v0.1.7 + with: + host: ${{ secrets.SERVER_IP }} + username: ${{ secrets.SERVER_USER }} + key: ${{ secrets.SERVER_SSH_KEY }} + script: | + sudo systemctl restart auction + echo "Deployment complete" diff --git a/.gitignore b/.gitignore index 27caa23..c837ac9 100644 --- a/.gitignore +++ b/.gitignore @@ -29,4 +29,4 @@ bin/ ### Mac OS ### .DS_Store -NUL \ No newline at end of file +NUL diff --git a/README.md b/README.md index e7f1ffa..c19738c 100644 --- a/README.md +++ b/README.md @@ -231,3 +231,5 @@ Kavel 12345 sluit binnen 5 min. ## License This is example code for educational purposes. + + diff --git a/pom.xml b/pom.xml index b4a8a2f..a006be5 100644 --- a/pom.xml +++ b/pom.xml @@ -69,7 +69,18 @@ 11 - + + org.apache.maven.plugins + maven-jar-plugin + 3.2.0 + + + + com.auction.Main + + + + org.apache.maven.plugins @@ -78,7 +89,7 @@ - com.auction.scraper.TroostwijkScraper + com.auction.TroostwijkScraper diff --git a/src/main/java/com/auction/scraper/Main.java b/src/main/java/com/auction/Main.java similarity index 87% rename from src/main/java/com/auction/scraper/Main.java rename to src/main/java/com/auction/Main.java index 59abbc3..5b3aa08 100644 --- a/src/main/java/com/auction/scraper/Main.java +++ b/src/main/java/com/auction/Main.java @@ -1,4 +1,4 @@ -package com.auction.scraper; +package com.auction; public class Main { public static void main(String[] args) { diff --git a/src/main/java/com/auction/scraper/TroostwijkScraper.java b/src/main/java/com/auction/TroostwijkScraper.java similarity index 99% rename from src/main/java/com/auction/scraper/TroostwijkScraper.java rename to src/main/java/com/auction/TroostwijkScraper.java index c3d0098..0456e66 100644 --- a/src/main/java/com/auction/scraper/TroostwijkScraper.java +++ b/src/main/java/com/auction/TroostwijkScraper.java @@ -1,4 +1,4 @@ -package com.auction.scraper; +package com.auction; /* * TroostwijkScraper @@ -47,7 +47,6 @@ import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; -import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; diff --git a/.github/workflows/deploy.yml b/src/main/java/com/auction/deploy.yml similarity index 100% rename from .github/workflows/deploy.yml rename to src/main/java/com/auction/deploy.yml diff --git a/target/classes/com/auction/scraper/Main.class b/target/classes/com/auction/scraper/Main.class deleted file mode 100644 index d400324056ade1da88d314be02d6490ffe3f6012..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 635 zcmZ{iO>fgc5Qg8)mlI>sCLw7Wpk1JcltX>w5QKy(^^{Vigj_gn+*P{4_Ezh45kCtK zAaURa@S_m3cBFum`Y@yU*yo+y@$WxBe*t)f6CV{+J=6l!(O}qLi#rj6{Mrrv*sq@V!x~omnGAGHIgCFq#{! zGy7SsKk>JDWR*_&EHdI&8Xx=Uc<2V`;Sob`2ZO=8b;LL&k#VU~j7t(KT}@6GO$->q z51Hg!p$(r$vB)xRH8*+6?TzGFDSYN($S{m_5{h!9a8n5{g(9iixxSVRdsCIlcX_gu zW-gX7Wx7)xiFhH5a`7fvvo|WEn@;ZoPKcNk;KBIgu1io|m=!U4JIW0HOy?$&7s`#$ zawDF(x56_V&_3N)0dpHAdq`18o{_J=`~mj0D38dxGEl{1vO(E^CwNLx3r9Gnj5~Z@ pz<|y-c-@EJvFCiB{1((E2+`^1XwVA1e}ElunhJz^PPT#P diff --git a/target/classes/com/auction/scraper/TroostwijkScraper$DatabaseService.class b/target/classes/com/auction/scraper/TroostwijkScraper$DatabaseService.class deleted file mode 100644 index 55d52d544fd39626689fd6103e250dccb6af9288..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9104 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 diff --git a/target/classes/com/auction/scraper/TroostwijkScraper$Lot.class b/target/classes/com/auction/scraper/TroostwijkScraper$Lot.class deleted file mode 100644 index 23d37874acfb969ef0efdd4eef528f1873cda169..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1128 zcma)6-A)rh6#j;`EVPRVB3SVU6|@Cq{YNcgBE*O(NYcuMchhC41KXWuc2>fbPsD|Z zQR0QSCccD^piiKl*lN9OoE@51^J}&FzU8oR%;is% zyk^GK{%bs3!(Z&0O@G0~MNBaC8?_?C*oY|U@(XHu!~?Os!N8Uo3V||~FBoY8>fLaf zEtyioXzFQ=+PfiW0J57F?sj+>Z*t$nT4;v6+3iwbephgk`h4njTj^bfq91E5Li1GG zTuauLD15TzVjVCHW@B4bMs7-B-Ch&YqS_$9!MY5^YTRiF-Q=ybHapC9uBDYTW!}7z zbhMfJvDbwTG}K93@+vekSftⅆ<-`{p}Ur&47yy6>DESlQ#9}KZ`eOXG&*U6_I&P zJLzDaVd_{#Fu2QMDD+~$qbQjREioo&{d?%*4A6TCm+1>!$>=1e68UOIuVu87(Q4*5 zoyjw}p7`I$aK6GB!QkFLhOD%Yv5z>vN5&j1p#3X={XmKRJOomm<9=D^JE$8x6roQX7(D6Ca1|*bcTkWOfQZ`ja%l zkZ9r$@JAWXY)h=E52S9gduGm_^L^*~^Vhc@0G`0lA%SEDDHn4{Gt>e#@cA$>QiXmL zXnriTf1s6$%&9#3&>CrqO=aYJ8E|XX68c02qPWeFHa!^?9}`StW}KRXEOHq*F6QAf ztQ_$Z{?Q+B+4o-#O;3cz5-Uw~&txb~ogrB&w==lHaCgFZpGVQD(wzw>iZ%xiS2M`F zSi&`ir!&XN;6?*;{5BFg_YGFpb+nk6f^xNezZ>x-BiEMV0pc!OcH zH0?O8DYqHwrT-|a1xW3v4n?}ykfCS}2Zur*@WXx_y9#)}&9$`mu`*@5$?$x3(&BcF z!FwZ2Pj&XWrZO3!339b7%ta~wZV$sosT^lNZu!5>2-az-p$^0=Y2zu>cyU|Wwt3I^P2V|gNGFLrRIpHU@r`X-s#h9 z3M$0XB>i}iaEDehOWVmj&n_jM67_kC diff --git a/target/classes/com/auction/scraper/TroostwijkScraper$NotificationService.class b/target/classes/com/auction/scraper/TroostwijkScraper$NotificationService.class deleted file mode 100644 index f1950ab83b04d341b7ad7ba3eb6c5931d6139980..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5720 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 diff --git a/target/classes/com/auction/scraper/TroostwijkScraper$ObjectDetectionService.class b/target/classes/com/auction/scraper/TroostwijkScraper$ObjectDetectionService.class deleted file mode 100644 index a123796023f8d66af67e9844a0def3544cfb42c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5821 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 N@f_!=^vtH<{{r9>8zTS!