CI_RELEASE #18
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 |