feat: new cicd

This commit is contained in:
LeonardoTrapani
2025-10-14 13:12:48 +02:00
parent e8b9c1eff0
commit 937c15e4de
2 changed files with 33 additions and 27 deletions
+12 -11
View File
@@ -1,25 +1,26 @@
# .github/workflows/ci.yml
name: CI name: CI
on: on:
push: push:
branches: [ main, develop ] branches: [main, develop]
pull_request: pull_request:
branches: [ main, develop ] branches: [main, develop]
workflow_call: {} # <-- makes this workflow reusable
jobs: jobs:
test: test:
name: Test name: Test
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Set up Go - name: Set up Go
uses: actions/setup-go@v4 uses: actions/setup-go@v4
with: with:
go-version: '1.21' go-version: "1.21"
- name: Install dependencies - name: Install dependencies
run: | run: |
sudo apt-get update sudo apt-get update
@@ -32,20 +33,20 @@ jobs:
pipewire-bin \ pipewire-bin \
wl-clipboard \ wl-clipboard \
wtype wtype
- name: Download dependencies - name: Download dependencies
run: go mod download run: go mod download
- name: Run tests - name: Run tests
run: go test -v ./... -short run: go test -v ./... -short
- name: Build binary - name: Build binary
env: env:
CGO_ENABLED: 1 CGO_ENABLED: 1
run: go build -o hyprvoice ./cmd/hyprvoice run: go build -o hyprvoice ./cmd/hyprvoice
- name: Test binary help - name: Test binary help
run: ./hyprvoice --help run: ./hyprvoice --help
- name: Test configure command - name: Test configure command
run: ./hyprvoice configure --help run: ./hyprvoice configure --help
+21 -16
View File
@@ -1,27 +1,34 @@
# .github/workflows/release.yml
name: Release name: Release
on: on:
push: push:
tags: tags:
- 'v*' - "v*"
permissions: permissions:
contents: write contents: write
jobs: jobs:
ci:
# Run your CI first and fail fast if tests fail
uses: ./.github/workflows/ci.yml
secrets: inherit
build: build:
name: Build and Release name: Build and Release
needs: ci
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout code - name: Checkout code
uses: actions/checkout@v4 uses: actions/checkout@v4
- name: Set up Go - name: Set up Go
uses: actions/setup-go@v4 uses: actions/setup-go@v4
with: with:
go-version: '1.21' go-version: "1.21"
- name: Install dependencies - name: Install dependencies
run: | run: |
sudo apt-get update sudo apt-get update
@@ -34,11 +41,11 @@ jobs:
pipewire-bin \ pipewire-bin \
wl-clipboard \ wl-clipboard \
wtype wtype
- name: Extract version from tag - name: Extract version from tag (drop the "v")
id: version id: version
run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT run: echo "VERSION=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT"
- name: Build binary - name: Build binary
env: env:
CGO_ENABLED: 1 CGO_ENABLED: 1
@@ -48,10 +55,7 @@ jobs:
go mod download go mod download
go build -ldflags="-s -w" -o hyprvoice-linux-x86_64 ./cmd/hyprvoice go build -ldflags="-s -w" -o hyprvoice-linux-x86_64 ./cmd/hyprvoice
chmod +x hyprvoice-linux-x86_64 chmod +x hyprvoice-linux-x86_64
- name: Run tests
run: go test ./...
- name: Generate checksums - name: Generate checksums
run: | run: |
sha256sum hyprvoice-linux-x86_64 > hyprvoice-linux-x86_64.sha256 sha256sum hyprvoice-linux-x86_64 > hyprvoice-linux-x86_64.sha256
@@ -61,7 +65,8 @@ jobs:
- name: Create release - name: Create release
uses: softprops/action-gh-release@v1 uses: softprops/action-gh-release@v1
with: with:
tag_name: ${{ steps.version.outputs.VERSION }} # Use the exact tag that triggered this run
tag_name: ${{ github.ref_name }} # e.g., v1.2.3
name: Release ${{ steps.version.outputs.VERSION }} name: Release ${{ steps.version.outputs.VERSION }}
body: | body: |
## Hyprvoice v${{ steps.version.outputs.VERSION }} ## Hyprvoice v${{ steps.version.outputs.VERSION }}
@@ -77,7 +82,7 @@ jobs:
**Manual installation:** **Manual installation:**
```bash ```bash
wget https://github.com/leonardotrapani/hyprvoice/releases/download/v${{ steps.version.outputs.VERSION }}/hyprvoice-linux-x86_64 wget https://github.com/leonardotrapani/hyprvoice/releases/download/${{ github.ref_name }}/hyprvoice-linux-x86_64
chmod +x hyprvoice-linux-x86_64 chmod +x hyprvoice-linux-x86_64
mv hyprvoice-linux-x86_64 ~/.local/bin/hyprvoice mv hyprvoice-linux-x86_64 ~/.local/bin/hyprvoice
``` ```
@@ -90,7 +95,7 @@ jobs:
- PipeWire audio system - PipeWire audio system
- OpenAI API key for transcription - OpenAI API key for transcription
**Full Changelog**: https://github.com/leonardotrapani/hyprvoice/commits/v${{ steps.version.outputs.VERSION }} **Full Changelog**: https://github.com/leonardotrapani/hyprvoice/commits/${{ github.ref_name }}
files: | files: |
./hyprvoice-linux-x86_64 ./hyprvoice-linux-x86_64
./hyprvoice-linux-x86_64.sha256 ./hyprvoice-linux-x86_64.sha256