name: checks on: push: pull_request: jobs: frontend-jobs: name: Set up Node and other necessary dependencies for Frontend Tests and Build runs-on: ubuntu-latest steps: - name: Info run: | echo "Triggered by ${{ gitea.event_name }} event" echo "Branch: ${{ gitea.ref }}" echo "Repository: ${{ gitea.repository }}" - name: Install Node.js, npm, and Yarn (optimized) run: | set -e echo "Preparing Node.js, npm, and Yarn setup..." if command -v apt >/dev/null 2>&1; then echo "→ Using apt (Debian/Ubuntu)..." export DEBIAN_FRONTEND=noninteractive apt-get update -qq >/dev/null apt-get install -y -qq curl ca-certificates >/dev/null curl -fsSL https://deb.nodesource.com/setup_20.x | bash - >/dev/null 2>&1 apt-get install -y -qq nodejs >/dev/null npm install -g yarn --silent elif command -v apk >/dev/null 2>&1; then echo "→ Using apk (Alpine)..." apk add --no-cache curl nodejs npm >/dev/null npm install -g yarn --silent elif command -v dnf >/dev/null 2>&1; then echo "→ Using dnf (Fedora/RHEL)..." dnf install -y -q curl ca-certificates nodejs npm >/dev/null npm install -g yarn --silent else echo "No supported package manager found (apt, apk, dnf)." exit 1 fi echo "Node.js, npm, and Yarn installed successfully:" node -v npm -v yarn -v - name: Checkout repository manually env: TOKEN: ${{ secrets.ACCESS_TOKEN }} CLONE_URL: ${{ vars.CLONE_URL }} run: | echo "Cloning from $CLONE_URL" echo "Cloning ALL_REPO_TOKEN $ALL_REPO_TOKEN" CLONE_URL_WITH_AUTH=$(echo "$CLONE_URL" | sed "s#https://#https://$ALL_REPO_TOKEN@#") git clone --quiet "$CLONE_URL_WITH_AUTH" . echo "${{ gitea.repository }} cloned successfully." # Install frontend dependencies and run tests - name: Install frontend dependencies and run tests #uses: actions/cache@v3 working-directory: ./frontend with: path: | ~/.yarn/cache ./node_modules key: frontend-${{ runner.os }}-yarn-${{ hashFiles('frontend/yarn.lock') }} restore-keys: | frontend-${{ runner.os }}-yarn- run: | yarn install --frozen-lockfile #yarn test --watchAll=false --ci #Check frontend linting - name: Check frontend linting working-directory: ./frontend run: yarn lint backend-jobs: name: Set up Java for Backend Tests and Build runs-on: ubuntu-latest steps: # Checkout repository first - name: Checkout repository manually env: TOKEN: ${{ secrets.ACCESS_TOKEN }} CLONE_URL: ${{ vars.CLONE_URL }} run: | echo "Cloning from $CLONE_URL" echo "Cloning ALL_REPO_TOKEN $ALL_REPO_TOKEN" CLONE_URL_WITH_AUTH=$(echo "$CLONE_URL" | sed "s#https://#https://$ALL_REPO_TOKEN@#") git clone --quiet "$CLONE_URL_WITH_AUTH" . echo "${{ gitea.repository }} cloned successfully." - name: Set up Java 21 and Maven run: | if command -v act >/dev/null 2>&1; then echo "Detected act runner, installing OpenJDK 21 via apt-get..." sudo apt-get update sudo apt-get install -y openjdk-21-jdk maven else echo "Detected GitHub runner, using actions/setup-java..." fi shell: bash - name: Install OpenJDK 21 shell: bash run: | set -e # Check if apt-get exists; if not, install it if ! command -v apt-get &> /dev/null; then echo "apt-get not found. Attempting to install..." if command -v apk &> /dev/null; then echo "Using apk to install apt (Alpine detected)..." apk update apk add --no-cache apt elif command -v dnf &> /dev/null; then echo "Using dnf (Fedora/RHEL detected)..." dnf install -y apt elif command -v yum &> /dev/null; then echo "Using yum (CentOS/RHEL detected)..." yum install -y apt else echo "No supported package manager found!" exit 1 fi fi # Continue installation using apt-get apt-get update -y apt-get install -y apt-transport-https ca-certificates curl gnupg wget software-properties-common # Download and install Oracle JDK 21 wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.deb apt install -y ./jdk-21_linux-x64_bin.deb # Verify installation java -version - uses: actions/checkout@v5 - name: Set up JDK 21 for x64 uses: actions/setup-java@v4 with: java-version: '21' #distribution: 'temurin' architecture: x64 cache: maven cache-dependency-path: 'pom.xml' # optional - name: Set up Maven uses: stCarolas/setup-maven@v5 with: maven-version: 3.9.9 - name: Cache Maven dependencies uses: actions/cache@v3 with: path: ~/.m2/repository key: maven-${{ runner.os }}-${{ hashFiles('**/pom.xml') }} restore-keys: | maven-${{ runner.os }}- - name: Test & build backend working-directory: ./src run: | echo "Started test & build backend..." ls . mvn clean verify -B echo "Backend tests and build completed successfully." # mvn clean verify package -B - name: Done run: echo "Workflow successfully completed."