feat: add docker build

This commit is contained in:
Kevin Franklin Kim 2025-09-18 23:20:40 +02:00
parent b41cebcea3
commit 401407617a
No known key found for this signature in database
5 changed files with 124 additions and 21 deletions

2
.dockerignore Normal file
View File

@ -0,0 +1,2 @@
gotsrpc
dist

View File

@ -6,32 +6,40 @@ on:
- v*.*.*
workflow_dispatch:
env:
GOFLAGS: -mod=readonly
GOPROXY: https://proxy.golang.org
permissions:
contents: write
jobs:
goreleaser:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
with:
fetch-depth: 0
- uses: actions/setup-go@v5
- uses: jdx/mise-action@v3
- uses: actions/setup-go@v6
with:
check-latest: true
go-version-file: go.mod
- uses: docker/setup-qemu-action@v3
- uses: docker/setup-buildx-action@v3
- id: app_token
uses: tibdex/github-app-token@v2
with:
app_id: ${{ secrets.TOKEN_APP_ID }}
private_key: ${{ secrets.TOKEN_APP_PRIVATE_KEY }}
- name: Login to docker.io
run: docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_TOKEN }}
- uses: goreleaser/goreleaser-action@v6
with:
version: latest
version: '~> v2'
args: release --clean
env:
GITHUB_TOKEN: ${{ steps.app_token.outputs.token }}

6
.gitignore vendored
View File

@ -17,6 +17,9 @@ tmp/
## Editorconfig
!.editorconfig
## Docker
!.dockerignore
## Husky
!.husky/
!.husky.yaml
@ -32,3 +35,6 @@ tmp/
/go.work.sum
!.golangci.yaml
!.goreleaser.yaml
## Mise
!.mise.toml

View File

@ -1,10 +1,20 @@
version: 2
project_name: gotsrpc
builds:
- binary: gotsrpc
main: ./cmd/gotsrpc/gotsrpc.go
env:
- CGO_ENABLED=0
flags:
- -trimpath
- -tags=safe
ldflags:
- -s -w
- -X cmd/gotsrpc/gotsrpc.version={{.Version}}
- -X cmd/gotsrpc/gotsrpc.commitHash={{.FullCommit}}
- -X cmd/gotsrpc/gotsrpc.buildTimestamp={{.Timestamp}}
goos:
- windows
- darwin
@ -12,22 +22,16 @@ builds:
goarch:
- amd64
- arm64
goarm:
- 7
flags:
- -trimpath
ldflags:
- -s -w -X cmd/gotsrpc/gotsrpc.version={{.Version}}
archives:
- formats: [ tar.gz ]
format_overrides:
- goos: windows
formats: [ zip ]
release:
prerelease: auto
archives:
- format: tar.gz
format_overrides:
- goos: windows
format: zip
changelog:
use: github-native
@ -35,6 +39,77 @@ brews:
- repository:
owner: foomo
name: homebrew-tap
caveats: "gotsrpc gotsrpc.yml"
caveats: "gotsrpc"
homepage: "https://github.com/foomo/gotsrpc"
description: "CLI utility to generate go and typescript RPC calls easily"
description: "CLI utility to generate go and typescript RPC calls easily"
dockers:
- use: buildx
goos: linux
goarch: amd64
dockerfile: Dockerfile
image_templates:
- '{{ if eq .Prerelease "" }}foomo/gotsrpc:latest-amd64{{ end }}'
- 'foomo/gotsrpc:{{ .Version }}-amd64'
- '{{ if eq .Prerelease "" }}foomo/gotsrpc:{{ .Major }}-amd64{{ end }}'
- '{{ if eq .Prerelease "" }}foomo/gotsrpc:{{ .Major }}.{{ .Minor }}-amd64{{ end }}'
build_flag_templates:
- '--pull'
# https://github.com/opencontainers/image-spec/blob/main/annotations.md#pre-defined-annotation-keys
- '--label=org.opencontainers.image.title={{.ProjectName}}'
- '--label=org.opencontainers.image.description=CLI utility to generate go and typescript RPC calls easily'
- '--label=org.opencontainers.image.source={{.GitURL}}'
- '--label=org.opencontainers.image.url={{.GitURL}}'
- '--label=org.opencontainers.image.documentation={{.GitURL}}'
- '--label=org.opencontainers.image.created={{.Date}}'
- '--label=org.opencontainers.image.revision={{.FullCommit}}'
- '--label=org.opencontainers.image.version={{.Version}}'
- '--platform=linux/amd64'
- use: buildx
goos: linux
goarch: arm64
dockerfile: Dockerfile
image_templates:
- '{{ if eq .Prerelease "" }}foomo/gotsrpc:latest-arm64{{ end }}'
- 'foomo/gotsrpc:{{ .Version }}-arm64'
- '{{ if eq .Prerelease "" }}foomo/gotsrpc:{{ .Major }}-arm64{{ end }}'
- '{{ if eq .Prerelease "" }}foomo/gotsrpc:{{ .Major }}.{{ .Minor }}-arm64{{ end }}'
build_flag_templates:
- '--pull'
# https://github.com/opencontainers/image-spec/blob/main/annotations.md#pre-defined-annotation-keys
- '--label=org.opencontainers.image.title={{.ProjectName}}'
- '--label=org.opencontainers.image.description=Project Oriented SHELL'
- '--label=org.opencontainers.image.source={{.GitURL}}'
- '--label=org.opencontainers.image.url={{.GitURL}}'
- '--label=org.opencontainers.image.documentation={{.GitURL}}'
- '--label=org.opencontainers.image.created={{.Date}}'
- '--label=org.opencontainers.image.revision={{.FullCommit}}'
- '--label=org.opencontainers.image.version={{.Version}}'
- '--platform=linux/arm64'
docker_manifests:
# basic
- name_template: 'foomo/gotsrpc:latest'
image_templates:
- 'foomo/gotsrpc:latest-amd64'
- 'foomo/gotsrpc:latest-arm64'
skip_push: auto
- name_template: 'foomo/gotsrpc:{{ .Version }}'
image_templates:
- 'foomo/gotsrpc:{{ .Version }}-amd64'
- 'foomo/gotsrpc:{{ .Version }}-arm64'
skip_push: auto
- name_template: 'foomo/gotsrpc:{{ .Major }}'
image_templates:
- 'foomo/gotsrpc:{{ .Major }}-amd64'
- 'foomo/gotsrpc:{{ .Major }}-arm64'
skip_push: auto
- name_template: 'foomo/gotsrpc:{{ .Major }}.{{ .Minor }}'
image_templates:
- 'foomo/gotsrpc:{{ .Major }}.{{ .Minor }}-amd64'
- 'foomo/gotsrpc:{{ .Major }}.{{ .Minor }}-arm64'
skip_push: auto

12
Dockerfile Normal file
View File

@ -0,0 +1,12 @@
FROM alpine:latest
RUN apk --no-cache add ca-certificates
RUN adduser -D -u 1001 -g 1001 gotsrpc
COPY gotsrpc /usr/bin/
USER gotsrpc
WORKDIR /home/gotsrpc
ENTRYPOINT ["gotsrpc"]