Skip to content

Commit

Permalink
chore(build): Setup github actions.
Browse files Browse the repository at this point in the history
Signed-off-by: qwqcode <[email protected]>
  • Loading branch information
qwqcode committed Apr 24, 2022
1 parent 1fb72b1 commit e307e2a
Show file tree
Hide file tree
Showing 7 changed files with 206 additions and 5 deletions.
43 changes: 43 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Release Build

on:
push:
tags:
- v*

jobs:
release:
runs-on: ubuntu-latest

steps:
- name: checkout code
uses: actions/checkout@v2
- run: git fetch --prune --unshallow --tags -f

# docker `golang-cross` image cache
# `cache-go-cross-v1-18-1`
- run: mkdir -p ~/docker-cache
- name: docker image cache
id: cache-go-cross-v1-18-1
uses: actions/cache@v2
with:
path: ~/docker-cache
# Adjust key to meet your cache time requirements e.g.
# ${{ hashFiles(*) }} can be useful here to invalidate
# cache on file changes
key: cache-go-cross-v1-18-1

- if: steps.cache-go-cross-v1-18-1.outputs.cache-hit != 'true'
run: |
docker pull ghcr.io/goreleaser/goreleaser-cross:v1.18.1
docker save -o ~/docker-cache/golang-cross.tar ghcr.io/goreleaser/goreleaser-cross:v1.18.1
- if: steps.cache-go-cross-v1-18-1.outputs.cache-hit == 'true'
run: docker load -i ~/docker-cache/golang-cross.tar

# build
- name: setup release environment
run: |-
echo 'GITHUB_TOKEN=${{secrets.GORELEASER_ACCESS_TOKEN}}' > .release-env
- name: build and release publish
run: make release
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@

.history

artalk-go.yml
config.yml
.release-env

Expand Down
131 changes: 131 additions & 0 deletions .goreleaser.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
project_name: artransfer

env:
- GO111MODULE=on
- CGO_ENABLED=1

# build multi-platform
builds:
## Amd 64

# Linux (amd_64)
- id: linux-amd64
goos:
- linux
goarch:
- amd64
env:
- CC=gcc
- CXX=g++
binary: "{{.ProjectName}}"
main: ./main.go
ldflags: &common_ldflags |
-X github.com/ArtalkJS/Artransfer-CLI/lib.Version={{.Version}}
-X github.com/ArtalkJS/Artransfer-CLI/lib.CommitHash={{ .ShortCommit }}
-s -w

# Windows (amd_64)
- id: windows-amd64
goos:
- windows
goarch:
- amd64
env:
- CC=x86_64-w64-mingw32-gcc
- CXX=x86_64-w64-mingw32-g++
binary: "{{.ProjectName}}"
main: ./main.go
ldflags: *common_ldflags

# Darwin (amd_64)
- id: darwin-amd64
goos:
- darwin
goarch:
- amd64
env:
- CC=o64-clang
- CXX=o64-clang++
binary: "{{.ProjectName}}"
main: ./main.go
ldflags: *common_ldflags

## Arm

# Linux (arm_v7)
- id: linux-armhf
goos:
- linux
goarch:
- arm
goarm:
- 7
env:
- CC=arm-linux-gnueabihf-gcc
- CXX=arm-linux-gnueabihf-g++
binary: "{{.ProjectName}}"
main: ./main.go
ldflags: *common_ldflags

# Linux (arm_64)
- id: linux-arm64
goos:
- linux
goarch:
- arm64
env:
- CC=aarch64-linux-gnu-gcc
- CXX=aarch64-linux-gnu-g++
binary: "{{.ProjectName}}"
main: ./main.go
ldflags: *common_ldflags

# Darwin (arm_64)
- id: darwin-arm64
goos:
- darwin
goarch:
- arm64
env:
- CC=oa64-clang
- CXX=oa64-clang++
binary: "{{.ProjectName}}"
main: ./main.go
ldflags: *common_ldflags

archives:
- id: artransfer
builds:
- linux-amd64
- darwin-amd64
- windows-amd64
- linux-armhf
- linux-arm64
- darwin-arm64
name_template: "{{.ProjectName}}_v{{.Version}}_{{.Os}}_{{.Arch}}{{.Arm}}"
format: tar.gz
format_overrides:
- goos: windows
format: zip
wrap_in_directory: false

checksum:
name_template: 'checksums.txt'

snapshot:
name_template: "{{.Version}}-SNAPSHOT-{{.ShortCommit}}"

changelog:
sort: asc
filters:
exclude:
- '^docs:'
- '^test:'
- '^chore:'

release:
github:
owner: ArtalkJS
name: Artransfer-CLI
prerelease: auto
draft: true
5 changes: 2 additions & 3 deletions db.go → lib/db.go
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
package main
package lib

import (
"errors"
"fmt"
"log"
"strings"

"github.com/ArtalkJS/Artransfer-CLI/lib"
"gorm.io/driver/mysql"
"gorm.io/driver/postgres"
"gorm.io/driver/sqlite"
Expand All @@ -15,7 +14,7 @@ import (
"gorm.io/gorm/schema"
)

func OpenDB(ctx *lib.Context) (*gorm.DB, error) {
func OpenDB(ctx *Context) (*gorm.DB, error) {
gormConfig := &gorm.Config{
NamingStrategy: schema.NamingStrategy{
TablePrefix: ctx.DBConf.TablePrefix,
Expand Down
7 changes: 7 additions & 0 deletions lib/version.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package lib

// 版本信息
var (
Version string
CommitHash string
)
2 changes: 1 addition & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ func main() {

PrintDBConf(ctx)

if db, err := OpenDB(ctx); err == nil {
if db, err := lib.OpenDB(ctx); err == nil {
ctx.DB = db
} else {
log.Fatal("数据库连接失败 ", err)
Expand Down
22 changes: 22 additions & 0 deletions makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
PACKAGE_NAME := github.com/ArtalkJS/Artransfer-CLI
VERSION ?= $(shell git describe --tags --abbrev=0)
COMMIT_HASH := $(shell git rev-parse --short HEAD)
GO_VERSION ?= 1.18.1

.PHONY: build
build:
Expand All @@ -8,3 +10,23 @@ build:
-X github.com/ArtalkJS/Artransfer-CLI/lib.CommitHash=${COMMIT_HASH}" \
-o bin/artransfer \
github.com/ArtalkJS/Artransfer-CLI

# https://github.com/goreleaser/goreleaser-cross-example
# https://github.com/goreleaser/goreleaser-cross
.PHONY: release
release:
@if [ ! -f ".release-env" ]; then \
echo "\033[91m.release-env is required for release\033[0m";\
exit 1;\
fi
docker run \
--rm \
--privileged \
-e CGO_ENABLED=1 \
--env-file .release-env \
-v /var/run/docker.sock:/var/run/docker.sock \
-v `pwd`:/go/src/$(PACKAGE_NAME) \
-v `pwd`/sysroot:/sysroot \
-w /go/src/$(PACKAGE_NAME) \
ghcr.io/goreleaser/goreleaser-cross:v${GO_VERSION} \
release --rm-dist --skip-validate

0 comments on commit e307e2a

Please sign in to comment.