diff --git a/action.yml b/action.yml new file mode 100644 index 0000000000000000000000000000000000000000..d2ca9fb407c1215f6894a4c1f5df0619936fb740 --- /dev/null +++ b/action.yml @@ -0,0 +1,30 @@ +name: 'Java CI Build' +description: 'Build a Java CI project with maven and Docker' +runs: + using: "composite" + steps: + # build the project in a docker container with a specific maven settings.xml + # it uses env variables from github secrets for the credentials + # to github, dockerhub and sonar. + - name: Build and test with Maven in docker + run: ./mvn.sh clean verify + - name: Deploy Maven Artifacts + run: ./mvn.sh deploy + - name: Notify dedicated teams channel of Success + uses: dragos-cojocari/ms-teams-notification@v1.0.0 + if: ${{ success() }} + with: + github-token: ${{ github.token }} # this will use the runner's token. + ms-teams-webhook-uri: ${{ secrets.MSTEAMS_WEBHOOK }} + notification-summary: Build and Deploy success. + notification-color: 28a745 + timezone: Europe/Paris + - name: Notify dedicated teams channel of Failure + uses: dragos-cojocari/ms-teams-notification@v1.0.0 + if: ${{ failure() }} + with: + github-token: ${{ github.token }} # this will use the runner's token. + ms-teams-webhook-uri: ${{ secrets.MSTEAMS_WEBHOOK }} + notification-summary: Build and Deploy failure. + notification-color: dc3545 + timezone: Europe/Paris diff --git a/checkVersions.sh b/checkVersions.sh new file mode 100755 index 0000000000000000000000000000000000000000..e7c0feadfe065e3d7b43adac2af2537cbaac0071 --- /dev/null +++ b/checkVersions.sh @@ -0,0 +1,3 @@ +mvn versions:display-dependency-updates +mvn versions:display-plugin-updates +mvn versions:display-property-updates diff --git a/ci-settings.xml b/ci-settings.xml new file mode 100644 index 0000000000000000000000000000000000000000..3ccf09a14008f187fe8d4da3d6c1e40e79cffee5 --- /dev/null +++ b/ci-settings.xml @@ -0,0 +1,37 @@ +<!-- A MAVEN SETTINGS FILE TO BE USED IN CI --> +<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 + https://maven.apache.org/xsd/settings-1.0.0.xsd"> + + <servers> + <server> + <id>github</id> + <username>${env.GITHUBLOGIN}</username> + <password>${env.GITHUBPASSWORD}</password> + </server> + <server> + <id>dockerhub</id> + <username>${env.DOCKER_USERNAME}</username> + <password>${env.DOCKER_PASSWORD}</password> + </server> + <server> + <id>github.pages</id> + <username>git</username> + <configuration> + <scmVersionType>branch</scmVersionType> + <scmVersion>gh-pages</scmVersion> + </configuration> + </server> + </servers> + + <profiles> + <profile> + <id>sonar</id> + <properties> + <sonar.host.url>${env.SONAR_URL}</sonar.host.url> + <sonar.login>${env.SONAR_TOKEN}</sonar.login> + </properties> + </profile> + </profiles> + +</settings> diff --git a/mvn.sh b/mvn.sh new file mode 100755 index 0000000000000000000000000000000000000000..ef07a41d42aca1b8115c885ce8ea86ffd400d1ef --- /dev/null +++ b/mvn.sh @@ -0,0 +1,15 @@ +#!/bin/bash +export MAVEN_IMAGE=brunoe/maven:3.8.6-eclipse-temurin-17 +docker run \ + --env GITHUBLOGIN=$GITHUBLOGIN \ + --env GITHUBPASSWORD=$GITHUBPASSWORD \ + --mount type=bind,source=${HOME}/.m2,target=/var/maven/.m2 \ + --mount type=bind,source=${HOME}/.ssh,target=/home/user/.ssh \ + --mount type=bind,source=${HOME}/.gitconfig,target=/home/user/.gitconfig,readonly \ + --mount type=bind,source="$(pwd)",target=/usr/src/mymaven \ + --workdir /usr/src/mymaven \ + --rm \ + --env PUID=`id -u` -e PGID=`id -g` \ + --env MAVEN_CONFIG=/var/maven/.m2 \ + $MAVEN_IMAGE \ + runuser --user user --group user -- mvn -B -e -T 1C -Duser.home=/var/maven --settings /usr/src/mymaven/CI_Java/ci-settings.xml "$@" diff --git a/sonar.sh b/sonar.sh new file mode 100755 index 0000000000000000000000000000000000000000..59f54c6ff1b4569d2c11115d1a356bd9f5348ee2 --- /dev/null +++ b/sonar.sh @@ -0,0 +1,7 @@ +./mvn.sh sonar:sonar \ + -D sonar.branch.name=$(git rev-parse --abbrev-ref HEAD|tr / _ ) \ + -DskipTests=true \ + -Dsonar.language=java \ + -Dsonar.report.export.path=sonar-report.json \ + -Dsonar.host.url=http://localhost:9000 \ + --activate-profiles sonar