Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
This should be fixed by now, remove the workaround ( https://github.com/ScoopInstalle...
[simgrid.git] / .github / workflows / jarfile.yml
1 name: Jar build
2
3 on:
4   workflow_dispatch:
5   schedule:
6   # * is a special character in YAML so you have to quote this string
7       - cron:  '0 18 * * 0'
8 jobs:
9   build:
10     runs-on: ${{ matrix.config.os }}-latest
11     strategy:
12         matrix:
13           config:
14           - { name: "Windows MingW", os: windows, cc: "gcc", cxx: "g++", generator: "MinGW Makefiles", cmake_extra_options: "-Denable_lto=OFF" }
15           - { name: "Ubuntu gcc", os: ubuntu, cc: "gcc", cxx: "g++", generator: "Unix Makefiles", cmake_extra_options: "-DLTO_EXTRA_FLAG=auto" }
16           - { name: "MacOS clang", os: macos, cc: "clang", cxx: "clang++", generator: "Unix Makefiles", cmake_extra_options: "-DLTO_EXTRA_FLAG=auto" }
17     steps:
18     - uses: actions/checkout@v2
19      # install dependencies
20     - name: Init options
21       run: |
22           echo "CC=${{ matrix.config.cc }}"   >> $GITHUB_ENV
23           echo "CXX=${{ matrix.config.cxx }}" >> GITHUB_ENV
24     - name: Install boost on ubuntu
25       if: matrix.config.os == 'ubuntu'
26       run: sudo apt-get update && sudo apt-get install -yq libboost-dev
27     - name: Install boost on macos
28       if: matrix.config.os == 'macos'
29       run: brew install boost
30     - name: Install boost and gcc on windows
31       if: matrix.config.os == 'windows'
32       run: |
33         Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
34         scoop install gcc --global
35         If ((Test-Path "C:\hostedtoolcache\windows\Boost") -eq $False){
36           # Use the boost-1.72.0-win32-msvc14.1-x86_64.tar.gz for Windows 2016
37           $url = "https://github.com/actions/boost-versions/releases/download/1.72.0-20200608.4/boost-1.72.0-win32-msvc14.2-x86_64.tar.gz"
38           (New-Object System.Net.WebClient).DownloadFile($url, "$env:TEMP\boost.tar.gz")
39           7z.exe x "$env:TEMP\boost.tar.gz" -o"$env:TEMP\boostArchive" -y | Out-Null
40           7z.exe x "$env:TEMP\boostArchive" -o"$env:TEMP\boost" -y | Out-Null
41           Push-Location -Path "$env:TEMP\boost"
42           Invoke-Expression .\setup.ps1
43         }
44         echo "BOOST_ROOT=C:\hostedtoolcache\windows\Boost\1.72.0\x86_64" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
45         echo "BOOST_INCLUDEDIR=C:\hostedtoolcache\windows\Boost\1.72.0\x86_64\boost\include" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
46         echo "BOOST_LIBRARYDIR=C:\hostedtoolcache\windows\Boost\1.72.0\x86_64\lib" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
47     - name: Build jar with Cmake
48       run: |
49           mkdir build
50           cd build
51           cmake -Denable_documentation=OFF -Denable_java=ON -Denable_msg=ON -Denable_lib_in_jar=ON -Dminimal-bindings=ON -Denable_compile_optimizations=ON -Denable_smpi=OFF ${{ matrix.config.cmake_extra_options }} -G "${{ matrix.config.generator }}" ..
52           make -j2 simgrid-java_jar
53     - name: Upload jar
54       uses: actions/upload-artifact@v2
55       with:
56           name: jar-${{ matrix.config.os }}
57           path: build/simgrid.jar
58     - name: Create the failure Message
59       if: ${{ failure() }}
60       run: |
61         echo "{\"attachments\": [{\"color\": \"#FF0000\", \"text\":\"Failure when building JAR file on ${{ matrix.config.name }}! See ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} \"}]}" > mattermost.json
62     - uses: mattermost/action-mattermost-notify@master
63       if: ${{ failure() }}
64       env:
65         MATTERMOST_WEBHOOK_URL: ${{ secrets.MATTERMOST_WEBHOOK_URL }}
66         MATTERMOST_CHANNEL: ${{ secrets.MATTERMOST_CHANNEL}}
67   create_jar:
68     needs: build
69     runs-on: ubuntu-latest
70     steps:
71       - uses: actions/checkout@v2
72       - name: Download all jars from ubuntu
73         uses: actions/download-artifact@v2
74       - name: Build final jar
75         run: |
76            patch=$(grep -r set\(SIMGRID_VERSION_PATCH ./CMakeLists.txt | sed 's/.*"\([[:digit:]]\+\)".*/\1/g')
77            major=$(grep -r set\(SIMGRID_VERSION_MAJOR ./CMakeLists.txt | sed 's/.*"\([[:digit:]]\+\)".*/\1/g')
78            minor=$(grep -r set\(SIMGRID_VERSION_MINOR ./CMakeLists.txt | sed 's/.*"\([[:digit:]]\+\)".*/\1/g')
79            if [ $patch -ne 0 ]; then
80              version="$major.$minor.$patch"
81            else
82              version="$major.$minor"
83            fi
84            mkdir content
85            cd content
86            for j in  ubuntu macos windows ; do unzip -n ../jar-$j/simgrid.jar ; done
87            strip NATIVE/*/*/*.so
88            x86_64-linux-gnu-strip NATIVE/*/*/lib*dll
89            zip -r ../simgrid-${version}.jar *
90       - name: Upload jar
91         uses: actions/upload-artifact@v2
92         with:
93           name: jar-final
94           path: simgrid-*.jar
95       - name: cleanup artifacts
96         uses: geekyeggo/delete-artifact@v1
97         with:
98           name: |
99             jar-ubuntu
100             jar-windows
101             jar-macos
102       - name: Create the failure Message
103         if: ${{ failure() }}
104         run: |
105           echo "{\"attachments\": [{\"color\": \"#FF0000\", \"text\":\"Failure when assembling JAR file ! See ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} \"}]}" > mattermost.json
106       - name: Create the success Message
107         if: ${{ success() }}
108         run: |
109           echo "{\"attachments\": [{\"color\": \"#00FF00\", \"text\":\"JAR file built successfully ! You can get it on: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} \"}]}" > mattermost.json
110       - uses: mattermost/action-mattermost-notify@master
111         env:
112           MATTERMOST_WEBHOOK_URL: ${{ secrets.MATTERMOST_WEBHOOK_URL }}
113           MATTERMOST_CHANNEL: ${{ secrets.MATTERMOST_CHANNEL}}