From 4794588afebf941e3f9c2414259e337afaff8f1f Mon Sep 17 00:00:00 2001 From: Steven Pescheteau Date: Mon, 18 Nov 2024 01:36:36 +0100 Subject: [PATCH] TEST: Docker build in Github action --- .github/workflows/ci.yml | 71 +++++++++++++++++++++++++++++ .github/workflows/golangci-lint.yml | 27 ----------- .github/workflows/test.yml | 28 ------------ README.md | 3 +- 4 files changed, 72 insertions(+), 57 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .github/workflows/golangci-lint.yml delete mode 100644 .github/workflows/test.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..ff82257 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,71 @@ +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: + - uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + + - name: Cache Docker layers + uses: actions/cache@v3 + with: + path: /tmp/.buildx-cache + key: ${{ runner.os }}-buildx-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-buildx- + + - name: Login to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and Push Docker Image + uses: docker/build-push-action@v5 + with: + context: . + push: true + tags: | + ghcr.io/${{ github.repository }}:latest + ghcr.io/${{ github.repository }}:${{ github.sha }} 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 7a70176..687c149 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,6 @@ # Kaelly-books -[![Golangci-lint](https://github.com/kaellybot/kaelly-books/actions/workflows/golangci-lint.yml/badge.svg)](https://github.com/kaellybot/kaelly-books/actions/workflows/golangci-lint.yml) -[![Test](https://github.com/kaellybot/kaelly-books/actions/workflows/test.yml/badge.svg)](https://github.com/kaellybot/kaelly-books/actions/workflows/test.yml) +[![CI](https://github.com/kaellybot/kaelly-books/actions/workflows/ci.yml/badge.svg)](https://github.com/kaellybot/kaelly-books/actions/workflows/ci.yml) [![codecov](https://codecov.io/gh/kaellybot/kaelly-books/branch/master/graph/badge.svg)](https://codecov.io/gh/kaellybot/kaelly-books) Application to query books, written in Go