krystal/kce-ccm

View on GitHub
.github/workflows/ci.yml

Summary

Maintainability
Test Coverage
---
name: CI
on: [push]

jobs:
  lint:
    name: Lint
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-go@v2
      with:
        go-version: 1.16
    - name: golangci-lint
      uses: golangci/golangci-lint-action@v2
      with:
        version: v1.39
        args: --timeout 5m0s
      env:
        VERBOSE: "true"
  unit-test:
    name: Unit Test
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-go@v2
      with:
        go-version: 1.16
    - uses: actions/cache@v2
      with:
        path: ~/go/pkg/mod
        key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
        restore-keys: |
          ${{ runner.os }}-go-
    - name: Run tests
      run: make test
      env:
        VERBOSE: "true"
  cov:
    name: Coverage
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-go@v2
        with:
          go-version: 1.16
      - uses: actions/cache@v2
        with:
          path: ~/go/pkg/mod
          key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
          restore-keys: |
            ${{ runner.os }}-go-
      - name: Publish coverage
        uses: paambaati/codeclimate-action@v2.7.4
        env:
          VERBOSE: "true"
          GOMAXPROCS: 4
          CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
        with:
          coverageCommand: make cov
          prefix: github.com/${{ github.repository }}
          coverageLocations: |
            ${{ github.workspace }}/coverage.out:gocov
  build-release:
    name: Build Release
    runs-on: ubuntu-latest
    if: contains(github.ref, 'refs/tags/')
    steps:
    - uses: actions/checkout@v2
    - name: Set up Docker Buildx
      uses: docker/setup-buildx-action@v1
    - name: Get the version
      id: get_version
      run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}
    - name: Login to GitHub Container Registry
      uses: docker/login-action@v1
      with:
        registry: ghcr.io
        username: ${{ github.repository_owner }}
        password: ${{ secrets.GITHUB_TOKEN }}
    - name: Build and push
      uses: docker/build-push-action@v2
      with:
        push: true
        context: .
        tags: |
          ghcr.io/krystal/kce-ccm:latest
          ghcr.io/krystal/kce-ccm:${{ steps.get_version.outputs.VERSION }}