Skip to content

Commit c7f3c8c

Browse files
committed
chore: Add bssh-keygen to release pipeline and update Ubuntu to 26.04
- Include bssh-keygen in build, packaging, and artifact upload steps - Add bssh-keygen formula update to Homebrew tap workflow - Update Ubuntu build target from 25.10 (questing) to 26.04 (resolute) - Include bssh-keygen man page in release packages
1 parent 41a0c61 commit c7f3c8c

3 files changed

Lines changed: 95 additions & 12 deletions

File tree

.github/workflows/debian_build.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,13 @@ jobs:
6161
os: ubuntu-24.04-arm
6262
version: "24.04"
6363
- arch: amd64
64-
distro: questing
64+
distro: resolute
6565
os: ubuntu-24.04
66-
version: "25.10"
66+
version: "26.04"
6767
- arch: arm64
68-
distro: questing
68+
distro: resolute
6969
os: ubuntu-24.04-arm
70-
version: "25.10"
70+
version: "26.04"
7171
# Binary asset mappings
7272
- arch: amd64
7373
package: bssh

.github/workflows/release.yml

Lines changed: 46 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: Release
22

33
on:
44
release:
5-
types: [published]
5+
types: [published, prereleased]
66
workflow_dispatch:
77
inputs:
88
update_homebrew:
@@ -98,9 +98,9 @@ jobs:
9898
sudo apt update
9999
sudo apt install -y musl-tools
100100
101-
# 5) Build release binaries (bssh and bssh-server)
101+
# 5) Build release binaries (bssh, bssh-server, and bssh-keygen)
102102
- name: Build release binaries
103-
run: cargo build --release --target ${{ matrix.target }} --locked --bin bssh --bin bssh-server
103+
run: cargo build --release --target ${{ matrix.target }} --locked --bin bssh --bin bssh-server --bin bssh-keygen
104104

105105
# 6) macOS code signing
106106
- name: Import Distribution certificate
@@ -114,18 +114,19 @@ jobs:
114114
if: runner.os == 'macOS'
115115
run: |
116116
BIN_DIR=target/${{ matrix.target }}/release
117-
for bin in bssh bssh-server; do
117+
for bin in bssh bssh-server bssh-keygen; do
118118
codesign --force --timestamp --options runtime \
119119
--sign "Distribution" "$BIN_DIR/$bin"
120120
done
121121
122-
# 7) Package binaries (separate packages for bssh and bssh-server)
122+
# 7) Package binaries (separate packages for bssh, bssh-server, and bssh-keygen)
123123
- name: Package Linux binaries (tar.gz)
124124
if: runner.os == 'Linux'
125125
run: |
126126
BIN_DIR=target/${{ matrix.target }}/release
127127
ASSET_BASE="${{ matrix.asset_name }}"
128128
SERVER_ASSET_BASE="${ASSET_BASE/bssh/bssh-server}"
129+
KEYGEN_ASSET_BASE="${ASSET_BASE/bssh/bssh-keygen}"
129130
130131
# Package bssh
131132
mkdir -p package-bssh
@@ -139,12 +140,19 @@ jobs:
139140
cp docs/man/bssh-server.8 package-bssh-server/
140141
tar -C package-bssh-server -czf "${SERVER_ASSET_BASE}.tar.gz" .
141142
143+
# Package bssh-keygen
144+
mkdir -p package-bssh-keygen
145+
cp "$BIN_DIR/bssh-keygen" package-bssh-keygen/
146+
cp docs/man/bssh-keygen.1 package-bssh-keygen/
147+
tar -C package-bssh-keygen -czf "${KEYGEN_ASSET_BASE}.tar.gz" .
148+
142149
- name: Package macOS binaries (zip)
143150
if: runner.os == 'macOS'
144151
run: |
145152
BIN_DIR="target/${{ matrix.target }}/release"
146153
ASSET_BASE="${{ matrix.asset_name }}"
147154
SERVER_ASSET_BASE="${ASSET_BASE/bssh/bssh-server}"
155+
KEYGEN_ASSET_BASE="${ASSET_BASE/bssh/bssh-keygen}"
148156
149157
# Package bssh
150158
mkdir -p package-bssh
@@ -158,14 +166,21 @@ jobs:
158166
cp docs/man/bssh-server.8 package-bssh-server/
159167
ditto -c -k --sequesterRsrc package-bssh-server "${SERVER_ASSET_BASE}.zip"
160168
169+
# Package bssh-keygen
170+
mkdir -p package-bssh-keygen
171+
cp "$BIN_DIR/bssh-keygen" package-bssh-keygen/
172+
cp docs/man/bssh-keygen.1 package-bssh-keygen/
173+
ditto -c -k --sequesterRsrc package-bssh-keygen "${KEYGEN_ASSET_BASE}.zip"
174+
161175
# 8) Generate checksums
162176
- name: Generate checksums
163177
run: |
164178
ASSET_BASE="${{ matrix.asset_name }}"
165179
SERVER_ASSET_BASE="${ASSET_BASE/bssh/bssh-server}"
180+
KEYGEN_ASSET_BASE="${ASSET_BASE/bssh/bssh-keygen}"
166181
EXT="${{ matrix.archive_ext }}"
167182
168-
for file in "${ASSET_BASE}${EXT}" "${SERVER_ASSET_BASE}${EXT}"; do
183+
for file in "${ASSET_BASE}${EXT}" "${SERVER_ASSET_BASE}${EXT}" "${KEYGEN_ASSET_BASE}${EXT}"; do
169184
if [[ "$RUNNER_OS" == "Linux" ]]; then
170185
sha256sum "$file" > "$file.sha256"
171186
else
@@ -179,6 +194,7 @@ jobs:
179194
run: |
180195
ASSET_BASE="${{ matrix.asset_name }}"
181196
SERVER_ASSET_BASE="${ASSET_BASE/bssh/bssh-server}"
197+
KEYGEN_ASSET_BASE="${ASSET_BASE/bssh/bssh-keygen}"
182198
EXT="${{ matrix.archive_ext }}"
183199
TAG="${{ github.event.release.tag_name || github.event.inputs.release_tag }}"
184200
@@ -187,10 +203,34 @@ jobs:
187203
"${ASSET_BASE}${EXT}.sha256" \
188204
"${SERVER_ASSET_BASE}${EXT}" \
189205
"${SERVER_ASSET_BASE}${EXT}.sha256" \
206+
"${KEYGEN_ASSET_BASE}${EXT}" \
207+
"${KEYGEN_ASSET_BASE}${EXT}.sha256" \
190208
--clobber
191209
env:
192210
GH_TOKEN: ${{ github.token }}
193211

212+
# ============================================================================
213+
# Publish pre-release as official release (after all builds complete)
214+
# ============================================================================
215+
publish-release:
216+
name: Publish pre-release as official
217+
needs: [build]
218+
if: github.event_name == 'release' && github.event.release.prerelease
219+
runs-on: ubuntu-latest
220+
permissions:
221+
contents: write
222+
223+
steps:
224+
- name: Checkout code
225+
uses: actions/checkout@v4
226+
227+
- name: Convert pre-release to official release
228+
run: |
229+
TAG="${{ github.event.release.tag_name }}"
230+
gh release edit "$TAG" --prerelease=false
231+
env:
232+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
233+
194234
# ============================================================================
195235
# Microsoft Teams release notification (Power Automate Workflows webhook)
196236
# ============================================================================

.github/workflows/update_homebrew_formula.yml

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ jobs:
3636
if [ "${{ github.event_name }}" = "workflow_dispatch" ] && [ -n "${{ github.event.inputs.release_tag }}" ]; then
3737
echo "VERSION=${{ github.event.inputs.release_tag }}" >> $GITHUB_ENV
3838
else
39-
TAG=$(gh api repos/${{ github.repository }}/releases/latest --jq .tag_name)
39+
# Get the latest official (non-pre-release) release
40+
TAG=$(gh release view --json tagName --jq .tagName)
4041
echo "VERSION=$TAG" >> $GITHUB_ENV
4142
fi
4243
env:
@@ -66,6 +67,11 @@ jobs:
6667
SERVER_LINUX_ARM_URL="https://github.com/lablup/bssh/releases/download/v${VERSION}/bssh-server-linux-aarch64.tar.gz"
6768
SERVER_LINUX_X86_URL="https://github.com/lablup/bssh/releases/download/v${VERSION}/bssh-server-linux-x86_64.tar.gz"
6869
70+
# bssh-keygen URLs
71+
KEYGEN_MAC_URL="https://github.com/lablup/bssh/releases/download/v${VERSION}/bssh-keygen-macos-aarch64.zip"
72+
KEYGEN_LINUX_ARM_URL="https://github.com/lablup/bssh/releases/download/v${VERSION}/bssh-keygen-linux-aarch64.tar.gz"
73+
KEYGEN_LINUX_X86_URL="https://github.com/lablup/bssh/releases/download/v${VERSION}/bssh-keygen-linux-x86_64.tar.gz"
74+
6975
mkdir -p tmp
7076
7177
# Download bssh artifacts
@@ -78,6 +84,11 @@ jobs:
7884
curl -Ls "$SERVER_LINUX_ARM_URL" -o tmp/server-linux-arm.tar.gz
7985
curl -Ls "$SERVER_LINUX_X86_URL" -o tmp/server-linux-x86.tar.gz
8086
87+
# Download bssh-keygen artifacts
88+
curl -Ls "$KEYGEN_MAC_URL" -o tmp/keygen-mac.zip
89+
curl -Ls "$KEYGEN_LINUX_ARM_URL" -o tmp/keygen-linux-arm.tar.gz
90+
curl -Ls "$KEYGEN_LINUX_X86_URL" -o tmp/keygen-linux-x86.tar.gz
91+
8192
# Export bssh URLs and checksums
8293
echo "mac_url=$MAC_URL" >> $GITHUB_ENV
8394
echo "linux_arm_url=$LINUX_ARM_URL" >> $GITHUB_ENV
@@ -94,6 +105,14 @@ jobs:
94105
echo "server_linux_arm_sha=$(shasum -a 256 tmp/server-linux-arm.tar.gz | awk '{print $1}')" >> $GITHUB_ENV
95106
echo "server_linux_x86_sha=$(shasum -a 256 tmp/server-linux-x86.tar.gz | awk '{print $1}')" >> $GITHUB_ENV
96107
108+
# Export bssh-keygen URLs and checksums
109+
echo "keygen_mac_url=$KEYGEN_MAC_URL" >> $GITHUB_ENV
110+
echo "keygen_linux_arm_url=$KEYGEN_LINUX_ARM_URL" >> $GITHUB_ENV
111+
echo "keygen_linux_x86_url=$KEYGEN_LINUX_X86_URL" >> $GITHUB_ENV
112+
echo "keygen_mac_sha=$(shasum -a 256 tmp/keygen-mac.zip | awk '{print $1}')" >> $GITHUB_ENV
113+
echo "keygen_linux_arm_sha=$(shasum -a 256 tmp/keygen-linux-arm.tar.gz | awk '{print $1}')" >> $GITHUB_ENV
114+
echo "keygen_linux_x86_sha=$(shasum -a 256 tmp/keygen-linux-x86.tar.gz | awk '{print $1}')" >> $GITHUB_ENV
115+
97116
- name: Update bssh formula
98117
run: |
99118
cd homebrew-tap
@@ -131,12 +150,36 @@ jobs:
131150
echo "Warning: Formula/bssh-server.rb not found, skipping server formula update"
132151
fi
133152
153+
- name: Update bssh-keygen formula
154+
run: |
155+
cd homebrew-tap
156+
VERSION="${{ env.VERSION_NO_V }}"
157+
158+
# Check if bssh-keygen formula exists
159+
if [ -f "Formula/bssh-keygen.rb" ]; then
160+
gsed -i "s/^ version .*/ version \"${VERSION}\"/" Formula/bssh-keygen.rb
161+
162+
gsed -i "s|https://github.com/.*/bssh-keygen-macos-aarch64.zip|${keygen_mac_url}|" Formula/bssh-keygen.rb
163+
gsed -i "/bssh-keygen-macos-aarch64.zip\"/!b;n;c\ sha256 \"${keygen_mac_sha}\"" Formula/bssh-keygen.rb
164+
165+
gsed -i "s|https://github.com/.*/bssh-keygen-linux-aarch64.tar.gz|${keygen_linux_arm_url}|" Formula/bssh-keygen.rb
166+
gsed -i "/bssh-keygen-linux-aarch64.tar.gz\"/!b;n;c\ sha256 \"${keygen_linux_arm_sha}\"" Formula/bssh-keygen.rb
167+
168+
gsed -i "s|https://github.com/.*/bssh-keygen-linux-x86_64.tar.gz|${keygen_linux_x86_url}|" Formula/bssh-keygen.rb
169+
gsed -i "/bssh-keygen-linux-x86_64.tar.gz\"/!b;n;c\ sha256 \"${keygen_linux_x86_sha}\"" Formula/bssh-keygen.rb
170+
else
171+
echo "Warning: Formula/bssh-keygen.rb not found, skipping keygen formula update"
172+
fi
173+
134174
- name: Commit and push changes to tap
135175
run: |
136176
cd homebrew-tap
137177
git add Formula/bssh.rb
138178
if [ -f "Formula/bssh-server.rb" ]; then
139179
git add Formula/bssh-server.rb
140180
fi
141-
git commit -m "bump: bssh and bssh-server to v${{ env.VERSION_NO_V }}"
181+
if [ -f "Formula/bssh-keygen.rb" ]; then
182+
git add Formula/bssh-keygen.rb
183+
fi
184+
git commit -m "bump: bssh, bssh-server, and bssh-keygen to v${{ env.VERSION_NO_V }}"
142185
git push origin main

0 commit comments

Comments
 (0)