From b34d7912ebbb1b674f23ff3841e1730262b4d413 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicklas=20K=C3=B6rtge?= Date: Wed, 18 Sep 2024 21:32:12 +0200 Subject: [PATCH] Add maven tests (#11) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - add basic cicd pipeline Signed-off-by: Nicklas Körtge --- .github/workflows/backend.yml | 92 ++++++++++++++++++++++++++++++++++ .github/workflows/frontend.yml | 68 +++++++++++++++++++++++++ chart/Chart.yaml | 2 +- docker-compose.yaml | 2 +- 4 files changed, 162 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/backend.yml create mode 100644 .github/workflows/frontend.yml diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml new file mode 100644 index 000000000..935db08ce --- /dev/null +++ b/.github/workflows/backend.yml @@ -0,0 +1,92 @@ +# 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: Build Backend + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + release: + types: [ "released" ] + workflow_dispatch: + +env: + REGISTRY: "ghcr.io" + IMAGE_NAME: "cbomkit" + +jobs: + build: + runs-on: ubuntu-latest + services: + postgres: + image: postgres:16-alpine + env: + POSTGRES_DB: postgres + POSTGRES_PASSWORD: cbomkit + POSTGRES_USER: cbomkit + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + ports: + - 5432:5432 + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: maven + - name: Create Maven settings.xml + run: | + echo " + + + github + ${{ github.actor }} + ${{ secrets.GITHUB_TOKEN }} + + + " > ~/.m2/settings.xml + - name: Build with Maven + run: mvn clean package + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/cbomkit/${{ env.IMAGE_NAME }} + tags: | + type=ref,event=branch + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=sha,format=long + - name: Log in to the Container registry + if: github.event_name != 'pull_request' + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: . + file: "./src/main/docker/Dockerfile.jvm" + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + # Optional: Uploads the full dependency graph to GitHub to improve the quality of Dependabot alerts this repository can receive + - name: Update dependency graph + uses: advanced-security/maven-dependency-submission-action@v4 \ No newline at end of file diff --git a/.github/workflows/frontend.yml b/.github/workflows/frontend.yml new file mode 100644 index 000000000..d88d51386 --- /dev/null +++ b/.github/workflows/frontend.yml @@ -0,0 +1,68 @@ +# 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: Build Frontend + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + release: + types: [ "released" ] + workflow_dispatch: + +env: + REGISTRY: "ghcr.io" + IMAGE_NAME: "cbomkit-frontend" + +jobs: + build: + defaults: + run: + working-directory: "./frontend" + runs-on: ubuntu-latest + strategy: + matrix: + node-version: [21.x] + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + - name: Install node packages + run: npm ci + - name: Build + run: npm run build + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/cbomkit/${{ env.IMAGE_NAME }} + tags: | + type=ref,event=branch + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=sha,format=long + - name: Log in to the Container registry + if: github.event_name != 'pull_request' + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: "./frontend" + file: "./frontend/docker/Dockerfile" + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/chart/Chart.yaml b/chart/Chart.yaml index 0077b198c..a5a999f9f 100644 --- a/chart/Chart.yaml +++ b/chart/Chart.yaml @@ -25,5 +25,5 @@ appVersion: "1.16.0" dependencies: - name: postgresql - version: "15.5.16" + version: "16.4.0" repository: https://charts.bitnami.com/bitnami diff --git a/docker-compose.yaml b/docker-compose.yaml index 77b41817c..1b21cd4d1 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -55,7 +55,7 @@ services: - dev-backend - viewer db: - image: postgres:15-alpine + image: postgres:16-alpine user: postgres environment: POSTGRES_DB: postgres