Skip to content

feat: Configure Go linting (#11) #23

feat: Configure Go linting (#11)

feat: Configure Go linting (#11) #23

Workflow file for this run

name: ci
on: push
# https://github.com/golangci/golangci-lint-action?tab=readme-ov-file#comments-and-annotations
permissions:
contents: read
pull-requests: read
checks: write
jobs:
# https://github.com/golangci/golangci-lint-action?tab=readme-ov-file#how-to-use
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v4
with:
go-version: '1.21'
cache: false
- name: golangci-lint
uses: golangci/golangci-lint-action@v3
with:
version: v1.54
args: --timeout=10m
# https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v4
with:
go-version: '1.21'
- run: go mod download
- run: make test
- run: make build
# https://docs.docker.com/build/ci/github-actions/multi-platform/
build:
# Do not build Docker images for forked repositories since Docker Hub secrets are not available:
# https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions#using-secrets-in-a-workflow
if: ${{ ! github.event.pull_request.head.repo.fork }}
# Make sure the tests have passed before building
needs:
- lint
- test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v5
# https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable
env:
# https://github.com/github/docs/issues/15319#issuecomment-1662257301
BRANCH: ${{ github.event.pull_request && github.head_ref || github.ref_name }}
with:
context: .
platforms: linux/amd64
push: true
tags: ${{ secrets.DOCKERHUB_USERNAME }}/cost-manager:${{ env.BRANCH == 'main' && 'latest' || env.BRANCH }}
# https://docs.docker.com/build/ci/github-actions/cache/#registry-cache
cache-from: type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/cost-manager:buildcache
cache-to: type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/cost-manager:buildcache,mode=max