From f8ae4a2665ec2b3cd87185585ae7e66087c6af75 Mon Sep 17 00:00:00 2001 From: Patrick Date: Fri, 31 Oct 2025 18:04:46 +0100 Subject: [PATCH] add ci status check --- .gitea/workflows/checks-and-policy.yml | 185 +++++++++++++++++++++++++ 1 file changed, 185 insertions(+) create mode 100644 .gitea/workflows/checks-and-policy.yml diff --git a/.gitea/workflows/checks-and-policy.yml b/.gitea/workflows/checks-and-policy.yml new file mode 100644 index 0000000..e2e1d80 --- /dev/null +++ b/.gitea/workflows/checks-and-policy.yml @@ -0,0 +1,185 @@ +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 + + - name: Set frontend status + uses: actions/github-script@v7 + with: + github-token: ${{ secrets.ACCESS_TOKEN }} + script: | + github.repos.createCommitStatus({ + owner: context.repo.owner, + repo: context.repo.repo, + sha: context.sha, + state: 'success', + context: 'CI Frontend', + description: 'Frontend unit tests passed' + }) + + backend-jobs: + name: Set up Java for Backend Tests and Build + runs-on: ubuntu-latest + #container: + #image: eclipse-temurin:21-jdk + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup Java 21 + Maven + run: | + echo "Detecting package manager..." + if command -v apt-get >/dev/null 2>&1; then + PM=apt + elif command -v apk >/dev/null 2>&1; then + PM=apk + elif command -v yum >/dev/null 2>&1; then + PM=yum + else + echo "No known package manager found. Will install JDK manually." + PM=none + fi + + echo "Package manager detected: $PM" + + if [ "$PM" = "apt" ]; then + apt-get update -y + apt-get install -y openjdk-21-jdk maven wget tar + JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64 + elif [ "$PM" = "apk" ]; then + apk update + apk add openjdk21 maven wget tar + JAVA_HOME=/usr/lib/jvm/java-21-openjdk + elif [ "$PM" = "yum" ]; then + yum install -y java-21-openjdk-devel maven wget tar + JAVA_HOME=/usr/lib/jvm/java-21-openjdk + else + # Fallback: manual download + JDK_URL="https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz" + mkdir -p /opt/jdk + wget -q -O /tmp/jdk.tar.gz $JDK_URL + tar -xzf /tmp/jdk.tar.gz -C /opt/jdk --strip-components=1 + JAVA_HOME=/opt/jdk + fi + + # Export JAVA_HOME and update PATH for subsequent steps + echo "JAVA_HOME=$JAVA_HOME" >> $GITEA_ENV + echo "$JAVA_HOME/bin" >> $GITEA_PATH + export JAVA_HOME=$JAVA_HOME + export PATH=$JAVA_HOME/bin:$PATH + + # Verify Java and Maven installation + java -version + mvn -version + + - name: Verify Java setup + run: | + java -version + + - name: Verify Java setup + run: | + ls -l $JAVA_HOME/bin/java + file $JAVA_HOME/bin/java || true + java -version + + # Run backend tests and build + - name: Test & build backend + working-directory: . + run: + mvn clean test -Dspring.profiles.active=test + + - name: Set backend status + uses: actions/github-script@v7 + with: + github-token: ${{ secrets.ACCESS_TOKEN }} + script: | + github.repos.createCommitStatus({ + owner: context.repo.owner, + repo: context.repo.repo, + sha: context.sha, + state: 'success', + context: 'CI Backend', + description: 'Backend unit tests passed' + }) + + - name: Done + run: echo "Workflow successfully completed." \ No newline at end of file