feat: Added unit-test job add postgresql service #71
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: [ '*' ] | |
paths: | |
- '**.go' | |
- '.github/workflows/**.yml' | |
pull_request: | |
branches: [ main ] | |
workflow_call: | |
# TODO: move CAM_GO_VERSION to github actions variables | |
env: | |
CAM_GO_VERSION: 1.22.0 | |
jobs: | |
lint: | |
name: lint files | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup GO | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.CAM_GO_VERSION }} | |
- name: Run golangci-lint | |
uses: golangci/golangci-lint-action@v4 | |
with: | |
version: latest | |
args: --timeout 5m | |
unit-test: | |
needs: [ lint ] | |
name: unit testing for go app | |
runs-on: ubuntu-latest | |
services: | |
postgres: | |
image: postgres:16 #TODO: migrate postgresql docker image version to github action variables | |
ports: | |
- 5432:5432 | |
env: | |
# TODO: retrieve database name and credentials from github actions variables | |
POSTGRES_DB: camgo | |
POSTGRES_USER: camgouser | |
POSTGRES_PASSWORD: campgop4s5W0rD | |
# options: > | |
# --health-cmd="pg_isready -U camgouser -d camgo" | |
# --health-interval=10s | |
# --health-timeout=5s | |
# --health-retries=5 | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup GO | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.CAM_GO_VERSION }} | |
- name: Wait for PostgreSQL to start | |
# TODO: retrieve database name and credentials from github actions variables for the script below | |
run: | | |
until pg_isready -h localhost -p 5432 -U camgouser -d camgo; do | |
sleep 1 | |
done | |
- name: Run GO tests | |
run: go test -v ./... | |
build: | |
needs: [ unit-test ] | |
name: build go app | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Setup go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: ${{ env.CAM_GO_VERSION }} | |
- name: Build go app | |
run: go build -o bin/app ./cmd/http-rest-api/... |