name: "Go CI" on: push: branches: - master - 'dev-*' workflow_dispatch: pull_request: paths-ignore: - '**.yml' - '**.md' jobs: lint: name: Lint runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Set up Go 1.22 uses: actions/setup-go@v4 with: go-version: "1.22" - name: Lint uses: golangci/golangci-lint-action@v3 with: version: v1.54 skip-pkg-cache: true args: --out-format=colored-line-number --timeout=20m - name: Format run: make fmt check_changes check: name: Check runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Set up Go 1.22 uses: actions/setup-go@v4 with: go-version: "1.22" - name: Check Go modules run: make go_mod check_changes - name: Check translations run: make check-tr test-db: name: Test strategy: fail-fast: false matrix: os: ["ubuntu-latest"] go: ["1.22"] database: [postgres, mysql] include: - database: postgres image: postgres:16 port: 5432:5432 - database: mysql image: mysql:8 port: 3306:3306 runs-on: ${{ matrix.os }} services: database: image: ${{ matrix.image }} ports: - ${{ matrix.port }} env: POSTGRES_PASSWORD: opengist POSTGRES_DB: opengist_test MYSQL_ROOT_PASSWORD: opengist MYSQL_DATABASE: opengist_test options: >- --health-cmd ${{ matrix.database == 'postgres' && 'pg_isready' || '"mysqladmin ping"' }} --health-interval 10s --health-timeout 5s --health-retries 5 steps: - name: Checkout uses: actions/checkout@v3 - name: Set up Go ${{ matrix.go }} uses: actions/setup-go@v4 with: go-version: ${{ matrix.go }} - name: Run tests run: make test TEST_DB_TYPE=${{ matrix.database }} test: name: Test strategy: fail-fast: false matrix: os: ["ubuntu-latest", "macOS-latest", "windows-latest"] go: ["1.22"] database: ["sqlite"] runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@v3 - name: Set up Go ${{ matrix.go }} uses: actions/setup-go@v4 with: go-version: ${{ matrix.go }} - name: Run tests run: make test TEST_DB_TYPE=${{ matrix.database }} build: name: Build strategy: fail-fast: false matrix: os: ["ubuntu-latest", "macOS-latest", "windows-latest"] go: ["1.22"] runs-on: ${{ matrix.os }} steps: - name: Checkout uses: actions/checkout@v3 - name: Set up Go 1.22 uses: actions/setup-go@v4 with: go-version: ${{ matrix.go }} - name: Build shell: bash run: make