Skip to content
Merged
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
58 changes: 58 additions & 0 deletions .github/workflows/build-and-deploy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: App build and deploy

on:
release:
types: [published]
push:
branches:
- master

env:
REGISTRY: europe-north1-docker.pkg.dev/${{ secrets.NAIS_MANAGEMENT_PROJECT_ID }}/dapla-metadata
DOCKER_IMAGE: europe-north1-docker.pkg.dev/${{ secrets.NAIS_MANAGEMENT_PROJECT_ID }}/dapla-metadata/klass-api:${{ github.sha }}

jobs:
docker-build:
name: Docker build
permissions:
contents: "read"
id-token: "write"
runs-on: ubuntu-latest
outputs:
nais_config_path: ${{ steps.nais-deploy-vars.outputs.nais_config_path }}
nais_cluster: ${{ steps.nais-deploy-vars.outputs.nais_cluster }}

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Build with Maven
run: mvn --batch-mode install -pl '!:klass-forvaltning' -DskipTests

- name: Build and push
uses: nais/docker-build-push@v0
id: docker-build-push
with:
team: dapla-metadata
dockerfile: klass-api/Dockerfile
docker_context: klass-api

- name: Generate NAIS deploy variables
id: nais-deploy-vars
run: |
if [[ ${{ github.event_name }} == "release" ]]; then
echo "nais_cluster=prod" >> "$GITHUB_OUTPUT"
echo "nais_config_path=.nais/prod/nais.yaml" >> "$GITHUB_OUTPUT"
else
echo "nais_cluster=test" >> "$GITHUB_OUTPUT"
echo "nais_config_path=.nais/test/nais.yaml" >> "$GITHUB_OUTPUT"
fi

- uses: nais/deploy/actions/deploy@v2
env:
CLUSTER: ${{ steps.nais-deploy-vars.outputs.nais_cluster }}
RESOURCE: ${{ steps.nais-deploy-vars.outputs.nais_config_path }}
VAR: image=${{ steps.docker-build-push.outputs.image }}
DEPLOY_SERVER: deploy.ssb.cloud.nais.io:443
WORKLOAD_IMAGE: ${{ steps.docker-build-push.outputs.image }}
TELEMETRY: ${{ steps.docker-build-push.outputs.telemetry }}
49 changes: 49 additions & 0 deletions .nais/test/nais.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# Deploy config for the test cluster
apiVersion: nais.io/v1alpha1
kind: Application
metadata:
name: klass-api
namespace: dapla-metadata
labels:
team: dapla-metadata
spec:
image: "{{ image }}" # Injected from the GitHub Action
port: 8080

ingresses:
- https://klass-api.intern.test.ssb.no

accessPolicy:

replicas:
min: 1
max: 1
resources:
requests:
cpu: 20m
memory: 400Mi

gcp:
sqlInstances:
- type: POSTGRES_17
tier: db-f1-micro
databases:
- name: klass-db

prometheus:
enabled: true
path: /prometheus
port: "8090"

liveness:
path: /actuator/health/liveness
port: 8080
initialDelay: 60
readiness:
path: /actuator/health/readiness
port: 8080
initialDelay: 60
startup:
path: /actuator/health/liveness
port: 8080
initialDelay: 60
4 changes: 4 additions & 0 deletions klass-api/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
FROM eclipse-temurin:17-jre
WORKDIR /app
COPY target/*.war app.war
ENTRYPOINT ["java", "-jar", "app.war"]
9 changes: 9 additions & 0 deletions klass-api/src/main/resources/application-postgres.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# custom properties used when "postgres" Profile is used

spring.datasource.url=${NAIS_DATABASE_KLASS_API_KLASS_DB_JDBC_URL}
spring.datasource.username=${NAIS_DATABASE_KLASS_API_KLASS_DB_USERNAME}
spring.datasource.password=${NAIS_DATABASE_KLASS_API_KLASS_DB_PASSWORD}
spring.datasource.driverclassName=org.postgresql.Driver

spring.jpa.hibernate.ddl-auto=validate

3 changes: 2 additions & 1 deletion klass-api/src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ info.build.version=@project.version@
# Profiles for production
# production = disables test users
# mariadb = use remote mariaDB database
# postgres = use remote postgres database
# remote-solr = use remote Solr server (make sure klass.env.search.solr.url is correct)
# skip-indexing = skips indexing classifications for search at startup, (useful when running multiple nodes)
#
Expand All @@ -23,7 +24,7 @@ info.build.version=@project.version@
#-----------------------

# Dev. self contained
spring.profiles.active=api, h2, small-import, skip-indexing, embedded-solr
spring.profiles.active=api, h2-inmemory , small-import, skip-indexing, embedded-solr

# Dev. with external dependencies (db and solr)
#spring.profiles.active=api,mariadb,remote-solr,skip-indexing
Expand Down
6 changes: 6 additions & 0 deletions klass-shared/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
<klass.doc.env.url />
<klass.doc.env.port />

<postgresql.version>42.7.5</postgresql.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<findbugs-version>3.0.5</findbugs-version>
Expand Down Expand Up @@ -113,6 +114,11 @@
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>${postgresql.version}</version>
</dependency>
<dependency>
<!--java based ldap server for testing-->
<groupId>org.apache.directory.server</groupId>
Expand Down