Add route to display version information. (#195)

* Add version information route.

* Use build action for tests.

* Add version test to script.

* Add testing directory to dockerignore.

* Don't unnecessarily set permission for gradle wrapper script.
This commit is contained in:
Kavin 2022-02-22 09:16:45 +00:00 committed by GitHub
parent bda8ccfc19
commit 94f5fa37ac
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 34 additions and 10 deletions

View file

@ -8,3 +8,4 @@ LICENSE
*.md
config.properties
data/
testing/

View file

@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
java: [11, 17]
java: [ 11, 17 ]
steps:
- uses: actions/checkout@v2.4.0
@ -22,6 +22,5 @@ jobs:
distribution: temurin
check-latest: true
cache: "gradle"
- name: Run Build
run: chmod +x ./gradlew && ./gradlew build
run: ./gradlew build

View file

@ -18,10 +18,14 @@ jobs:
- testing/docker-compose.yugabytedb.yml
steps:
- uses: actions/checkout@v2.4.0
with:
fetch-depth: 0
- name: Create Version File
run: echo $(git log -1 --date=short --pretty=format:%cd)-$(git rev-parse --short HEAD) > VERSION
- name: Build Locally
run: docker build . -t 1337kavin/piped:latest
uses: docker/build-push-action@v2.9.0
with:
context: .
load: true
tags: 1337kavin/piped:latest
- name: Start Docker-Compose services
run: docker-compose -f ${{ matrix.docker-compose-file }} up -d && sleep 5
- name: Run tests

View file

@ -12,8 +12,8 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.4.0
with:
fetch-depth: 0
- name: Create Version File
run: echo $(git log -1 --date=short --pretty=format:%cd)-$(git rev-parse --short HEAD) > VERSION
- name: Set up QEMU
uses: docker/setup-qemu-action@v1.2.0
with:
@ -40,8 +40,8 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.4.0
with:
fetch-depth: 0
- name: Create Version File
run: echo $(git log -1 --date=short --pretty=format:%cd)-$(git rev-parse --short HEAD) > VERSION
- name: Set up QEMU
uses: docker/setup-qemu-action@v1.2.0
with:
@ -64,3 +64,5 @@ jobs:
platforms: linux/amd64,linux/arm64
push: true
tags: 1337kavin/piped:latest,1337kavin/piped:openj9
cache-from: type=gha
cache-to: type=gha,mode=max

3
.gitignore vendored
View file

@ -23,3 +23,6 @@ bin/
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
# Version File
VERSION

View file

@ -12,6 +12,8 @@ WORKDIR /app/
COPY --from=build /app/build/libs/piped-1.0-all.jar /app/piped.jar
COPY VERSION .
EXPOSE 8080
CMD java -jar /app/piped.jar

View file

@ -12,6 +12,8 @@ WORKDIR /app/
COPY --from=build /app/build/libs/piped-1.0-all.jar /app/piped.jar
COPY VERSION .
EXPOSE 8080
CMD java -server -XX:+UnlockExperimentalVMOptions -XX:+OptimizeStringConcat -XX:+UseStringDeduplication -XX:+UseCompressedOops -XX:+UseNUMA -XX:+UseParallelGC -XX:-UseBiasedLocking -Xshareclasses:allowClasspaths -jar /app/piped.jar

View file

@ -45,6 +45,7 @@ public class ServerLauncher extends MultithreadedHttpServerLauncher {
RoutingServlet router = RoutingServlet.create()
.map(GET, "/healthcheck", request -> getRawResponse("OK".getBytes(UTF_8), "text/plain", "no-cache"))
.map(GET, "/version", AsyncServlet.ofBlocking(executor, request -> getRawResponse(Constants.VERSION.getBytes(UTF_8), "text/plain", "no-cache")))
.map(HttpMethod.OPTIONS, "/*", request -> HttpResponse.ofCode(200))
.map(GET, "/webhooks/pubsub", request -> HttpResponse.ok200().withPlainText(Objects.requireNonNull(request.getQueryParameter("hub.challenge"))))
.map(POST, "/webhooks/pubsub", AsyncServlet.ofBlocking(executor, request -> {

View file

@ -5,11 +5,13 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
import me.kavin.piped.utils.PageMixin;
import okhttp3.OkHttpClient;
import okhttp3.brotli.BrotliInterceptor;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.schabi.newpipe.extractor.NewPipe;
import org.schabi.newpipe.extractor.Page;
import org.schabi.newpipe.extractor.StreamingService;
import java.io.File;
import java.io.FileReader;
import java.net.InetSocketAddress;
import java.net.ProxySelector;
@ -43,6 +45,8 @@ public class Constants {
public static final int FEED_RETENTION;
public static final String VERSION;
public static final ObjectMapper mapper = new ObjectMapper().addMixIn(Page.class, PageMixin.class);
public static final Object2ObjectOpenHashMap<String, String> hibernateProperties = new Object2ObjectOpenHashMap<>();
@ -89,6 +93,9 @@ public class Constants {
}
h2client = builder.build();
h2_no_redir_client = builder_noredir.build();
VERSION = new File("VERSION").exists() ?
IOUtils.toString(new FileReader("VERSION")) :
"unknown";
} catch (Exception e) {
throw new RuntimeException(e);
}

View file

@ -3,6 +3,9 @@
CURLOPTS=(-i -s -S -o /dev/null -f -w "%{http_code}\tTime:\t%{time_starttransfer}\t%{url_effective}\n")
HOST=127.0.0.1:8080
# Version Test
curl ${CURLOPTS[@]} $HOST/version || exit 1
# Trending Page
curl ${CURLOPTS[@]} $HOST/trending?region=US || exit 1