📝 Add docker workflow

This commit is contained in:
Nite07 2024-09-25 21:47:13 +08:00
parent 104352da40
commit 1d873c9cea
4 changed files with 83 additions and 1 deletions

53
.github/workflows/docker.yml vendored Normal file
View File

@ -0,0 +1,53 @@
name: docker
on:
push:
tags:
- "v*"
jobs:
prepare-and-build:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Docker meta
id: meta
uses: docker/metadata-action@v5
with:
images: |
nite07/pcgamedb
ghcr.io/nitezs/pcgamedb
tags: |
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
type=semver,pattern={{major}}
- 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: Login to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v5
with:
build-args: |
"version=${{ github.ref_name }}"
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

View File

@ -8,7 +8,8 @@ RUN go mod download
COPY . . COPY . .
RUN go install github.com/swaggo/swag/cmd/swag@latest RUN go install github.com/swaggo/swag/cmd/swag@latest
RUN swag init RUN swag init
RUN CGO_ENABLED=0 GOOS=linux go build -o pcgamedb . ARG version=dev
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w -X pcgamedb/constant.Version=${version}" -o pcgamedb .
FROM alpine:latest FROM alpine:latest
WORKDIR /app WORKDIR /app

23
cmd/version.go Normal file
View File

@ -0,0 +1,23 @@
package cmd
import (
"fmt"
"pcgamedb/constant"
"runtime"
"github.com/spf13/cobra"
)
var versionCmd = &cobra.Command{
Use: "version",
Long: "Get version of pcgamedb",
Short: "Get version of pcgamedb",
Run: func(cmd *cobra.Command, args []string) {
fmt.Printf("Version: %s\n", constant.Version)
fmt.Printf("Go: %s\n", runtime.Version())
},
}
func init() {
RootCmd.AddCommand(versionCmd)
}

5
constant/version.go Normal file
View File

@ -0,0 +1,5 @@
package constant
const (
Version = "dev"
)