Skip to content

CI_RELEASE

CI_RELEASE #18

Workflow file for this run

# This is a basic workflow to help you get started with Actions
name: CI_RELEASE
# Controls when the action will run. Triggers the workflow on release published or release edited request
# events but only for the master branch
on:
release:
types:
- published
- edited
jobs:
# Verify if a build is needed
check_opendds:
name: Check artifact files
outputs:
build_opendds: ${{ steps.check_existsOpenDDS.outputs.build_opendds }}
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
# with:
# submodules: 'true'
- uses: actions/cache/restore@v3
id: cache
with:
lookup-only: true
enableCrossOsArchive: true
path: ./OutputOpenDDS/
key: OpenDDS_3.25
# - name: Exists OpenDDS
# id: existsOpenDDS
# continue-on-error: true
# run: |
# python $GITHUB_WORKSPACE/third_party/CommonTools/scripts/utilsftp.py -c check -s ${{ secrets.FTP_STORE_SITE }} -u ${{ secrets.FTP_STORE_USER }} -p ${{ secrets.FTP_STORE_PASSWORD }} -r OpenDDS_Build_3.25.zip -l $GITHUB_WORKSPACE/OpenDDS_Build_3.25.zip
- name: If failed we need to rebuild artifact
id: check_existsOpenDDS
if: steps.cache.outputs.cache-hit != 'true'
# if: ${{ steps.existsOpenDDS.outcome == 'failure' }}
run: echo "build_opendds=true" >> $GITHUB_OUTPUT
build_opendds_windows:
needs: check_opendds
if: needs.check_opendds.outputs.build_opendds == 'true'
# The type of runner that the job will run on
runs-on: windows-2022
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Runs a set of commands using the runners shell
# Support longpaths
- name: Support long paths
run: git config --system core.longpaths true
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3
with:
submodules: 'true'
- name: set up msvc env
uses: ilammy/[email protected]
- name: Configure OpenDDS
shell: cmd
run: |
cd third_party\OpenDDS
configure
- name: Build OpenDDS x64
shell: cmd
run: |
cd third_party\OpenDDS
call setenv.cmd
msbuild -p:Configuration=Release,Platform=x64 -m DDS_TAOv2.sln
- name: Move OpenDDS x64 binaries
shell: cmd
run: |
cd third_party\OpenDDS
xcopy .\lib\*.dll ..\..\Output\x64\
xcopy .\lib\*.lib ..\..\Output\lib64\
xcopy .\bin\*.exe ..\..\Output\bin64\
xcopy .\ACE_wrappers\lib\*.dll ..\..\Output\x64\
xcopy .\ACE_wrappers\lib\*.lib ..\..\Output\lib64\
xcopy .\ACE_wrappers\bin\*.exe ..\..\Output\bin64\
- name: Move OpenDDS x64 PDB
shell: cmd
run: |
cd third_party\OpenDDS
mkdir ..\..\OutputPdb
xcopy .\lib\*.pdb ..\..\OutputPdb\pdb64\
xcopy .\bin\*.pdb ..\..\OutputPdb\pdb64\
xcopy .\ACE_wrappers\lib\*.pdb ..\..\OutputPdb\pdb64\
xcopy .\ACE_wrappers\bin\*.pdb ..\..\OutputPdb\pdb64\
- name: Build OpenDDS x86
shell: cmd
run: |
cd third_party\OpenDDS
call setenv.cmd
msbuild -p:Configuration=Release,Platform=Win32 -m DDS_TAOv2.sln
- name: Move OpenDDS x86 binaries
shell: cmd
run: |
cd third_party\OpenDDS
xcopy .\lib\*.dll ..\..\Output\x86\
xcopy .\lib\*.lib ..\..\Output\lib32\
xcopy .\bin\*.exe ..\..\Output\bin32\
xcopy .\ACE_wrappers\lib\*.dll ..\..\Output\x86\
xcopy .\ACE_wrappers\lib\*.lib ..\..\Output\lib32\
xcopy .\ACE_wrappers\bin\*.exe ..\..\Output\bin32\
- name: Move OpenDDS x86 PDB
shell: cmd
run: |
cd third_party\OpenDDS
xcopy .\lib\*.pdb ..\..\OutputPdb\pdb32\
xcopy .\bin\*.pdb ..\..\OutputPdb\pdb32\
xcopy .\ACE_wrappers\lib\*.pdb ..\..\OutputPdb\pdb32\
xcopy .\ACE_wrappers\bin\*.pdb ..\..\OutputPdb\pdb32\
- name: Move setenv.cmd
shell: cmd
run: |
cd third_party\OpenDDS
xcopy setenv.cmd ..\..\Output\
- name: Prepare for packaging OpenDDS Binaries and PDB
run: |
New-Item -Path .\OutputOpenDDS -ItemType directory
Compress-Archive -Path .\Output\* -DestinationPath .\OutputOpenDDS\OpenDDS_Build_3.25.zip
Compress-Archive -Path .\OutputPdb\* -DestinationPath .\OutputOpenDDS\OpenDDS_PDB_Build_3.25.zip
- name: Prepare for packaging OpenDDS Headers
shell: cmd
run: |
7z a .\OutputOpenDDS\OpenDDS_Headers_3.25.zip .\third_party\OpenDDS\*.h -r
7z u .\OutputOpenDDS\OpenDDS_Headers_3.25.zip .\third_party\OpenDDS\*.inl -r
- name: Save OpenDDS in cache
uses: actions/cache/save@v3
with:
enableCrossOsArchive: true
path: ./OutputOpenDDS/
key: OpenDDS_3.25
# This workflow contains a single job called "build_release"
build_release:
needs: [check_opendds, build_opendds_windows]
if: always()
# The type of runner that the job will run on
runs-on: windows-2022
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Runs a set of commands using the runners shell
# Support longpaths
- name: Support long paths
run: git config --system core.longpaths true
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3
with:
submodules: 'true'
- name: Cache local Maven repository
uses: actions/[email protected]
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Install gpg secret key
run: |
cat <(echo -e "${{ secrets.MAVEN_GPG_PRIVATE_KEY }}") | gpg --batch --import
gpg --list-secret-keys --keyid-format LONG
shell: bash
- name: set up msvc env
uses: ilammy/[email protected]
- name: Build Common Tools
shell: cmd
run: |
cd third_party\CommonTools
msbuild -p:Configuration=Release,Platform="Any CPU" -m CommonTools.sln
- name: Extract commit SHA
run: |
echo "GITHUB_COMMIT_MESSAGE=$(echo $GITHUB_SHA)" >> $GITHUB_ENV
shell: bash
- name: Prepare version
shell: cmd
run: |
cd third_party\CommonTools\Output
VersionGenerator %GITHUB_WORKSPACE%\src\ProductInformation\Version.cs %GITHUB_WORKSPACE%\src\ProductInformation ${{ env.GITHUB_COMMIT_MESSAGE }}
env:
GITHUB_WORKSPACE: $GITHUB_WORKSPACE
- name: Prepare packaging versioning
shell: cmd
run: |
third_party\CommonTools\Output\PlaceHolderReplacer.exe .\src\ProductInformation\Version.cs .\packaging\nuget\datadistributionmanager.nuspec >> .\nuget_version.txt
third_party\CommonTools\Output\PlaceHolderReplacer.exe .\src\ProductInformation\Version.cs .\packaging\maven\pom.xml
- name: Store version
run: |
echo "NUGET_PACKAGE_VERSION=$(cat nuget_version.txt)" >> $GITHUB_ENV
shell: bash
- name: Verify Nuget version in file
run: |
type .\packaging\nuget\datadistributionmanager.nuspec
echo ${{ env.NUGET_PACKAGE_VERSION }}
shell: cmd
- name: Configure OpenDDS
shell: cmd
run: |
cd third_party\OpenDDS
configure
- name: Restore OpenDDS from cache
uses: actions/cache/restore@v3
with:
fail-on-cache-miss: true
enableCrossOsArchive: true
path: ./OutputOpenDDS/
key: OpenDDS_3.25
- name: Prepare OpenDDS Binaries
run: |
Expand-Archive -LiteralPath '.\OutputOpenDDS\OpenDDS_Build_3.25.zip' -DestinationPath .\Output -Force
- name: Prepare OpenDDS Headers
run: |
Expand-Archive -LiteralPath '.\OutputOpenDDS\OpenDDS_Headers_3.25.zip' -DestinationPath .\third_party\OpenDDS -Force
- name: Move OpenDDS x64
shell: cmd
run: |
xcopy .\Output\bin32\*.* .\third_party\OpenDDS\bin\
xcopy .\Output\x86\*.dll .\third_party\OpenDDS\lib\
xcopy .\Output\bin32\*.* .\third_party\OpenDDS\ACE_wrappers\bin\
xcopy .\Output\x86\*.dll .\third_party\OpenDDS\ACE_wrappers\lib\
# - name: Build OpenDDS x64
# shell: cmd
# run: |
# cd third_party\OpenDDS
# call setenv.cmd
# msbuild -p:Configuration=Release,Platform=x64 -m DDS_TAOv2.sln
#
# - name: Move OpenDDS x64
# shell: cmd
# run: |
# cd third_party\OpenDDS
# xcopy .\lib\*.dll ..\..\Output\x64\
# xcopy .\lib\*.pdb ..\..\Output\pdb64\
# xcopy .\lib\*.lib ..\..\Output\lib64\
# xcopy .\bin\*.exe ..\..\Output\bin64\
# xcopy .\bin\*.pdb ..\..\Output\pdb64\
# xcopy .\ACE_wrappers\lib\*.dll ..\..\Output\x64\
# xcopy .\ACE_wrappers\lib\*.pdb ..\..\Output\pdb64\
# xcopy .\ACE_wrappers\lib\*.lib ..\..\Output\lib64\
# xcopy .\ACE_wrappers\bin\*.exe ..\..\Output\bin64\
# xcopy .\ACE_wrappers\bin\*.pdb ..\..\Output\pdb64\
#
# - name: Build OpenDDS x86
# shell: cmd
# run: |
# cd third_party\OpenDDS
# call setenv.cmd
# msbuild -p:Configuration=Release,Platform=Win32 -m DDS_TAOv2.sln
#
# - name: Move OpenDDS x86
# shell: cmd
# run: |
# cd third_party\OpenDDS
# xcopy .\lib\*.dll ..\..\Output\x86\
# xcopy .\lib\*.pdb ..\..\Output\pdb32\
# xcopy .\lib\*.lib ..\..\Output\lib32\
# xcopy .\bin\*.exe ..\..\Output\bin32\
# xcopy .\bin\*.pdb ..\..\Output\pdb32\
# xcopy .\ACE_wrappers\lib\*.dll ..\..\Output\x86\
# xcopy .\ACE_wrappers\lib\*.pdb ..\..\Output\pdb32\
# xcopy .\ACE_wrappers\lib\*.lib ..\..\Output\lib32\
# xcopy .\ACE_wrappers\bin\*.exe ..\..\Output\bin32\
# xcopy .\ACE_wrappers\bin\*.pdb ..\..\Output\pdb32\
- name: Generate OpenDDS projects
shell: cmd
run: |
call .\third_party\OpenDDS\setenv.cmd
cd src\DataDistributionManagerOpenDDS
perl %ACE_ROOT%\bin\generate_export_file.pl DataDistributionSchemaCommon > DataDistributionSchemaCommon_Export.h
perl %ACE_ROOT%\bin\mwc.pl -type vs2022 DataDistributionManagerOpenDDS.mwc
cd ..\..
- uses: nuget/[email protected]
with:
nuget-version: '5.x'
- run: nuget restore src\DataDistributionManager.sln
- name: Build DataDistributionManager x64
shell: cmd
run: |
call .\third_party\OpenDDS\setenv.cmd
set JDK_ROOT_FOLDER=%JAVA_HOME_11_X64%
cd src
msbuild /m -p:Configuration=Release,Platform=x64 DataDistributionManager.sln
- name: Build DataDistributionManager x86
shell: cmd
run: |
call .\third_party\OpenDDS\setenv.cmd
set JDK_ROOT_FOLDER=%JAVA_HOME_11_X64%
cd src
msbuild /m -p:Configuration=Release,Platform=Win32 DataDistributionManager.sln
- name: Build DataDistributionManager net462, net6.0 and net7.0
run: |
dotnet build --no-incremental --configuration Release --framework net462 -o Output src\DataDistributionManagerNet\DataDistributionManagerNet.csproj
dotnet build --no-incremental --configuration Release --framework net6.0 -o Outputnet6.0 src\DataDistributionManagerNet\DataDistributionManagerNet.csproj
dotnet build --no-incremental --configuration Release --framework net7.0 -o Outputnet7.0 src\DataDistributionManagerNet\DataDistributionManagerNet.csproj
- name: Prepare for packaging
run: |
New-Item -Path .\OutputPackage -ItemType directory
New-Item -Path .\OutputPackage\lib -ItemType directory
New-Item -Path .\OutputPackage\lib\x86 -ItemType directory
New-Item -Path .\OutputPackage\lib\x64 -ItemType directory
New-Item -Path .\OutputPackage\runtime -ItemType directory
New-Item -Path .\OutputPackage\runtime\x86 -ItemType directory
New-Item -Path .\OutputPackage\runtime\x64 -ItemType directory
New-Item -Path .\OutputPackage\pdb -ItemType directory
New-Item -Path .\OutputPackage\pdb\x86 -ItemType directory
New-Item -Path .\OutputPackage\pdb\x64 -ItemType directory
New-Item -Path .\OutputPackage\include -ItemType directory
New-Item -Path .\OutputPackage\licenses -ItemType directory
Copy-Item .\src\DataDistributionManager\DataDistributionManagerEnums.h .\OutputPackage\include\DataDistributionManagerEnums.h
Copy-Item .\src\DataDistributionManager\DataDistributionManagerTypes.h .\OutputPackage\include\DataDistributionManagerTypes.h
Copy-Item .\src\DataDistributionManager\DataDistributionManager.h .\OutputPackage\include\DataDistributionManager.h
Copy-Item .\src\DataDistributionManager\SmartDataDistributionManager.h .\OutputPackage\include\SmartDataDistributionManager.h
Copy-Item .\Output\x86\DataDistributionManager.lib .\OutputPackage\lib\x86\DataDistributionManager.lib -Force
Copy-Item .\Output\x64\DataDistributionManager.lib .\OutputPackage\lib\x64\DataDistributionManager.lib -Force
Copy-Item .\Output\*.dll .\OutputPackage\runtime\ -Force
Copy-Item .\Output\x86\*.dll .\OutputPackage\runtime\x86\ -Force
Copy-Item .\Output\bin32\dcpsinfo_dump.exe .\OutputPackage\runtime\x86\ -Force
Copy-Item .\Output\bin32\DCPSInfoRepo.exe .\OutputPackage\runtime\x86\ -Force
Copy-Item .\Output\bin32\repoctl.exe .\OutputPackage\runtime\x86\ -Force
Copy-Item .\Output\x64\*.dll .\OutputPackage\runtime\x64\ -Force
Copy-Item .\Output\bin64\dcpsinfo_dump.exe .\OutputPackage\runtime\x64\ -Force
Copy-Item .\Output\bin64\DCPSInfoRepo.exe .\OutputPackage\runtime\x64\ -Force
Copy-Item .\Output\bin64\repoctl.exe .\OutputPackage\runtime\x64\ -Force
Copy-Item .\Output\x86\*.pdb .\OutputPackage\pdb\x86\ -Force
Copy-Item .\Output\pdb32\*.pdb .\OutputPackage\pdb\x86\ -Force
Copy-Item .\Output\x64\*.pdb .\OutputPackage\pdb\x64\ -Force
Copy-Item .\Output\pdb64\*.pdb .\OutputPackage\pdb\x64\ -Force
Copy-Item .\LICENSE .\OutputPackage\licenses\LICENSE.datadistributionmanager -Force
Copy-Item .\src\packages\librdkafka.redist.2.2.0\LICENSES.txt .\OutputPackage\licenses\LICENSE.librdkafka -Force
Copy-Item .\third_party\OpenDDS\LICENSE .\OutputPackage\licenses\LICENSE.opendds -Force
Compress-Archive -Path .\OutputPackage\* -DestinationPath .\OutputPackage\DataDistributionManager.zip
- name: Prepare for Java packaging
run: |
New-Item -Path .\OutputJava -ItemType directory
New-Item -Path .\OutputJava\windows_x64 -ItemType directory
New-Item -Path .\OutputJava\windows_x86 -ItemType directory
Compress-Archive -Path .\OutputPackage\runtime\x64\* -DestinationPath .\OutputJava\windows_x64\nativepackage.zip
Compress-Archive -Path .\OutputPackage\runtime\x86\* -DestinationPath .\OutputJava\windows_x86\nativepackage.zip
- name: Set up Apache Maven Central
uses: actions/setup-java@v3
with: # running setup-java again overwrites the settings.xml
java-version: 11
distribution: temurin
cache: 'maven'
server-id: ossrh # Value of the distributionManagement/repository/id field of the pom.xml
server-username: MAVEN_USERNAME # env variable for username in deploy
server-password: MAVEN_CENTRAL_TOKEN # env variable for token in deploy
gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} # Value of the GPG private key to import
gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase
- name: Publish to Apache Maven Central
shell: bash
run: mvn --file ./packaging/maven/pom.xml --no-transfer-progress --batch-mode -Dgpg.passphrase=${{ secrets.MAVEN_GPG_PASSPHRASE }} deploy
env:
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
MAVEN_CENTRAL_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }}
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
- name: Build Java Binder
shell: cmd
run: |
cd src\DataDistributionManagerJava
set JDK_ROOT_FOLDER=%JAVA_HOME_11_X64%
CreateJar.bat
cd ..\..
- name: Prepare for Docs packaging
run: Compress-Archive -Path .\docs\* -DestinationPath .\Documentation.zip
- uses: nuget/[email protected]
with:
nuget-version: '5.x'
- run: nuget pack packaging\nuget\datadistributionmanager.nuspec
- name: Upload DataDistributionManager NuGet to release
uses: svenstaro/[email protected]
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: .\MASES.DataDistributionManager.${{ env.NUGET_PACKAGE_VERSION }}.nupkg
asset_name: MASES.DataDistributionManager.${{ env.NUGET_PACKAGE_VERSION }}.nupkg
tag: ${{ github.ref }}
overwrite: true
- name: Upload DataDistributionManager binaries to release
uses: svenstaro/[email protected]
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: .\OutputPackage\DataDistributionManager.zip
asset_name: DataDistributionManager.zip
tag: ${{ github.ref }}
overwrite: true
- name: Upload DataDistributionManager Java to release
uses: svenstaro/[email protected]
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: .\Output\datadistributionmanager.jar
asset_name: datadistributionmanager.jar
tag: ${{ github.ref }}
overwrite: true
- name: Upload DataDistributionManager Java docs to release
uses: svenstaro/[email protected]
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: .\Output\datadistributionmanager.docs.jar
asset_name: datadistributionmanager.docs.jar
tag: ${{ github.ref }}
overwrite: true
- name: Upload DataDistributionManager Docs snapshot to release
uses: svenstaro/[email protected]
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: .\Documentation.zip
asset_name: Documentation.zip
tag: ${{ github.ref }}
overwrite: true
- uses: nuget/[email protected]
with:
nuget-version: '5.x'
- name: Publish to NuGet
run: nuget push *.nupkg -ApiKey ${{ secrets.MASES_NUGET_API_KEY }} -Source https://api.nuget.org/v3/index.json -SkipDuplicate