1. Preparation

1.1. Publish Quarkus Package

First of all the quarkus Backend needs to be in some kind of registry, so we can use the docker image. You can easily achieve this using the Github Container registry. For this we use the following Github-Workflow to publish our backend package to the Github Container registry.

Details

Github-Workflow

name: CD

on:
  workflow_dispatch:
    inputs:
      tags:
        description: 'Tags'
        required: true

jobs:
  build_backend:
    name: Build backend
    runs-on: ubuntu-latest
    env:
      IMAGE_NAME: backend
    defaults:
      run:
        working-directory: ./backend
    steps:
      - name: Check out the repo
        uses: actions/checkout@v2
      - name: Package
        run: mvn package -Dmaven.test.skip
      - name: Login to GitHub Packages
        uses: docker/login-action@v1
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}
      - name: Build image
        run: docker build . -f src/main/docker/Dockerfile.jvm --tag $IMAGE_NAME
      - name: Push image
        run: |
          IMAGE_ID=ghcr.io/${{ github.repository_owner }}/$IMAGE_NAME
          IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]')
          VERSION=$(echo "${{ github.event.inputs.tags }}" | sed -e 's,.*/\(.*\),\1,')
          echo IMAGE_ID=$IMAGE_ID
          echo VERSION=$VERSION
          docker tag $IMAGE_NAME $IMAGE_ID:$VERSION
          docker push $IMAGE_ID:$VERSION

Running the Github-Workflow

cd gh action

1.2. Request a namespace for your deployment

Request a namespace for your deployment from a Beeyond Administratior.

2. Deploy Database

Click on template and choose the "Postgres DB" template

blueprint type

2.1. DB Wildcards

Fill out the wildcards for the "Postgres DB" template

postgres wildcards
Wildcardname Description Example

Name

Name of the service and deployment

auction-db

Database

Database name

db

Password

Password for the specified user

app

User

User name

app

Tip
You can preview the generated yaml using the "Evaluate and Show" button
yaml preview

Since the database is an internal service we do not need an Ingress

postgres ingress

2.2. DB Information

Fill out the information

postgres information
DB Information

Description

Database for the Auction Quarkus App

Class

4ahif

Namespace

<namespace> (auction-app)

To

<Expiry date>

Purpose

Deploy the Auction Quarkus App

3. Deploy Quarkus Backend

Create another blueprint with the "Simple Quarkus Development" template

quarkus template

3.1. Quarkus Wildcards

Fill out the wildcards

quarkus wildcards
Wildcardname Description Example

Name

Name of the service and deployment

auction-backend

Image

Docker Image name

ghcr.io/eminasljivic/backend:v0.2

Database URL

URL to the database

jdbc:postgresql://auction-db:5432/db

Database Username

Database user

app

Database Password

Database Password for the specified user

app

3.2. Quarkus Ingress

Create an Ingress as the Quarkus API is an external service

quarkus ingress

3.3. Quarkus Information

Fill out the information

quarkus information
Quarkus Information

Description

Auction Quarkus Backend

Class

4ahif

Namespace

<namespace> (auction-app)

To

<Expiry date>

Purpose

Deploy the Auction Quarkus App

4. Approval

Now you have to wait until a Beeyond Administrator approves your requested deployments.

Once your deployments got accepted you can view them running under the Profile tab.

deployments running

5. Access Deployment

You can get information about the deployment and copy the ingress from the deployment’s review page. The ingress follows the pattern student.cloud.htl-leonding.ac.at/{namespace}.

quarkus review

5.1. Testing Endpoint

Our Auction-Deployment provides an endpoint at /api/auction/get-running which fetches currently running auctions from the database. In the case of our deployment the full url for the endpoint is https://student.cloud.htl-leonding.ac.at/auction-app/api/auction/get-running.

access deployment