diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..1638299 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,216 @@ +name: CI/CD Pipeline + +on: + push: + branches: [main, dev] + tags: ['*'] + pull_request: + branches: [main, dev] + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +env: + MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository" + MAVEN_CLI_OPTS_SINGLE_THREAD: "-B -V -ntp --fail-at-end" + MAVEN_CLI_OPTS: "-B -V -ntp --fail-at-end -T 1C" + +jobs: + build: + name: Build + runs-on: ubuntu-latest + container: + image: maven:3.9.9-eclipse-temurin-21-alpine + if: github.event_name == 'pull_request' || startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev' + steps: + - name: Checkout code + uses: actions/checkout@v6 + + - name: Cache Maven packages + uses: actions/cache@v5 + with: + path: .m2/repository + key: m2-${{ github.ref_name }}-${{ hashFiles('**/pom.xml') }} + restore-keys: | + m2-${{ github.ref_name }}- + m2- + + - name: Build with Maven + run: mvn ${MAVEN_CLI_OPTS} -pl '!Rapport' clean compile + + build-rapport: + name: Build Rapport PDF + runs-on: ubuntu-latest + container: + image: ghcr.io/r-gld/maven-with-texlive:latest + if: | + (github.event_name == 'push' && github.ref == 'refs/heads/main') || + (github.event_name == 'push' && github.ref == 'refs/heads/dev') || + (github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'rapport')) + continue-on-error: true + steps: + - name: Checkout code + uses: actions/checkout@v6 + + - name: Cache Maven packages + uses: actions/cache@v5 + with: + path: .m2/repository + key: m2-${{ github.ref_name }}-${{ hashFiles('**/pom.xml') }} + restore-keys: | + m2-${{ github.ref_name }}- + m2- + + - name: Build rapport + run: | + mvn ${MAVEN_CLI_OPTS} -pl 'Rapport' clean compile + cp Rapport/target/latex/rapport_principal.pdf rapport_principal.pdf + + - name: Upload rapport PDF + uses: actions/upload-artifact@v6 + with: + name: rapport-${{ github.sha }} + path: rapport_principal.pdf + retention-days: 7 + + test: + name: Unit Tests + runs-on: ubuntu-latest + container: + image: maven:3.9.9-eclipse-temurin-21-alpine + needs: build + if: github.event_name == 'pull_request' || startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev' + steps: + - name: Checkout code + uses: actions/checkout@v6 + + - name: Cache Maven packages + uses: actions/cache@v5 + with: + path: .m2/repository + key: m2-${{ github.ref_name }}-${{ hashFiles('**/pom.xml') }} + restore-keys: | + m2-${{ github.ref_name }}- + m2- + + - name: Run tests with Jacoco + run: mvn ${MAVEN_CLI_OPTS} -pl '!GUI,!CoverageReport,!Rapport' jacoco:prepare-agent test jacoco:report + + - name: Upload test results + if: always() + uses: actions/upload-artifact@v6 + with: + name: test-results + path: | + **/target/surefire-reports/TEST-*.xml + **/target/site/jacoco/jacoco.xml + **/target/classes/ + retention-days: 7 + + testIHM: + name: GUI Tests + runs-on: ubuntu-latest + container: + image: maven:3.9.9-eclipse-temurin-21-alpine + needs: build + if: github.event_name == 'pull_request' || startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev' + steps: + - name: Checkout code + uses: actions/checkout@v6 + + - name: Cache Maven packages + uses: actions/cache@v5 + with: + path: .m2/repository + key: m2-${{ github.ref_name }}-${{ hashFiles('**/pom.xml') }} + restore-keys: | + m2-${{ github.ref_name }}- + m2- + + - name: Install Xvfb and dependencies + run: apk add xvfb libx11-dev xvfb-run gtk+3.0 + + - name: Start Xvfb + run: | + export DISPLAY=:99 + Xvfb $DISPLAY -screen 0 1400x900x24 +extension RANDR & + + - name: Install LexerParser module + run: mvn ${MAVEN_CLI_OPTS} -pl 'LexerParser,CLI' -am install -DskipTests + + - name: Run GUI tests + run: xvfb-run -a mvn ${MAVEN_CLI_OPTS} -pl 'GUI' jacoco:prepare-agent test jacoco:report + + - name: Upload GUI test results + if: always() + uses: actions/upload-artifact@v6 + with: + name: testIHM-results + path: | + **/target/surefire-reports/TEST-*.xml + **/target/site/jacoco/jacoco.xml + **/target/classes/ + retention-days: 7 + + package-and-quality: + name: Package & Quality Analysis + runs-on: ubuntu-latest + container: + image: maven:3.9.9-eclipse-temurin-21-alpine + needs: [build, test, testIHM] + if: github.event_name == 'pull_request' || startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev' + steps: + - name: Install Git + run: apk add --no-cache git + + - name: Checkout code + uses: actions/checkout@v6 + with: + fetch-depth: 0 + + - name: Cache Maven packages + uses: actions/cache@v5 + with: + path: .m2/repository + key: m2-${{ github.ref_name }} + restore-keys: m2- + + - name: Download test artifacts + uses: actions/download-artifact@v7 + with: + name: test-results + path: . + + - name: Download GUI test artifacts + uses: actions/download-artifact@v7 + with: + name: testIHM-results + path: . + + - name: Package JARs + run: mvn ${MAVEN_CLI_OPTS} -pl '!Rapport' -DskipTests package + + - name: Upload JAR artifacts + uses: actions/upload-artifact@v6 + with: + name: jars + path: "**/target/*.jar" + retention-days: 7 + + - name: Cache SonarQube packages + uses: actions/cache@v5 + with: + path: .sonar/cache + key: sonar-${{ github.ref_name }} + restore-keys: sonar- + + - name: Run SonarQube analysis + env: + SONAR_USER_HOME: .sonar + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + SONAR_HOST_URL: ${{ vars.SONAR_HOST_URL }} + run: | + mvn ${MAVEN_CLI_OPTS_SINGLE_THREAD} -pl '!Rapport' -DskipTests sonar:sonar \ + -Dsonar.projectKey=avm-2025-groupe-7 \ + -Dsonar.projectName='avm-2025-groupe-7' diff --git a/.github/workflows/qodana_code_quality.yml b/.github/workflows/qodana_code_quality.yml new file mode 100644 index 0000000..fbe9881 --- /dev/null +++ b/.github/workflows/qodana_code_quality.yml @@ -0,0 +1,39 @@ +#-------------------------------------------------------------------------------# +# Discover all capabilities of Qodana in our documentation # +# https://www.jetbrains.com/help/qodana/about-qodana.html # +#-------------------------------------------------------------------------------# + +name: Qodana +on: + workflow_dispatch: + pull_request: + push: + branches: [main, dev] + tags: ['*'] + +jobs: + qodana: + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + checks: write + steps: + - uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha }} + fetch-depth: 0 + - name: 'Qodana Scan' + uses: JetBrains/qodana-action@v2025.3 + env: + QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }} + with: + # When pr-mode is set to true, Qodana analyzes only the files that have been changed + pr-mode: false + use-caches: true + post-pr-comment: true + use-annotations: true + # Upload Qodana results (SARIF, other artifacts, logs) as an artifact to the job + upload-result: false + # quick-fixes available in Ultimate and Ultimate Plus plans + push-fixes: 'none' \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index 71c4c32..0000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,222 +0,0 @@ -stages: - - build - - test - - sonarqube-check - - package - - deploy - - release - -default: - image: maven:3.9.9-eclipse-temurin-21-alpine - tags: - - avm_groupe7 - before_script: - - chmod +x settings.sh && ./settings.sh - retry: - max: 2 - when: - - api_failure - - script_failure - - unknown_failure - -variables: - MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository" - MAVEN_CLI_OPTS_SINGLE_THREAD: "-B -V -ntp -s .settings.xml --fail-at-end" - MAVEN_CLI_OPTS: "${MAVEN_CLI_OPTS_SINGLE_THREAD} -T 1C" - -cache: - key: "m2-${CI_COMMIT_REF_SLUG}" - policy: pull-push - paths: - - .m2/repository - when: on_success - -check-envvars: - stage: .pre - rules: - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - - if: $CI_COMMIT_TAG - - if: $CI_COMMIT_BRANCH == 'main' - - if: $CI_COMMIT_BRANCH == 'dev' - script: - - > - if [[ -z "$MAVEN_ENT_PASSWORD" ]] - || [[ -z "$MAVEN_ENT_USERNAME" ]] - || [[ -z "$MAVEN_MASTER_PASSWORD" ]] - || [[ -z "$SONAR_HOST_URL" ]] - || [[ -z "$SONAR_TOKEN" ]]; - then echo "Missing env vars"; exit 1; fi - -build: - stage: build - rules: - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - - if: $CI_COMMIT_TAG - - if: $CI_COMMIT_BRANCH == 'main' - - if: $CI_COMMIT_BRANCH == 'dev' - script: - - mvn ${MAVEN_CLI_OPTS} -pl '!Rapport' clean compile - -build-rapport: - stage: build - image: ghcr.io/r-gld/maven-with-texlive:latest - rules: - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - - if: $CI_COMMIT_TAG - - if: $CI_COMMIT_BRANCH == 'main' - - if: $CI_COMMIT_BRANCH == 'dev' - before_script: - - chmod +x settings.sh && ./settings.sh - script: - - mvn -pl 'Rapport' clean compile - - cp Rapport/target/latex/rapport_principal.pdf rapport_principal.pdf - artifacts: - paths: - - rapport_principal.pdf - name: "rapport-${CI_COMMIT_SHORT_SHA}" - expire_in: 1 week - allow_failure: true - - -test: - stage: test - rules: - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - - if: $CI_COMMIT_TAG - - if: $CI_COMMIT_BRANCH == 'main' - - if: $CI_COMMIT_BRANCH == 'dev' - needs: - - build - script: - - mvn ${MAVEN_CLI_OPTS} -pl '!GUI,!CoverageReport,!Rapport' jacoco:prepare-agent test jacoco:report - artifacts: - reports: - junit: "**/target/surefire-reports/TEST-*.xml" - coverage_report: - coverage_format: jacoco - path: "**/target/site/jacoco/jacoco.xml" - paths: - - "**/target/surefire-reports/TEST-*.xml" - - "**/target/site/jacoco/jacoco.xml" - - "**/target/classes/" - expire_in: 1 week - -testIHM: - stage: test - rules: - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - - if: $CI_COMMIT_TAG - - if: $CI_COMMIT_BRANCH == 'main' - - if: $CI_COMMIT_BRANCH == 'dev' - needs: - - build - before_script: - - chmod +x settings.sh && ./settings.sh - - apk add xvfb libx11-dev xvfb-run gtk+3.0 - - export DISPLAY=:99 - - Xvfb $DISPLAY -screen 0 1400x900x24 +extension RANDR & - script: - - mvn ${MAVEN_CLI_OPTS} -pl 'LexerParser' -am install -DskipTests - - xvfb-run -a mvn ${MAVEN_CLI_OPTS} -pl 'GUI' jacoco:prepare-agent test jacoco:report - artifacts: - reports: - junit: "**/target/surefire-reports/TEST-*.xml" - coverage_report: - coverage_format: jacoco - path: "**/target/site/jacoco/jacoco.xml" - paths: - - "**/target/surefire-reports/TEST-*.xml" - - "**/target/site/jacoco/jacoco.xml" - - "**/target/classes/" - expire_in: 1 week - -package: - stage: package - rules: - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - - if: $CI_COMMIT_TAG - - if: $CI_COMMIT_BRANCH == 'main' - - if: $CI_COMMIT_BRANCH == 'dev' - script: - - mvn ${MAVEN_CLI_OPTS} -pl '!Rapport' -DskipTests package - artifacts: - paths: - - "**/target/*.jar" - expire_in: 1 week - needs: - - test - - testIHM - -sonarqube-check: - stage: sonarqube-check - variables: - SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar" # Defines the location of the analysis task cache - GIT_DEPTH: "0" # Tells git to fetch all the branches of the project, required by the analysis task - cache: - key: "sonar-cache" - policy: pull-push - paths: - - .sonar/cache - rules: - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - - if: $CI_COMMIT_BRANCH == 'dev' - script: - - mvn ${MAVEN_CLI_OPTS_SINGLE_THREAD} -pl '!Rapport' -DskipTests sonar:sonar -Dsonar.projectKey=avm-2025-groupe-7 -Dsonar.projectName='avm-2025-groupe-7' - # allow_failure: true # Uncomment this line to not fail the pipeline if the SonarQube analysis fails - needs: - - build - - test - - testIHM - -deploy: - stage: deploy - retry: 2 - rules: - - if: $CI_COMMIT_TAG - - if: $CI_COMMIT_BRANCH == 'main' - needs: - - package - script: - - mvn ${MAVEN_CLI_OPTS} -pl '!Rapport' -DskipTests deploy - -# # Ne marche pas actuellement -#release:prepare: -# stage: release -# rules: -# - if: $CI_COMMIT_BRANCH == 'main' -# when: manual -# before_script: -# - chmod +x settings.sh && ./settings.sh -# - apk add git openssh-client -# - git config --global user.email "ci@groupe7.fr" -# - git config --global user.name "CI Release Bot" -# - mkdir -p ~/.ssh -# - chmod 700 ~/.ssh -# - cp "${GITLAB_SSH_PRIVATE_KEY}" ~/.ssh/id_rsa -# - chmod 600 ~/.ssh/id_rsa -# - ssh-keyscan -t rsa disc.univ-fcomte.fr >> ~/.ssh/known_hosts -# - git remote set-url origin git@disc.univ-fcomte.fr:projet-amv-2025/groupe-7.git -# - git fetch --all -# - git checkout ${CI_COMMIT_BRANCH} -# - git pull origin ${CI_COMMIT_BRANCH} -# script: -# - mvn ${MAVEN_CLI_OPTS_SINGLE_THREAD} -pl '!Rapport' release:clean release:prepare -DpushChanges=true -Darguments="-DskipTests" -# after_script: -# - git push --tags -# artifacts: -# paths: -# - release.properties -# - pom.xml.releaseBackup -# expire_in: 1 day -# allow_failure: false -# -#release:perform: -# stage: release -# rules: -# - if: $CI_COMMIT_BRANCH == 'main' -# when: manual -# needs: -# - release:prepare -# script: -# - mvn ${MAVEN_CLI_OPTS_SINGLE_THREAD} -pl '!Rapport' release:perform -Darguments="-DskipTests" -# allow_failure: false diff --git a/RELEASE.md b/RELEASE.md deleted file mode 100644 index e5ca983..0000000 --- a/RELEASE.md +++ /dev/null @@ -1,198 +0,0 @@ -# Guide de Release - -Ce document décrit le processus de création de releases pour le projet MiniJAJA via GitLab CI/CD. - -## Prérequis - -### Variables d'environnement GitLab CI/CD - -Les variables suivantes doivent être configurées dans **Settings > CI/CD > Variables** : - -| Variable | Description | Protected | Masked | -|--------------------------|-----------------------|-----------|--------| -| `MAVEN_ENT_USERNAME` | Username pour Nexus | Oui | Non | -| `MAVEN_ENT_PASSWORD` | Password pour Nexus | Oui | Oui | -| `MAVEN_MASTER_PASSWORD` | Master password Maven | Oui | Oui | -| `SONAR_HOST_URL` | URL SonarQube | Non | Non | -| `SONAR_TOKEN` | Token SonarQube | Oui | Oui | -| `GITLAB_SSH_PRIVATE_KEY` | Clé SSH pour push Git | Oui | Oui | - -### Configuration de la clé SSH - -Pour générer et configurer la clé SSH permettant au CI de pusher les tags : - -```bash -# Générer une clé SSH dédiée au CI -ssh-keygen -t rsa -b 4096 -C "ci-bot@groupe7.fr" -f gitlab-ci-key - -# Ajouter la clé publique dans GitLab -# Settings > Repository > Deploy Keys -# - Copier le contenu de gitlab-ci-key.pub -# - Cocher "Write access allowed" - -# Ajouter la clé privée dans les variables CI/CD -# Settings > CI/CD > Variables -# - Nom : GITLAB_SSH_PRIVATE_KEY -# - Valeur : contenu de gitlab-ci-key (attention aux retours à la ligne) -# - Type : File (recommandé) ou Variable -# - Protected : Oui -# - Masked : Non (les clés SSH sont trop longues) -``` - -## Processus de release - -Le système de release utilise le **Maven Release Plugin** et se décompose en deux étapes : - -### 1. Release Prepare - -Cette étape : -- Vérifie qu'il n'y a pas de modifications non commitées -- Demande la version de release et la prochaine version SNAPSHOT -- Met à jour les versions dans tous les pom.xml (multi-module) -- Commit les changements avec le préfixe `[Release]` -- Crée un tag Git (format : `v1.0.0`) -- Push les changements et le tag vers le dépôt - -### 2. Release Perform - -Cette étape : -- Checkout le tag créé -- Construit le projet depuis le tag -- Exécute les tests (optionnel, actuellement skippés) -- Déploie les artefacts vers Nexus (repository maven-releases) - -## Utilisation - -### Créer une release depuis l'interface GitLab - -1. Aller sur la branche `main` -2. Ouvrir **CI/CD > Pipelines** -3. Cliquer sur le dernier pipeline de `main` -4. Dans le stage `release`, cliquer sur le bouton play de `release:prepare` -5. Maven vous demandera : - - **Release version** : version à publier (ex: `1.0.0`) - - **Next development version** : prochaine version SNAPSHOT (ex: `1.1-SNAPSHOT`) -6. Attendre la fin de `release:prepare` -7. Vérifier que le tag a bien été créé : **Repository > Tags** -8. Lancer `release:perform` manuellement -9. Vérifier le déploiement sur Nexus - -### Versions interactives vs automatiques - -Par défaut, Maven Release Plugin demande confirmation pour les versions. Pour automatiser : - -```bash -mvn release:prepare -DreleaseVersion=1.0.0 -DdevelopmentVersion=1.1-SNAPSHOT -B -``` - -Cette option peut être ajoutée au job CI si vous souhaitez passer les versions en paramètres du job manuel. - -## Configuration Maven Release Plugin - -Le plugin est configuré dans le `pom.xml` racine : - -```xml - - org.apache.maven.plugins - maven-release-plugin - 3.1.1 - - v@{project.version} - true - release - [Release] - deploy - - -``` - -### Paramètres importants - -- `tagNameFormat` : format du tag Git (v1.0.0, v1.1.0, etc.) -- `autoVersionSubmodules` : met à jour tous les modules avec la même version -- `releaseProfiles` : active le profil Maven `release` (si défini) -- `scmCommentPrefix` : préfixe des commits de release -- `goals` : objectif Maven à exécuter lors du `release:perform` - -## Workflow complet - -``` -main (1.1-SNAPSHOT) - | - | [CI] release:prepare (manuel) - | - Version release : 1.1.0 - | - Prochaine version : 1.2-SNAPSHOT - | - +---> Commit : [Release] prepare release v1.1.0 - | - +---> Tag : v1.1.0 - | - +---> Commit : [Release] prepare for next development iteration - | -main (1.2-SNAPSHOT) - | - | [CI] release:perform (manuel) - | - Checkout tag v1.1.0 - | - Build & Deploy vers Nexus - | -Nexus : artefact 1.1.0 publié -``` - -## Rollback en cas d'erreur - -Si `release:prepare` échoue ou si vous souhaitez annuler : - -```bash -# Localement (pour test) -mvn release:rollback - -# Supprimer le tag local et distant -git tag -d v1.0.0 -git push origin :refs/tags/v1.0.0 - -# Réinitialiser les modifications -git reset --hard HEAD~2 -``` - -En CI, il suffit de : -1. Supprimer le tag dans GitLab : **Repository > Tags > Delete** -2. Réinitialiser le commit sur `main` si nécessaire - -## Bonnes pratiques - -1. Toujours créer les releases depuis `main` -2. S'assurer que tous les tests passent avant de lancer une release -3. Vérifier SonarQube avant la release -4. Suivre le versioning sémantique : `MAJOR.MINOR.PATCH` - - MAJOR : changements incompatibles - - MINOR : nouvelles fonctionnalités rétrocompatibles - - PATCH : corrections de bugs -5. Documenter les changements dans un CHANGELOG -6. Tester le déploiement sur un environnement de staging si possible - -## Dépannage - -### Erreur : "Nothing to commit" - -Le working directory contient des modifications. Committez ou stash avant de lancer la release. - -### Erreur : "Authentication failed" - -Vérifiez que `GITLAB_SSH_PRIVATE_KEY` est correctement configurée et que la clé publique est ajoutée en Deploy Key avec write access. - -### Erreur : "Failed to deploy" - -Vérifiez les credentials Nexus (`MAVEN_ENT_USERNAME` et `MAVEN_ENT_PASSWORD`). - -### Le tag n'est pas poussé - -Vérifiez que `after_script: git push --tags` est présent dans le job `release:prepare`. - -## Améliorations futures - -- Génération automatique de CHANGELOG -- Création de GitHub/GitLab Releases avec notes -- Notifications Slack/Email lors des releases -- Rollback automatique en cas d'échec -- Signature GPG des artefacts -- Tests d'intégration avant release:perform diff --git a/qodana.yaml b/qodana.yaml new file mode 100644 index 0000000..1c544ad --- /dev/null +++ b/qodana.yaml @@ -0,0 +1,49 @@ +#-------------------------------------------------------------------------------# +# Qodana analysis is configured by qodana.yaml file # +# https://www.jetbrains.com/help/qodana/qodana-yaml.html # +#-------------------------------------------------------------------------------# + +################################################################################# +# WARNING: Do not store sensitive information in this file, # +# as its contents will be included in the Qodana report. # +################################################################################# +version: "1.0" + +#Specify inspection profile for code analysis +profile: + name: qodana.starter + +#Enable inspections +#include: +# - name: + +#Disable inspections +#exclude: +# - name: +# paths: +# - + +projectJDK: "21" #(Applied in CI/CD pipeline) + +#Execute shell command before Qodana execution (Applied in CI/CD pipeline) +#bootstrap: sh ./prepare-qodana.sh + +#Install IDE plugins before Qodana execution (Applied in CI/CD pipeline) +#plugins: +# - id: #(plugin id can be found at https://plugins.jetbrains.com) + +# Quality gate. Will fail the CI/CD pipeline if any condition is not met +# severityThresholds - configures maximum thresholds for different problem severities +# testCoverageThresholds - configures minimum code coverage on a whole project and newly added code +# Code Coverage is available in Ultimate and Ultimate Plus plans +#failureConditions: +# severityThresholds: +# any: 15 +# critical: 5 +# testCoverageThresholds: +# fresh: 70 +# total: 50 + +#Qodana supports other languages, for example, Python, JavaScript, TypeScript, Go, C#, PHP +#For all supported languages see https://www.jetbrains.com/help/qodana/linters.html +linter: jetbrains/qodana-jvm-community:2025.3 diff --git a/settings.sh b/settings.sh deleted file mode 100644 index 5df2feb..0000000 --- a/settings.sh +++ /dev/null @@ -1,80 +0,0 @@ -#!/usr/bin/env bash - -if [[ -z $HOME ]]; then - echo "Error: HOME environment variable is not set." >&2 - exit 1 -fi - -cat < .settings.xml - - - - nexus-deptinfo - ${MAVEN_ENT_USERNAME} - ${MAVEN_ENT_PASSWORD} - - - nexus-deptinfo-snapshots - ${MAVEN_ENT_USERNAME} - ${MAVEN_ENT_PASSWORD} - - - sonar - ${MAVEN_ENT_USERNAME} - ${MAVEN_ENT_PASSWORD} - - - - - - nexus-deptinfo - * - https://disc.univ-fcomte.fr/cr700-nexus/repository/maven-public/ - - - - - org.sonarsource.scanner.maven - - - - - nexus-deptinfo-snapshots - - true - - - - nexus-deptinfo-snapshots - https://disc.univ-fcomte.fr/cr700-nexus/content/groups/public - - true - - - true - - - - - - sonar - - true - - - https://disc.univ-fcomte.fr/cr700-sonarqube - - - - -EOF - -# Create the settings-security.xml file from a template -cat < settings-security.xml - - ${MAVEN_MASTER_PASSWORD} - -EOF - -# Move settings-security.xml to the .m2 directory of the runner's container -mv settings-security.xml "$HOME"/.m2/settings-security.xml