Skip to content

Commit 64e9e55

Browse files
pditommasoclaude
andcommitted
Add automated release job to GitHub Actions workflow
Adds a new release job that triggers when commit message contains [release] and runs the complete release process after all tests pass successfully. Features: - Conditional execution based on '[release]' in commit message - Depends on both build and test jobs completing successfully - Runs release.sh script with proper error handling - 10 minute timeout for efficient release process - Proper permissions for GitHub releases The release.sh script executes: - make clean assemble upload deploy - make release-plugins - make release Usage: Include '[release]' in commit message to trigger automated release 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> Signed-off-by: Paolo Di Tommaso <paolo.ditommaso@gmail.com>
1 parent 8f3fc03 commit 64e9e55

2 files changed

Lines changed: 64 additions & 0 deletions

File tree

.github/workflows/build.yml

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,3 +229,44 @@ jobs:
229229
env:
230230
GITHUB_TOKEN: ${{ secrets.AUTOMATION_GITHUB_TOKEN }}
231231
GRADLE_OPTS: '-Dorg.gradle.daemon=false'
232+
233+
release:
234+
if: ${{ contains(needs.build.outputs.commit_message, '[release]') }}
235+
needs: [build, test]
236+
runs-on: ubuntu-latest
237+
timeout-minutes: 10
238+
permissions:
239+
actions: write
240+
contents: write
241+
packages: write
242+
steps:
243+
- name: Checkout
244+
uses: actions/checkout@v4
245+
with:
246+
fetch-depth: 0
247+
submodules: true
248+
249+
- name: Setup env
250+
run: |
251+
rm -f $HOME/.gitconfig;
252+
mkdir -p "$HOME/.nextflow";
253+
echo "providers.github.auth='$NXF_GITHUB_ACCESS_TOKEN'" > "$HOME/.nextflow/scm"
254+
env:
255+
NXF_GITHUB_ACCESS_TOKEN: ${{ secrets.NXF_GITHUB_ACCESS_TOKEN }}
256+
257+
- name: Setup Java 17
258+
uses: actions/setup-java@v4
259+
with:
260+
java-version: 17
261+
distribution: 'temurin'
262+
architecture: x64
263+
cache: gradle
264+
265+
- name: Run release
266+
run: |
267+
echo "Starting release process..."
268+
bash release.sh
269+
env:
270+
GRADLE_OPTS: '-Dorg.gradle.daemon=false'
271+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
272+
# Add any additional secrets needed for release

release.sh

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#!/bin/bash
2+
set -e
3+
set -x
4+
5+
echo "=== Starting Nextflow Release Process ==="
6+
echo "Commit message: ${GITHUB_HEAD_COMMIT_MESSAGE:-$(git log -1 --pretty=format:'%s')}"
7+
8+
# Verify we're in release mode
9+
if [[ ! "${GITHUB_HEAD_COMMIT_MESSAGE:-$(git log -1 --pretty=format:'%s')}" =~ \[release\] ]]; then
10+
echo "ERROR: This script should only be run when commit message contains '[release]'"
11+
exit 1
12+
fi
13+
14+
echo "=== Step 1: Clean, assemble, upload, and deploy ==="
15+
make clean assemble upload deploy
16+
17+
echo "=== Step 2: Release plugins ==="
18+
make release-plugins
19+
20+
echo "=== Step 3: Final release ==="
21+
make release
22+
23+
echo "=== Release process completed successfully ==="

0 commit comments

Comments
 (0)