name: ci on: push: branches: [main] pull_request: branches: [main] permissions: contents: read jobs: codespell: name: check for spelling errors runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Annotate locations with typos uses: "https://github.com/codespell-project/codespell-problem-matcher@v1" - name: Codespell uses: "https://github.com/codespell-project/actions-codespell@v2" with: check_filenames: true check_hidden: true skip: ./.git codequality: name: code quality (lint/tests) runs-on: ubuntu-latest needs: - codespell if: ${{ success() }} steps: - name: checkout uses: actions/checkout@v4 - uses: https://code.forgejo.org/actions/setup-go@v5 name: install go with: go-version-file: './go.mod' - name: install dependencies run: make dep - name: download golangci-lint run: wget https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh - name: install golangci-lint run: sh ./install.sh v1.62.2 - name: lint run: ./bin/golangci-lint run compile: name: Make sure build does not fail runs-on: ubuntu-latest needs: - codespell - codequality if: ${{ success() }} steps: - uses: https://code.forgejo.org/actions/checkout@v4 name: checkout - name: install alsa devel run: apt update && apt install libasound2-dev -y - uses: https://code.forgejo.org/actions/setup-go@v5 name: install go with: go-version-file: './go.mod' - run: go version name: Go version - run: make build name: install dependencies and build bin files notify-fail: name: notify-fail runs-on: ubuntu-latest needs: - codespell - codequality - compile if: ${{ failure() }} env: SERVER_URL: ${{ secrets.GOTIFY_SERVER_URL }} TOKEN: ${{ secrets.GOTIFY_TOKEN }} steps: - name: gotify run: |- curl "${SERVER_URL}?token=${TOKEN}" \ -F "title='CI failed'" \ -F "message='Something failed at ${GITHUB_REPOSITORY}/${GITHUB_REF} for user ${GITHUB_ACTOR}'" \ -F "priority=7" &> /dev/null