Skip to content
Snippets Groups Projects
Commit bf6f37d6 authored by Emmanuel Bruno's avatar Emmanuel Bruno
Browse files

initial release.

parent 4769f0ce
No related branches found
No related tags found
No related merge requests found
## A simple example to use Github Actions for Java CI with docker and maven
# We build the project using maven.
# Maven is run in a dedicated docker container
# The credentials are set as env variables in a specific ci-settings.xml
# The ENV variables are stored as Github Secrets
#
# The secrets are set in CLI with the github client.
# The following examples set them at organisation level (GITHUB_ORG variable)
# bash -c 'for secret in GITHUBLOGIN GITHUBPASSWORD DOCKER_USERNAME DOCKER_PASSWORD SONAR_URL SONAR_TOKEN; do \
# eval gh secret set $secret --app actions --body ${!secret} --org $GITHUB_ORG --visibility all; \
# done'
name: Java CI
# on every push
on: [push]
env:
GITHUBLOGIN: ${{secrets.GITHUBLOGIN}}
GITHUBPASSWORD: ${{secrets.GITHUBPASSWORD}}
DOCKER_USERNAME: ${{secrets.DOCKER_USERNAME}}
DOCKER_PASSWORD: ${{secrets.DOCKER_PASSWORD}}
SONAR_URL: ${{secrets.SONAR_URL}}
SONAR_TOKEN: ${{secrets.SONAR_TOKEN}}
jobs:
# This job build, test, package and deploy the artefact
maven-build:
# The tags on the runner
runs-on: [self-hosted, Linux]
steps:
#we get the content of the repository
- uses: actions/checkout@v3
# 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: ./CI_Java/mvn.sh clean verify
- name: Deploy Maven Artifacts
run: ./CI_Java/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
# This job publish the successsite for develop branch
maven-site:
runs-on: [self-hosted, Linux]
needs: maven-build
# Develop branch only
if: github.ref == 'refs/heads/develop'
steps:
- name: Build and deploy site with Maven
run: ./CI_Java/mvn.sh site:site site-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: Web site deployed.
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: Failed to deploy web site.
notification-color: dc3545
timezone: Europe/Paris
\ No newline at end of file
name: Delete Old Snpashot Package # on every push
on: [push]
jobs:
cleanup:
# The tags on the runner
runs-on: [self-hosted, Linux]
steps:
- uses: smartsquaregmbh/delete-old-packages@v0.5.0
with:
keep: 1
names: |
fr.univtln.bruno.demos.archetypes.demomavenarchetype
mvn versions:display-dependency-updates
mvn versions:display-plugin-updates
mvn versions:display-property-updates
<!-- 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>
mvn.sh 0 → 100755
#!/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 "$@"
./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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment