Skip to content

Commit e28f382

Browse files
authored
feat: automate releases and versioning
2 parents 82c5893 + ddb768f commit e28f382

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

68 files changed

+2200
-489
lines changed

.gitignore

+4-1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,7 @@
33
*.autosave
44
/build*
55
.vscode
6-
*.so
6+
*.so
7+
8+
node_modules
9+
package-lock.json

azure-pipelines.yml

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
jobs:
2+
- job: UbuntuLinuxGCC7
3+
pool:
4+
vmImage: 'ubuntu-18.04'
5+
steps:
6+
- template: ci/ubuntu-setup.yml
7+
- template: ci/linux.yml
8+
parameters:
9+
artifactName: ubuntu18_gcc7_release
10+
- job: CentOSLinuxGCC48
11+
pool:
12+
vmImage: 'ubuntu-18.04'
13+
container: helloadam/hobbitscentosbuilder:latest
14+
steps:
15+
- template: ci/linux.yml
16+
parameters:
17+
artifactName: centos7_gcc48_release
18+
- job: Windows
19+
pool:
20+
vmImage: 'vs2017-win2016'
21+
steps:
22+
- template: ci/windows.yml
23+
- job: Mac
24+
pool:
25+
vmImage: 'macOS-10.14'
26+
steps:
27+
- template: ci/mac.yml

ci/linux.yml

+70
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
parameters:
2+
- name: artifactName
3+
type: string
4+
default: linux_release
5+
6+
steps:
7+
- checkout: self
8+
9+
- script: |
10+
python3 -m aqt install --outputdir $(Build.BinariesDirectory)/Qt 5.13.2 linux desktop -m qtcore qtgui qtnetwork qtwidgets || python3 -m aqt install --outputdir $(Build.BinariesDirectory)/Qt 5.13.2 linux desktop -m qtcore qtgui qtnetwork qtwidgets
11+
displayName: 'Install Qt 5.13.2'
12+
13+
- bash: |
14+
./qmake_version_args.sh | sed 's/\([^\\]\)\\\\"/\1\\\\\\"/g' > qmake_args
15+
cat qmake_args
16+
workingDirectory: $(Build.SourcesDirectory)/src
17+
displayName: 'Get version arguments for qmake'
18+
19+
- script: |
20+
cd $(Build.SourcesDirectory)/src
21+
$(Build.BinariesDirectory)/Qt/5.13.2/gcc_64/bin/qmake $(cat qmake_args)
22+
displayName: 'Run qmake'
23+
24+
- script: |
25+
cd $(Build.SourcesDirectory)/src
26+
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(Build.BinariesDirectory)/Qt/5.13.2/gcc_64/lib/
27+
make -j$(nproc)
28+
displayName: 'Build hobbits'
29+
30+
- script: |
31+
mkdir -p release/bin release/lib release/plugins/analyzers release/plugins/operators release/plugins/displays release/plugins/importerexporters
32+
cp $(Build.SourcesDirectory)/src/hobbits-gui/hobbits release/bin
33+
cp $(Build.SourcesDirectory)/src/hobbits-runner/hobbits-runner release/bin
34+
cp $(Build.SourcesDirectory)/src/hobbits-plugins/analyzers/*/lib*.so release/plugins/analyzers
35+
cp $(Build.SourcesDirectory)/src/hobbits-plugins/displays/*/lib*.so release/plugins/displays
36+
cp $(Build.SourcesDirectory)/src/hobbits-plugins/importerexporters/*/lib*.so release/plugins/importerexporters
37+
cp $(Build.SourcesDirectory)/src/hobbits-plugins/operators/*/lib*.so release/plugins/operators
38+
cp $(Build.SourcesDirectory)/src/hobbits-core/libhobbits-core.so* release/lib
39+
cp -r $(Build.BinariesDirectory)/Qt/5.13.2/gcc_64/plugins/platforms release/bin
40+
cp $(Build.BinariesDirectory)/Qt/5.13.2/gcc_64/lib/libicu*.so* release/lib
41+
cp $(Build.BinariesDirectory)/Qt/5.13.2/gcc_64/lib/libQt5Concurrent.so* release/lib
42+
cp $(Build.BinariesDirectory)/Qt/5.13.2/gcc_64/lib/libQt5Core.so* release/lib
43+
cp $(Build.BinariesDirectory)/Qt/5.13.2/gcc_64/lib/libQt5DBus.so* release/lib
44+
cp $(Build.BinariesDirectory)/Qt/5.13.2/gcc_64/lib/libQt5Gui.so* release/lib
45+
cp $(Build.BinariesDirectory)/Qt/5.13.2/gcc_64/lib/libQt5Network.so* release/lib
46+
cp $(Build.BinariesDirectory)/Qt/5.13.2/gcc_64/lib/libQt5PrintSupport.so* release/lib
47+
cp $(Build.BinariesDirectory)/Qt/5.13.2/gcc_64/lib/libQt5Sql.so* release/lib
48+
cp $(Build.BinariesDirectory)/Qt/5.13.2/gcc_64/lib/libQt5Test.so* release/lib
49+
cp $(Build.BinariesDirectory)/Qt/5.13.2/gcc_64/lib/libQt5WaylandClient.so* release/lib
50+
cp $(Build.BinariesDirectory)/Qt/5.13.2/gcc_64/lib/libQt5Widgets.so* release/lib
51+
cp $(Build.BinariesDirectory)/Qt/5.13.2/gcc_64/lib/libQt5XcbQpa.so* release/lib
52+
cp $(Build.BinariesDirectory)/Qt/5.13.2/gcc_64/lib/libQt5Xml.so* release/lib
53+
cp /usr/lib64/libfftw3.so* release/lib
54+
cp /usr/lib/libfftw3.so* release/lib
55+
cp /usr/local/lib/libfftw3.so* release/lib
56+
cp /usr/local/lib64/libfftw3.so* release/lib
57+
cd release
58+
tar cvzf hobbits_${{ parameters.artifactName }}.tgz bin lib plugins
59+
displayName: 'Collect and package release files'
60+
61+
- task: CopyFiles@2
62+
inputs:
63+
sourceFolder: release
64+
contents: hobbits_${{ parameters.artifactName }}.tgz
65+
targetFolder: $(Build.ArtifactStagingDirectory)
66+
67+
- task: PublishBuildArtifacts@1
68+
inputs:
69+
pathToPublish: $(Build.ArtifactStagingDirectory)
70+
artifactName: ${{ parameters.artifactName }}

ci/mac.yml

+84
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
steps:
2+
- checkout: self
3+
4+
- script: brew install fftw
5+
displayName: 'Install FFTW3'
6+
7+
- script: brew install pkg-config
8+
displayName: 'Install pkg-config'
9+
10+
- task: UsePythonVersion@0
11+
inputs:
12+
versionSpec: '3.x'
13+
14+
- task: NodeTool@0
15+
inputs:
16+
versionSpec: '12.x'
17+
18+
- script: |
19+
/bin/bash -c "sudo xcode-select -s /Applications/Xcode_11.app/Contents/Developer"
20+
displayName: 'Use Xcode 11'
21+
22+
- script: |
23+
cd $(Build.SourcesDirectory)
24+
python -m pip install aqtinstall
25+
displayName: 'Install aqtinstall'
26+
27+
- script: |
28+
python -m aqt install --outputdir $(Build.BinariesDirectory)/Qt 5.14.1 mac desktop -m qtcore qtgui qtnetwork qtwidgets
29+
displayName: 'Install Qt 5.14.1'
30+
31+
- bash: |
32+
./qmake_version_args.sh | sed 's/\([^\\]\)\\\\"/\1\\\\\\"/g' > qmake_args
33+
cat qmake_args
34+
workingDirectory: $(Build.SourcesDirectory)/src
35+
displayName: 'Get version arguments for qmake'
36+
37+
- script: |
38+
cd $(Build.SourcesDirectory)/src
39+
$(Build.BinariesDirectory)/Qt/5.14.1/clang_64/bin/qmake $(cat qmake_args)
40+
displayName: 'Run qmake'
41+
42+
- script: |
43+
cd $(Build.SourcesDirectory)/src
44+
make -j$(nproc)
45+
displayName: 'Build hobbits'
46+
47+
- script: |
48+
ls $(Build.SourcesDirectory)/src/hobbits-gui
49+
ls $(Build.BinariesDirectory)/Qt/5.14.1/clang_64/lib
50+
ls $(Build.BinariesDirectory)/Qt/5.14.1/clang_64/bin
51+
cd $(Build.SourcesDirectory)/src/hobbits-gui
52+
$(Build.BinariesDirectory)/Qt/5.14.1/clang_64/bin/macdeployqt hobbits.app
53+
cp $(Build.SourcesDirectory)/src/hobbits-runner/hobbits-runner hobbits.app/Contents/MacOS/
54+
mkdir -p hobbits.app/Contents/plugins/analyzers hobbits.app/Contents/plugins/operators hobbits.app/Contents/plugins/displays hobbits.app/Contents/plugins/importerexporters
55+
cp $(Build.SourcesDirectory)/src/hobbits-plugins/analyzers/*/lib*.dylib hobbits.app/Contents/plugins/analyzers
56+
cp $(Build.SourcesDirectory)/src/hobbits-plugins/displays/*/lib*.dylib hobbits.app/Contents/plugins/displays
57+
cp $(Build.SourcesDirectory)/src/hobbits-plugins/importerexporters/*/lib*.dylib hobbits.app/Contents/plugins/importerexporters
58+
cp $(Build.SourcesDirectory)/src/hobbits-plugins/operators/*/lib*.dylib hobbits.app/Contents/plugins/operators
59+
cp $(Build.SourcesDirectory)/src/hobbits-core/libhobbits-core.*dylib hobbits.app/Contents/Frameworks
60+
mkdir -p hobbits.app/Contents/Frameworks/QtNetwork.framework/Versions/5/
61+
cd hobbits.app/Contents/Frameworks/QtNetwork.framework
62+
cp -r $(Build.BinariesDirectory)/Qt/5.14.1/clang_64/lib/QtNetwork.framework/Versions/5/Resources Versions/5/
63+
cp $(Build.BinariesDirectory)/Qt/5.14.1/clang_64/lib/QtNetwork.framework/Versions/5/QtNetwork Versions/5/
64+
cp $(Build.BinariesDirectory)/Qt/5.14.1/clang_64/lib/QtNetwork.framework/QtNetwork .
65+
ln -s Versions/5/Resources Resources
66+
cd Versions
67+
ln -s 5 Current
68+
cd $(Build.SourcesDirectory)/src/hobbits-gui
69+
find . \( -name "*dylib" -o -name "hobbits" -o -name "hobbits-runner" \) -exec install_name_tool -change libhobbits-core.1.dylib @rpath/libhobbits-core.1.dylib $@ {} \;
70+
cp /usr/local/opt/fftw/lib/libfftw3.*dylib hobbits.app/Contents/Frameworks
71+
install_name_tool -change /usr/local/opt/fftw/lib/libfftw3.3.dylib @rpath/libfftw3.3.dylib hobbits.app/Contents/plugins/analyzers/libWidthFramer.dylib
72+
tar cvzf hobbits_mac_release.tgz hobbits.app
73+
displayName: 'Create mac app bundle'
74+
75+
- task: CopyFiles@2
76+
inputs:
77+
sourceFolder: $(Build.SourcesDirectory)/src/hobbits-gui
78+
contents: hobbits_mac_release.tgz
79+
targetFolder: $(Build.ArtifactStagingDirectory)
80+
81+
- task: PublishBuildArtifacts@1
82+
inputs:
83+
pathToPublish: $(Build.ArtifactStagingDirectory)
84+
artifactName: mac_release

ci/ubuntu-setup.yml

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
steps:
2+
- script: sudo apt-get update
3+
displayName: 'Update packages'
4+
5+
- script: sudo apt-get install libgl1-mesa-dev
6+
displayName: 'Install libGL'
7+
8+
- script: sudo apt-get install fftw3-dev
9+
displayName: 'Install FFTW3'
10+
11+
- script: |
12+
cd $(Build.SourcesDirectory)
13+
python3 -m pip install aqtinstall==0.7.1
14+
displayName: 'Install aqtinstall'
15+
16+
- task: NodeTool@0
17+
inputs:
18+
versionSpec: '12.x'

ci/windows.yml

+85
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
steps:
2+
- checkout: self
3+
4+
- task: UsePythonVersion@0
5+
inputs:
6+
versionSpec: '3.x'
7+
8+
- task: NodeTool@0
9+
inputs:
10+
versionSpec: '12.x'
11+
12+
- script: |
13+
cd $(Build.SourcesDirectory)
14+
python -m pip install aqtinstall
15+
displayName: 'Install aqtinstall'
16+
17+
- script: |
18+
python -m aqt install --outputdir $(Build.BinariesDirectory)\Qt 5.14.1 windows desktop win64_msvc2017_64 -m qtcore qtgui qtnetwork qtwidgets
19+
displayName: 'Install Qt 5.14.1'
20+
21+
- script: |
22+
python -m aqt tool --outputdir $(Build.BinariesDirectory)\Qt windows tools_openssl_x64 1.1.1-4 qt.tools.openssl.win_x64
23+
displayName: 'Install OpenSSL for QtNetwork'
24+
25+
- script: |
26+
cd $(Build.SourcesDirectory)\windows
27+
call "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\VC\\Auxiliary\\Build\\vcvars64.bat"
28+
lib.exe /def:libfftw3-3.def
29+
dir
30+
displayName: 'Create FFTW .lib'
31+
32+
- bash: |
33+
./qmake_version_args.sh | sed 's/\([^\\]\)\\\\\\"/\1\\\\\\\\\\\\\\"/g' | sed 's/\([^\\]\)\\"/\1\\\\\\"/g' > qmake_args
34+
cat qmake_args
35+
workingDirectory: $(Build.SourcesDirectory)/src
36+
displayName: 'Get version arguments for qmake'
37+
38+
- script: |
39+
cd $(Build.SourcesDirectory)\src
40+
call "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\VC\\Auxiliary\\Build\\vcvars64.bat"
41+
set /p QMAKE_VERSION_ARGS= <qmake_args
42+
$(Build.BinariesDirectory)\Qt\5.14.1\msvc2017_64\bin\qmake.exe %QMAKE_VERSION_ARGS%
43+
displayName: 'Run qmake'
44+
45+
- script: |
46+
cd $(Build.SourcesDirectory)\src
47+
call "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\VC\\Auxiliary\\Build\\vcvars64.bat"
48+
nmake release
49+
displayName: 'Build hobbits'
50+
51+
- script: |
52+
dir $(Build.BinariesDirectory)\Qt\Tools\
53+
cd $(Build.BinariesDirectory)
54+
mkdir -p release\plugins\analyzers release\plugins\operators release\plugins\displays release\plugins\importerexporters
55+
xcopy $(Build.SourcesDirectory)\windows\libfftw3-3.dll release\
56+
xcopy $(Build.SourcesDirectory)\src\hobbits-gui\hobbits.exe release\
57+
xcopy $(Build.SourcesDirectory)\src\hobbits-runner\hobbits-runner.exe release\
58+
forfiles /p $(Build.SourcesDirectory)\src\hobbits-plugins\analyzers\ /m *.dll /s /c "cmd /c echo xcopy @path $(Build.BinariesDirectory)\release\plugins\analyzers\ "
59+
forfiles /p $(Build.SourcesDirectory)\src\hobbits-plugins\analyzers\ /m *.dll /s /c "cmd /c xcopy @path $(Build.BinariesDirectory)\release\plugins\analyzers\ "
60+
forfiles /p $(Build.SourcesDirectory)\src\hobbits-plugins\displays\ /m *.dll /s /c "cmd /c xcopy @path $(Build.BinariesDirectory)\release\plugins\displays\ "
61+
forfiles /p $(Build.SourcesDirectory)\src\hobbits-plugins\importerexporters\ /m *.dll /s /c "cmd /c xcopy @path $(Build.BinariesDirectory)\release\plugins\importerexporters\ "
62+
forfiles /p $(Build.SourcesDirectory)\src\hobbits-plugins\operators\ /m *.dll /s /c "cmd /c xcopy @path $(Build.BinariesDirectory)\release\plugins\operators\ "
63+
forfiles /p $(Build.BinariesDirectory)\Qt\Tools\ /m *.dll /s /c "cmd /c xcopy @path $(Build.BinariesDirectory)\release "
64+
xcopy $(Build.SourcesDirectory)\src\hobbits-core\hobbits-core.dll release\
65+
xcopy $(Build.BinariesDirectory)\Qt\5.14.1\msvc2017_64\plugins\platforms release\platforms /i
66+
xcopy $(Build.BinariesDirectory)\Qt\5.14.1\msvc2017_64\bin\Qt5Concurrent.dll release\
67+
xcopy $(Build.BinariesDirectory)\Qt\5.14.1\msvc2017_64\bin\Qt5Core.dll release\
68+
xcopy $(Build.BinariesDirectory)\Qt\5.14.1\msvc2017_64\bin\Qt5Gui.dll release\
69+
xcopy $(Build.BinariesDirectory)\Qt\5.14.1\msvc2017_64\bin\Qt5Network.dll release\
70+
xcopy $(Build.BinariesDirectory)\Qt\5.14.1\msvc2017_64\bin\Qt5Widgets.dll release\
71+
xcopy $(Build.BinariesDirectory)\Qt\5.14.1\msvc2017_64\bin\libEGL.dll release\
72+
xcopy $(Build.BinariesDirectory)\Qt\5.14.1\msvc2017_64\bin\libGLSv2.dll release\
73+
xcopy $(Build.BinariesDirectory)\Qt\5.14.1\msvc2017_64\bin\opengl32sw.dll release\
74+
displayName: 'Collect release files'
75+
76+
- task: ArchiveFiles@2
77+
inputs:
78+
rootFolderOrFile: $(Build.BinariesDirectory)\release
79+
includeRootFolder: false
80+
archiveFile: $(Build.ArtifactStagingDirectory)\hobbits_windows_release.zip
81+
82+
- task: PublishBuildArtifacts@1
83+
inputs:
84+
pathToPublish: $(Build.ArtifactStagingDirectory)
85+
artifactName: windows_release

package.json

+82
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
{
2+
"name": "hobbits",
3+
"version": "0.19.0",
4+
"private": true,
5+
"release": {
6+
"ci": true,
7+
"branches": [
8+
"master"
9+
],
10+
"debug": true,
11+
"dryRun": false,
12+
"plugins": [
13+
"@semantic-release/commit-analyzer",
14+
"@semantic-release/release-notes-generator",
15+
"@semantic-release/changelog",
16+
"@semantic-release/npm",
17+
[
18+
"@semantic-release/git",
19+
{
20+
"assets": [
21+
"CHANGELOG.md",
22+
"package.json"
23+
],
24+
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
25+
}
26+
],
27+
[
28+
"@semantic-release/github",
29+
{
30+
"assets": [
31+
{
32+
"path": "hobbits/centos7_gcc48_release/hobbits.tgz",
33+
"label": "Hobbits (64-bit CentOS 7 GCC 4.8)"
34+
},
35+
{
36+
"path": "hobbits/ubuntu18_gcc7_release/hobbits.tgz",
37+
"label": "Hobbits (64-bit Ubuntu 18.04 GCC 7)"
38+
},
39+
{
40+
"path": "hobbits/windows_release/hobbits.zip",
41+
"label": "Hobbits (64-bit Windows 2016 msvc2017)"
42+
},
43+
{
44+
"path": "hobbits/mac_release/hobbits.tgz",
45+
"label": "Hobbits (64-bit Mac OSX 10.14)"
46+
}
47+
]
48+
}
49+
]
50+
]
51+
},
52+
"config": {
53+
"commitizen": {
54+
"path": "node_modules/@commitlint/prompt"
55+
}
56+
},
57+
"commitlint": {
58+
"extends": [
59+
"@commitlint/config-conventional"
60+
],
61+
"rules": {}
62+
},
63+
"husky": {
64+
"hooks": {
65+
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
66+
}
67+
},
68+
"devDependencies": {
69+
"@commitlint/cli": "^8.3.5",
70+
"@commitlint/config-conventional": "^8.3.4",
71+
"@commitlint/prompt": "^8.3.5",
72+
"@semantic-release/changelog": "^5.0.0",
73+
"@semantic-release/commit-analyzer": "^8.0.1",
74+
"@semantic-release/git": "^9.0.0",
75+
"@semantic-release/github": "^7.0.3",
76+
"@semantic-release/npm": "^7.0.3",
77+
"@semantic-release/release-notes-generator": "^9.0.0",
78+
"commitizen": "^4.0.3",
79+
"husky": "^4.2.3",
80+
"semantic-release": "^17.0.3"
81+
}
82+
}

src/hobbits-core/actionprogress.h

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
#include <QMutex>
55
#include <QObject>
66

7-
class ActionProgress : public QObject
7+
#include "hobbits-core_global.h"
8+
9+
class HOBBITSCORESHARED_EXPORT ActionProgress : public QObject
810
{
911
Q_OBJECT
1012

0 commit comments

Comments
 (0)