@@ -2,22 +2,10 @@ name: Build and Release
22
33on :
44 push :
5- tags :
6- - " v*"
5+ branches : [build-sign-test]
76
87jobs :
9- check-branch :
10- runs-on : ubuntu-latest
11- steps :
12- - uses : actions/checkout@v4
13- - name : Verify tag is on main
14- run : |
15- if [ "$(git branch --contains $GITHUB_REF)" != "* main" ]; then
16- echo "Tag $GITHUB_REF is not on main branch"
17- exit 1
18- fi
198 build :
20- needs : check-branch
219 runs-on : ${{ matrix.os }}
2210 strategy :
2311 matrix :
3220
3321 steps :
3422 - uses : actions/checkout@v4
35-
3623 - name : Set up Python
3724 uses : actions/setup-python@v4
3825 with :
@@ -82,13 +69,48 @@ jobs:
8269 pyinstaller --onefile --name ecooptimizer-server-dev $(which eco-ext-dev)
8370 mv dist/ecooptimizer-server-dev dist/ecooptimizer-server-dev-${{ matrix.artifact_name }}
8471
72+ - name : Install signing tools
73+ if : matrix.os == 'windows-latest'
74+ run : |
75+ choco install osslsigncode -y
76+
77+ - name : Sign Windows binaries
78+ if : matrix.os == 'windows-latest'
79+ run : |
80+ openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes -subj "/CN=EcoOptimizer"
81+ osslsigncode sign -certs cert.pem -key key.pem -n "EcoOptimizer" -t http://timestamp.digicert.com -in dist/ecooptimizer-server-${{ matrix.artifact_name }} -out dist/ecooptimizer-server-${{ matrix.artifact_name }}.signed
82+ mv dist/ecooptimizer-server-${{ matrix.artifact_name }}.signed dist/ecooptimizer-server-${{ matrix.artifact_name }}
83+ osslsigncode sign -certs cert.pem -key key.pem -n "EcoOptimizer" -t http://timestamp.digicert.com -in dist/ecooptimizer-server-dev-${{ matrix.artifact_name }} -out dist/ecooptimizer-server-dev-${{ matrix.artifact_name }}.signed
84+ mv dist/ecooptimizer-server-dev-${{ matrix.artifact_name }}.signed dist/ecooptimizer-server-dev-${{ matrix.artifact_name }}
85+
86+ - name : Sign macOS binaries
87+ if : matrix.os == 'macos-latest'
88+ run : |
89+ codesign --force --deep --sign - dist/ecooptimizer-server-${{ matrix.artifact_name }}
90+ codesign --force --deep --sign - dist/ecooptimizer-server-dev-${{ matrix.artifact_name }}
91+
92+ - name : Set up GPG (Linux)
93+ if : matrix.os == 'ubuntu-latest'
94+ run : |
95+ sudo apt-get install -y gpg
96+ echo "${{ secrets.GPG_PRIVATE_KEY }}" | gpg --batch --import
97+ gpg --list-secret-keys
98+
99+ - name : Sign Linux binaries
100+ if : matrix.os == 'ubuntu-latest'
101+ run : |
102+ cd dist
103+ gpg --detach-sign --armor -u "${{ secrets.GPG_KEY_ID }}" ecooptimizer-server-${{ matrix.artifact_name }}
104+ gpg --detach-sign --armor -u "${{ secrets.GPG_KEY_ID }}" ecooptimizer-server-dev-${{ matrix.artifact_name }}
105+
85106 - name : Upload artifacts
86107 uses : actions/upload-artifact@v4
87108 with :
88109 name : artifacts-${{ matrix.os }}
89110 path : |
90111 dist/ecooptimizer-server-*
91112 dist/ecooptimizer-server-dev-*
113+ dist/*.asc # For Linux GPG signatures
92114 if-no-files-found : error
93115
94116 create-release :
@@ -100,7 +122,7 @@ jobs:
100122 with :
101123 path : artifacts
102124 pattern : artifacts-*
103- merge-multiple : false # Keep separate folders per OS
125+ merge-multiple : false
104126
105127 - name : Create release
106128 uses : softprops/action-gh-release@v1
@@ -109,24 +131,15 @@ jobs:
109131 name : ${{ github.ref_name }}
110132 body : |
111133 ${{ github.event.head_commit.message }}
112-
113- # # EcoOptimizer Server Executables
114- This release contains the standalone server executables for launching the EcoOptimizer analysis engine.
115- These are designed to work with the corresponding **EcoOptimizer VS Code Extension**.
116-
117- # ## Included Artifacts
118- - **Production Server**: `ecooptimizer-server-<platform>`
119- (Stable version for production use)
120- - **Development Server**: `ecooptimizer-server-dev-<platform>`
121- (Development version with debug features)
122-
123- # ## Platform Support
124- - Linux (`linux-x64`)
125- - Windows (`windows-x64.exe`)
126- - macOS (`macos-x64`)
134+
135+ **Signed Artifacts:**
136+ - Windows: Authenticode-signed
137+ - macOS: Ad-hoc signed
138+ - Linux: GPG-signed (.asc files)
127139 files : |
128- artifacts/artifacts-ubuntu-latest/dist/*
129- artifacts/artifacts-windows-latest/dist/*
130- artifacts/artifacts-macos-latest/dist/*
140+ artifacts/artifacts-ubuntu-latest/*
141+ artifacts/artifacts-windows-latest/*
142+ artifacts/artifacts-macos-latest/*
143+ draft : true
131144 env :
132145 GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments