diff --git a/.dockerignore b/.dockerignore index 0a69d16..c33348a 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,5 +1,5 @@ .git -.gitlab-ci.yml +.gitea .idea .mvn src diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml new file mode 100644 index 0000000..0bb9806 --- /dev/null +++ b/.gitea/workflows/ci.yml @@ -0,0 +1,201 @@ +name: CI + +on: + push: + branches: + - "main" + tags: + - 'v*' + pull_request: + branches: + - "main" + +env: + MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=${{ github.workspace }}/.m2/repository -Dorg.slf4j.simpleLogger.showDateTime=true -Djava.awt.headless=true" + MAVEN_CLI_OPTS: "--batch-mode --errors --fail-at-end --show-version --no-transfer-progress -DinstallAtEnd=true -DdeployAtEnd=true" + # Docker image name; expects REGISTRY_URL like registry.example.com + CI_REGISTRY_IMAGE: "${{ secrets.REGISTRY_URL }}/${{ github.repository }}" + +jobs: + compile: + name: Compile + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Set up JDK + uses: actions/setup-java@v5 + with: + distribution: 'temurin' + java-version: '25' + cache: 'maven' + + - name: Cache Maven local repo and wrapper + uses: actions/cache@v5 + with: + path: | + ~/.m2/repository + .mvn + key: m2-${{ runner.os }}-${{ hashFiles('**/pom.xml') }} + restore-keys: | + m2-${{ runner.os }}- + + - name: Compile + run: | + chmod +x ./mvnw + ./mvnw $MAVEN_CLI_OPTS compile + + test: + name: Test + runs-on: ubuntu-latest + needs: compile + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Set up JDK + uses: actions/setup-java@v5 + with: + distribution: 'temurin' + java-version: '25' + cache: 'maven' + + - name: Cache Maven local repo and wrapper + uses: actions/cache@v5 + with: + path: | + ~/.m2/repository + .mvn + key: m2-${{ runner.os }}-${{ hashFiles('**/pom.xml') }} + restore-keys: | + m2-${{ runner.os }}- + + - name: Run tests + run: | + chmod +x ./mvnw + ./mvnw $MAVEN_CLI_OPTS test + + - name: Upload test reports (artifact) + if: always() + uses: actions/upload-artifact@v5 + with: + name: junit-reports + path: | + **/target/*-reports/TEST-*.xml + if-no-files-found: ignore + + package: + name: Package + runs-on: ubuntu-latest + needs: test + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Set up JDK + uses: actions/setup-java@v5 + with: + distribution: 'temurin' + java-version: '25' + cache: 'maven' + + - name: Cache Maven local repo and wrapper + uses: actions/cache@v5 + with: + path: | + ~/.m2/repository + .mvn + key: m2-${{ runner.os }}-${{ hashFiles('**/pom.xml') }} + restore-keys: | + m2-${{ runner.os }}- + + - name: Build package (skip tests) + run: | + chmod +x ./mvnw + ./mvnw $MAVEN_CLI_OPTS package -DskipTests=true + + - name: Upload Maven artifacts + uses: actions/upload-artifact@v5 + with: + name: maven-artifacts + path: | + target/netneutrality.jar + startup.sh + if-no-files-found: error + + docker-main: + name: Docker Build and Push (main) + runs-on: ubuntu-latest + needs: package + if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} + permissions: + contents: read + packages: write + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Download build artifacts + uses: actions/download-artifact@v8 + with: + name: maven-artifacts + path: . + + - name: Log in to registry + uses: docker/login-action@v4 + with: + registry: ${{ secrets.REGISTRY_URL }} + username: ${{ secrets.REGISTRY_USER }} + password: ${{ secrets.REGISTRY_PASSWORD }} + + - name: Build and push (main) + uses: docker/build-push-action@v7 + with: + context: . + file: ./Dockerfile + push: true + tags: "${{ secrets.REGISTRY_URL }}/${{ secrets.REGISTRY_USER }}/netneutrality:main" + + docker-release: + name: Docker Build and Push (release) + runs-on: ubuntu-latest + needs: package + if: ${{ startsWith(github.ref, 'refs/tags/') }} + permissions: + contents: read + packages: write + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Download build artifacts + uses: actions/download-artifact@v8 + with: + name: maven-artifacts + path: . + + - name: Compute release version + id: rel + shell: bash + run: | + # Strip leading 'v' if present (e.g., v1.2.3 -> 1.2.3) + ver="${GITHUB_REF_NAME#v}" + echo "version=$ver" >> "$GITHUB_OUTPUT" + + - name: Log in to registry + uses: docker/login-action@v4 + with: + registry: ${{ secrets.REGISTRY_URL }} + username: ${{ secrets.REGISTRY_USER }} + password: ${{ secrets.REGISTRY_PASSWORD }} + + - name: Build and push (release + latest) + uses: docker/build-push-action@v7 + with: + context: . + file: ./Dockerfile + push: true + tags: | + ${{ secrets.REGISTRY_URL }}/${{ secrets.REGISTRY_USER }}/netneutrality:${{ steps.rel.outputs.version }} + ${{ secrets.REGISTRY_URL }}/${{ secrets.REGISTRY_USER }}/netneutrality:latest diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index d7db9e4..0000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,101 +0,0 @@ -image: docker.io/library/eclipse-temurin:25-jdk-alpine@sha256:da683f4f02f9427597d8fa162b73b8222fe08596dcebaf23e4399576ff8b037e - -variables: - MAVEN_OPTS: >- - -Dhttps.protocols=TLSv1.2 - -Dmaven.repo.local=$CI_PROJECT_DIR/.m2/repository - -Dorg.slf4j.simpleLogger.showDateTime=true - -Djava.awt.headless=true - - MAVEN_CLI_OPTS: >- - --batch-mode - --errors - --fail-at-end - --show-version - --no-transfer-progress - -DinstallAtEnd=true - -DdeployAtEnd=true - -cache: - key: ${CI_PROJECT_NAME}-${CI_COMMIT_REF_SLUG} - paths: - - .m2/repository - - .mvn - policy: pull-push - -stages: - - compile - - test - - package - - docker-build - -compile: - stage: compile - script: - - "chmod +x ./mvnw" - - "./mvnw $MAVEN_CLI_OPTS compile" - rules: - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - - if: '$CI_COMMIT_BRANCH == "main"' - - if: '$CI_COMMIT_TAG' - -test: - stage: test - script: - - "chmod +x ./mvnw" - - "./mvnw $MAVEN_CLI_OPTS test" - artifacts: - when: always - reports: - junit: - - "**/target/*-reports/TEST-*.xml" - codequality: - - "target/gl-code-quality-report.json" - rules: - - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' - - if: '$CI_COMMIT_BRANCH == "main"' - - if: '$CI_COMMIT_TAG' - -package: - stage: package - script: - - "chmod +x ./mvnw" - - "./mvnw $MAVEN_CLI_OPTS package -DskipTests=true" - artifacts: - name: "Maven artifacts from $CI_PROJECT_NAME on $CI_COMMIT_REF_SLUG" - paths: - - target/netneutrality.jar - - startup.sh - expire_in: 1 week - rules: - - if: '$CI_COMMIT_BRANCH == "main"' - - if: '$CI_COMMIT_TAG' - -docker-build-main: - stage: docker-build - image: quay.io/buildah/stable - needs: - - job: package - artifacts: true - script: - - echo "$CI_REGISTRY_PASSWORD" | buildah login -u "$CI_REGISTRY_USER" --password-stdin "$CI_REGISTRY" - - buildah bud -f Dockerfile -t $CI_REGISTRY_IMAGE:main . - - buildah push $CI_REGISTRY_IMAGE:main - rules: - - if: '$CI_COMMIT_BRANCH == "main"' - -docker-build-release: - stage: docker-build - image: quay.io/buildah/stable - needs: - - job: package - artifacts: true - script: - - export RELEASE_VERSION="${CI_COMMIT_TAG#v}" - - echo "$CI_REGISTRY_PASSWORD" | buildah login -u "$CI_REGISTRY_USER" --password-stdin "$CI_REGISTRY" - - buildah bud -f Dockerfile -t $CI_REGISTRY_IMAGE:$RELEASE_VERSION . - - buildah push $CI_REGISTRY_IMAGE:$RELEASE_VERSION - - buildah tag $CI_REGISTRY_IMAGE:$RELEASE_VERSION $CI_REGISTRY_IMAGE:latest - - buildah push $CI_REGISTRY_IMAGE:latest - rules: - - if: '$CI_COMMIT_TAG' \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 7f13d62..7e03638 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM docker.io/library/eclipse-temurin:25-jre@sha256:0a9c973778b03b88f39ccae4f8cc26022d84a3237a818cb98770369eb6c5daf9 +FROM eclipse-temurin:25-jre RUN apt-get update && apt-get install -y --no-install-recommends netcat-openbsd curl && rm -rf /var/lib/apt/lists/* diff --git a/docker-compose.yml b/docker-compose.yml index 40f7a93..1deb98a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,7 +15,7 @@ services: - MARIADB_AUTO_UPGRADE=1 netneutrality-bot: - image: registry.bobert.me/anthorob/netneutrality:${NETNEUTRALITY_TAG:-latest} + image: gitea.bobert.me/anthorob/netneutrality:${NETNEUTRALITY_TAG:-latest} container_name: bot restart: unless-stopped env_file: .env diff --git a/pom.xml b/pom.xml index 1cfc819..5e39bb9 100644 --- a/pom.xml +++ b/pom.xml @@ -119,20 +119,6 @@ xml - - - de.chkal.maven - gitlab-code-quality-plugin - 1.1.0 - - - test - - generate - - - -