Skip to content

Update build command for C project in workflow #3

Update build command for C project in workflow

Update build command for C project in workflow #3

Workflow file for this run

name: Flash CLI CI + Conditional Release
on:
push:
branches: ["main"]
pull_request:
jobs:
# ------------------------------
# 1. CI JOB (Runs on PR + Push)
# ------------------------------
ci:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install GCC
run: sudo apt-get install build-essential -y
- name: Build C Project
run: gcc Flash-cli.c -o flash-linux-x64 -lcurl
- name: Run Tests
run: |
if [ -d "tests" ]; then
for f in tests/*.sh; do
bash "$f"
done
else
echo "No tests directory"
fi
# -------------------------------------------------------
# 2. RELEASE JOB (Runs only on push to main, PR merged)
# -------------------------------------------------------
release:
needs: ci
if: github.event_name == 'push' && contains(github.event.head_commit.message, 'Merge pull request') == false
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
# Detect if version.h changed
- name: Check if version file changed
id: check_version
run: |
git fetch origin main --depth=2
if git diff --name-only HEAD^ HEAD | grep -q "lib/version.h"; then
echo "changed=true" >> $GITHUB_ENV
else
echo "changed=false" >> $GITHUB_ENV
fi
- name: Stop if version did not change
if: env.changed == 'false'
run: |
echo "version.h not changed → Skip release"
exit 0
- name: Extract version from version.h
run: |
VERSION=$(grep "RELEASE_VERSION" lib/version.h | cut -d '"' -f2)
echo "VERSION=$VERSION" >> $GITHUB_ENV
- name: Build binary
run: gcc src/*.c -o flash-http
# Release Title Logic
- name: Decide Release Title
run: |
if [ "${{ github.event_name }}" = "push" ]; then
echo "TITLE=${{ github.event.head_commit.message }}" >> $GITHUB_ENV
fi
- name: Create GitHub Release
uses: softprops/action-gh-release@v1
with:
name: "${{ env.TITLE }} (v${{ env.VERSION }})"
tag_name: "v${{ env.VERSION }}"
files: flash-http
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}