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/fj" - name: Run functional tests 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' }}