diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..dee5637 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,66 @@ +name: CI + +on: + push: + branches: + - main + - master + pull_request: + release: + types: + - created + - published + +jobs: + prerequisites: + name: Test and Lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Run Tests + uses: actions/setup-go@v5 + with: + go-version: '1.22.0' + - run: go test -race -coverprofile=coverage.txt -covermode=atomic ./... + + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v4 + with: + file: coverage.txt + fail_ci_if_error: true + token: ${{ secrets.CODECOV_TOKEN }} + + - name: Run Linter + uses: golangci/golangci-lint-action@v6 + with: + version: v1.60 + + docker_build: + name: Build Docker Image + runs-on: ubuntu-latest + needs: [prerequisites] + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push Docker images + uses: docker/build-push-action@v6 + with: + context: . + push: true + tags: | + ghcr.io/${{ github.repository }}:latest + ghcr.io/${{ github.repository }}:${{ github.sha }} + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml deleted file mode 100644 index efe55cc..0000000 --- a/.github/workflows/golangci-lint.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Golangci-lint -on: - push: - branches: - - main - - master - pull_request: - -permissions: - contents: read - # Optional: allow read access to pull request. Use with `only-new-issues` option. - # pull-requests: read - -jobs: - golangci: - name: lint - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 - with: - go-version: '1.22.0' - - - name: golangci-lint - uses: golangci/golangci-lint-action@v6 - with: - version: v1.60 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index fa1b9b1..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Test - -on: - push: - branches: - - main - - master - pull_request: - -jobs: - build: - name: test - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-go@v5 - with: - go-version: '1.22.0' - - - name: Run Tests - run: go test -race -coverprofile=coverage.txt -covermode=atomic ./... - - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v4 - with: - file: coverage.txt - fail_ci_if_error: true - token: ${{ secrets.CODECOV_TOKEN }} diff --git a/README.md b/README.md index 1300101..a93c1e0 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,6 @@ # kaelly-discord -[![Golangci-lint](https://github.com/kaellybot/kaelly-discord/actions/workflows/golangci-lint.yml/badge.svg)](https://github.com/kaellybot/kaelly-discord/actions/workflows/golangci-lint.yml) -[![Test](https://github.com/kaellybot/kaelly-discord/actions/workflows/test.yml/badge.svg)](https://github.com/kaellybot/kaelly-discord/actions/workflows/test.yml) +[![CI](https://github.com/kaellybot/kaelly-discord/actions/workflows/ci.yml/badge.svg)](https://github.com/kaellybot/kaelly-discord/actions/workflows/ci.yml) [![codecov](https://codecov.io/gh/kaellybot/kaelly-discord/branch/main/graph/badge.svg)](https://codecov.io/gh/kaellybot/kaelly-discord)