Skip to content

Commit 2aef033

Browse files
committed
feat: enable semantic release
- remove unnecessary code
1 parent dfe290f commit 2aef033

File tree

7 files changed

+74
-84
lines changed

7 files changed

+74
-84
lines changed

.devcontainer/devcontainer.json

Lines changed: 0 additions & 46 deletions
This file was deleted.
Lines changed: 47 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,71 @@
11
name: Docker Release
22

33
on:
4-
# Trigger the workflow on the new 'v*' tag created
54
push:
6-
branches: [main, feature/*]
7-
tags:
8-
- "v*"
9-
workflow_dispatch:
5+
branches:
6+
- main
107

118
jobs:
12-
docker:
9+
build_and_release:
1310
runs-on: ubuntu-latest
11+
12+
outputs:
13+
# Whether a new release was published (true or false)
14+
new_release_published: ${{ steps.semantic.outputs.new_release_published }}
15+
# Version of the new release. (e.g. 1.3.0)
16+
new_release_version: ${{ steps.semantic.outputs.new_release_version }}
17+
# Major version of the new release. (e.g. 1)
18+
new_release_major_version: ${{ steps.semantic.outputs.new_release_major_version }}
19+
# Minor version of the new release. (e.g. 3)
20+
new_release_minor_version: ${{ steps.semantic.outputs.new_release_minor_version }}
21+
# Patch version of the new release. (e.g. 0)
22+
new_release_patch_version: ${{ steps.semantic.outputs.new_release_patch_version }}
23+
# The distribution channel on which the last release was initially made available (undefined for the default distribution channel).
24+
new_release_channel: ${{ steps.semantic.outputs.new_release_channel }}
25+
# The release notes for the new release.
26+
new_release_notes: ${{ steps.semantic.outputs.new_release_notes }}
27+
1428
steps:
1529
- uses: actions/checkout@v2
16-
1730
- uses: actions/setup-go@v2
1831
with:
1932
go-version: "1.16"
2033
- run: cd server && go test -v --race ./...
34+
- uses: cycjimmy/semantic-release-action@v2
35+
id: semantic
36+
with:
37+
semantic_version: 15.13.28
38+
env:
39+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2140

41+
docker:
42+
runs-on: ubuntu-latest
43+
44+
if: ${{ needs.build_and_release.new_release_published }}
45+
46+
needs:
47+
- build_and_release
48+
steps:
49+
- uses: actions/checkout@v2
2250
- name: Docker meta
2351
id: docker_meta
2452
uses: docker/metadata-action@v3
2553
with:
2654
images: ghcr.io/codingpot/pr12er
2755
tags: |
28-
type=semver,pattern={{version}}
29-
type=sha
56+
# <image>:1
57+
type=raw,value=${{ needs.build_and_release.outputs.new_release_major_version }}
58+
# <image>:1.2
59+
type=raw,value=${{ needs.build_and_release.outputs.new_release_major_version }}.${{ needs.build_and_release.outputs.new_release_minor_version }}
60+
# <image>:1.2.3
61+
type=raw,value=${{ needs.build_and_release.outputs.new_release_version }}
62+
# <image>:latest
63+
type=raw,value=latest
3064
3165
- name: Set up QEMU
3266
uses: docker/setup-qemu-action@v1
3367
with:
34-
platforms: linux/amd64
68+
platforms: all
3569

3670
- name: Set up Docker Buildx
3771
uses: docker/setup-buildx-action@v1
@@ -41,14 +75,14 @@ jobs:
4175
with:
4276
registry: ghcr.io
4377
username: ${{ github.repository_owner }}
44-
password: ${{ secrets.GHCR_IO_TOKEN }}
78+
password: ${{ secrets.GITHUB_TOKEN }}
4579

4680
- name: Build and push
4781
uses: docker/build-push-action@v2
4882
with:
4983
context: ./server
5084
file: ./server/deploy/Dockerfile
51-
platforms: linux/amd64
85+
platforms: linux/amd64,linux/arm64
5286
push: true
5387
tags: ${{ steps.docker_meta.outputs.tags }}
54-
labels: ${{ steps.docker_meta.outputs.labels }}
88+
labels: ${{ steps.docker_meta.outputs.labels }}

.gitignore

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
.idea
1+
.idea/
22
.DS_Store
3-
.vscode
4-
/client/test/**/*_test.mocks.dart
3+
.vscode/
4+
/client/test/**/*_test.mocks.dart
5+
.devcontainer/

.releaserc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"branches": [
3+
"main"
4+
],
5+
"plugins": [
6+
"@semantic-release/commit-analyzer",
7+
"@semantic-release/release-notes-generator",
8+
"@semantic-release/github",
9+
]
10+
}

server/cmd/server/main.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,7 @@ import (
1818
)
1919

2020
func main() {
21-
log.WithFields(log.Fields{
22-
"Nversion": env.Nversion,
23-
"ServicePort": env.ServicePort,
24-
}).Print("gRPC server is listening")
21+
log.WithField("ServicePort", env.ServicePort).Print("gRPC server is listening")
2522

2623
lis, err := net.Listen("tcp", fmt.Sprintf(":%s", env.ServicePort))
2724
if err != nil {

server/deploy/Dockerfile

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,22 @@
1-
FROM golang:1.16.4-alpine3.13 AS builder
1+
FROM golang:1.16-alpine AS builder
22

33
RUN apk --no-cache add ca-certificates && GRPC_HEALTH_PROBE_VERSION=v0.4.2 && \
44
wget -qO/bin/grpc_health_probe https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-amd64 && \
55
chmod +x /bin/grpc_health_probe
66

7-
ARG APP_VERSION
8-
97
RUN apk add upx
108

119
WORKDIR /src/
1210
COPY go.mod .
1311
COPY go.sum .
1412
RUN go mod download
1513
COPY . .
16-
RUN CGO_ENABLED=0 GOOS=linux go build -a -ldflags "-w -s -X 'github.com/codingpot/pr12er/server.pkg.env.Version=${APP_VERSION}'" -o service cmd/server/main.go
17-
RUN upx service
14+
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags "-w -s" -o server cmd/server/main.go
15+
RUN upx server
1816

1917
FROM gcr.io/distroless/static:nonroot
2018

21-
COPY --from=builder /src/service .
19+
COPY --from=builder /src/server .
2220
COPY --from=builder /bin/grpc_health_probe /bin/grpc_health_probe
2321

24-
ENTRYPOINT ["./service"]
22+
ENTRYPOINT ["./server"]

server/pkg/env/env.go

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,20 @@ package env
22

33
import (
44
"os"
5-
"strconv"
65
"strings"
76
)
87

98
var (
10-
Version = "dev" // nolint:revive
11-
Nversion = "pr12er-" + Version
12-
Debug, _ = strconv.ParseBool(getEnvVar("DEBUG", "false"))
13-
14-
ServicePort = getEnvVar("PR12ER_GRPC_PORT", "9000")
9+
// ServicePort is the main port.
10+
ServicePort = getEnvVar("PR12ER_GRPC_PORT", "9000")
11+
// PrometheusPort is the port for Prometheus metrics (/metrics).
1512
PrometheusPort = getEnvVar("PR12ER_PROMETHEUS_PORT", "9092")
1613
)
1714

1815
func getEnvVar(key, fallbackValue string) string {
19-
if val, ok := os.LookupEnv(key); ok {
20-
if val != "" {
21-
return strings.TrimSpace(val)
22-
}
16+
val := strings.TrimSpace(os.Getenv(key))
17+
if val == "" {
18+
return fallbackValue
2319
}
24-
return fallbackValue
20+
return val
2521
}

0 commit comments

Comments
 (0)