fj/.gitea/workflows/ci.yml
2025-12-16 10:45:29 +01:00

88 lines
2.4 KiB
YAML

name: CI
on:
pull_request:
push:
branches: [ main ]
jobs:
lint:
runs-on: codeberg-small
steps:
- name: Checkout code
uses: https://github.com/actions/checkout@v4
- name: Set up Go
uses: https://github.com/actions/setup-go@v5
with:
go-version: '1.21'
cache: true
- name: Install golangci-lint
run: |
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/HEAD/install.sh | sh -s -- -b $(go env GOPATH)/bin v2.6.2
- name: Run golangci-lint
run: golangci-lint run --timeout 5m
build:
runs-on: codeberg-small
steps:
- name: Checkout code
uses: https://github.com/actions/checkout@v4
- name: Set up Go
uses: https://github.com/actions/setup-go@v5
with:
go-version: '1.21'
cache: true
- name: Build application
run: make build
test:
runs-on: codeberg-small
steps:
- name: Checkout code
uses: https://github.com/actions/checkout@v4
- name: Set up Go
uses: https://github.com/actions/setup-go@v5
with:
go-version: '1.21'
cache: true
- name: Run unit tests
run: go test -v -race ./...
functional:
runs-on: codeberg-small
if: github.ref == 'refs/heads/main' || github.event_name == 'pull_request'
needs: [build, test]
steps:
- name: Checkout code
uses: https://github.com/actions/checkout@v4
- name: Set up Go
uses: https://github.com/actions/setup-go@v5
with:
go-version: '1.21'
cache: true
- name: Build production binary
run: |
make build
echo "Binary built at: $(pwd)/bin/fgj"
- name: Run functional tests
if: vars.CODEBERG_TEST_OWNER != ''
run: go test -v -race -tags=functional ./tests/functional/...
env:
CODEBERG_TEST_TOKEN: ${{ secrets.CODEBERG_TEST_TOKEN }}
CODEBERG_TEST_OWNER: ${{ vars.CODEBERG_TEST_OWNER }}
CODEBERG_TEST_REPO: ${{ vars.CODEBERG_TEST_REPO }}
CODEBERG_TEST_HOSTNAME: ${{ vars.CODEBERG_TEST_HOSTNAME || 'codeberg.org' }}
- name: Skip functional tests
if: vars.CODEBERG_TEST_OWNER == ''
run: echo "Skipping functional tests - CODEBERG_TEST_OWNER not configured. See SETUP_FUNCTIONAL_TESTS.md for setup instructions."