diff --git a/.github/workflows/build.yml b/.github/workflows/ci.yml similarity index 53% rename from .github/workflows/build.yml rename to .github/workflows/ci.yml index db4464f..63dc3f7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/ci.yml @@ -1,26 +1,28 @@ -name: Build +name: CI on: + # NOTE: To comment SonarCloud coverage to GitHub Pull Request, we need to run the CI on pull requests. + pull_request: + types: [opened, synchronize, reopened] push: branches: - - '**' - pull_request: - types: [opened, reopened] - + - develop + - main jobs: - sonarcloud: - name: SonarCloud + test: + name: Test and upload coverage to SonarCloud runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - name: Checkout + uses: actions/checkout@v4.1.1 with: fetch-depth: 0 - name: Set up Go - uses: actions/setup-go@v2 + uses: actions/setup-go@v5.0.0 with: - go-version: 1.17 + go-version: 1.22.1 - - name: Test + - name: Test with coverage run: go test --tags=test -coverprofile=cover.out $(go list ./... | grep -v mxtransporter/cmd) - name: SonarCloud Scan diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000..cbe2a92 --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,45 @@ +name: Release +on: + push: + tags: + - '[0-9]+.[0-9]+.[0-9]+' + - '[0-9]+.[0-9]+.[0-9]+-rc[0-9]+' +jobs: + publish-container-image: + name: Publish Container Image to GitHub Container Registry + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4.1.1 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3.0.0 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3.2.0 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3.1.0 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Get metadata + id: get-metadata + uses: docker/metadata-action@v5.5.1 + with: + images: ghcr.io/${{ github.repository }} + flavor: | + latest=true + tags: | + type=ref event=push tag + + - name: Build and push + uses: docker/build-push-action@v5.3.0 + with: + context: . + file: ./Dockerfile + platforms: linux/amd64,linux/arm64 + push: true + tags: ${{ steps.get-metadata.outputs.tags }} diff --git a/Dockerfile b/Dockerfile index ba20844..c9272b0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ ## ## Build ## -FROM golang:latest as build +FROM golang:1.22.1-bookworm as build LABEL org.opencontainers.image.source="https://github.com/cam-inc/MxTransporter" @@ -24,7 +24,7 @@ RUN go install ./cmd/health.go ## ## Deploy ## -FROM alpine:latest +FROM alpine:3.19.1 WORKDIR /go/src diff --git a/Dockerfile.local b/Dockerfile.local index 73e4a90..127b205 100644 --- a/Dockerfile.local +++ b/Dockerfile.local @@ -1,4 +1,4 @@ -FROM golang:latest +FROM golang:1.22.1-bookworm WORKDIR /go/src diff --git a/docker-compose.mongo-replica.yml b/docker-compose.mongo-replica.yml index c18ca63..f5ee92a 100644 --- a/docker-compose.mongo-replica.yml +++ b/docker-compose.mongo-replica.yml @@ -1,7 +1,6 @@ version: '3.8' services: - mongodb-primary: image: mongo command: @@ -22,7 +21,7 @@ services: mongodb-secondary: image: mongo - command: + command: - --replSet - rs0 volumes: @@ -39,4 +38,3 @@ services: expose: - 27017 restart: always - diff --git a/docker-compose.mxt-local.yml b/docker-compose.mxt-local.yml index f984485..0bf70aa 100644 --- a/docker-compose.mxt-local.yml +++ b/docker-compose.mxt-local.yml @@ -1,7 +1,6 @@ version: '3.8' services: - mxt: build: context: '.' @@ -21,12 +20,12 @@ services: extends: file: docker-compose.mongo-replica.yml service: mongodb-primary - + mongodb-secondary: extends: file: docker-compose.mongo-replica.yml service: mongodb-secondary - + mongodb-arbiter: extends: file: docker-compose.mongo-replica.yml diff --git a/go.mod b/go.mod index 5f570d4..27fb4bc 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/cam-inc/mxtransporter -go 1.17 +go 1.22 require ( cloud.google.com/go/bigquery v1.18.0