mirror of
https://github.com/acepanel/panel.git
synced 2026-02-04 11:27:17 +08:00
97 lines
2.2 KiB
YAML
97 lines
2.2 KiB
YAML
image: golang:bookworm
|
|
|
|
# 在每个任务执行前运行
|
|
before_script:
|
|
- mkdir -p .go
|
|
- go version
|
|
- go env -w GO111MODULE=on
|
|
- go env -w GOPROXY=https://goproxy.cn,direct
|
|
|
|
.go_cache:
|
|
variables:
|
|
GOPATH: $CI_PROJECT_DIR/.go
|
|
cache:
|
|
paths:
|
|
- .go/pkg/mod/
|
|
|
|
# 全局变量
|
|
variables:
|
|
OUTPUT_NAME: "panel"
|
|
GO111MODULE: "on"
|
|
GOPROXY: "https://goproxy.cn,direct"
|
|
|
|
stages:
|
|
- prepare
|
|
- build
|
|
- release
|
|
|
|
golangci_lint:
|
|
stage: prepare
|
|
image: golangci/golangci-lint:latest-alpine
|
|
extends: .go_cache
|
|
allow_failure: true
|
|
script:
|
|
- golangci-lint run --timeout 30m
|
|
|
|
unit_test:
|
|
stage: prepare
|
|
extends: .go_cache
|
|
allow_failure: true
|
|
script:
|
|
- rm -rf /etc/apt/sources.list
|
|
- rm -rf /etc/apt/sources.list.d/*
|
|
- wget -O /etc/apt/sources.list https://mirrors.ustc.edu.cn/repogen/conf/debian-http-4-bookworm
|
|
- apt-get update
|
|
- apt-get install -y curl jq
|
|
- cp panel-example.conf .env
|
|
- echo "DB_FILE=$(pwd)/database/panel.db" >> .env
|
|
- go run . artisan key:generate
|
|
- go run . artisan migrate
|
|
- go test -v -coverprofile=coverage.txt -covermode=atomic ./...
|
|
|
|
build:
|
|
stage: build
|
|
extends: .go_cache
|
|
script:
|
|
- go mod download
|
|
- CGO_ENABLED=0 go build -ldflags '-s -w --extldflags "-static -fpic"' -o $OUTPUT_NAME
|
|
artifacts:
|
|
name: "$OUTPUT_NAME"
|
|
paths:
|
|
- $OUTPUT_NAME
|
|
expire_in: 3 days
|
|
|
|
fetch:
|
|
stage: build
|
|
image: alpine:latest
|
|
before_script:
|
|
- sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
|
|
- apk add --no-cache curl jq unzip zip
|
|
script:
|
|
- curl -sSL "https://jihulab.com/api/v4/projects/haozi-team%2Fpanel-frontend/releases" | jq -r '.[0].assets.links[] | select(.name | contains("dist")) | .direct_asset_url' | xargs curl -L -o frontend.zip
|
|
- rm -rf public
|
|
- unzip frontend.zip
|
|
- mv dist public
|
|
artifacts:
|
|
name: "frontend"
|
|
paths:
|
|
- public
|
|
expire_in: 3 days
|
|
|
|
release:
|
|
stage: release
|
|
dependencies:
|
|
- build
|
|
- fetch
|
|
image:
|
|
name: goreleaser/goreleaser
|
|
entrypoint: [ '' ]
|
|
only:
|
|
- tags
|
|
variables:
|
|
# Disable shallow cloning so that goreleaser can diff between tags to
|
|
# generate a changelog.
|
|
GIT_DEPTH: 0
|
|
script:
|
|
- goreleaser release --clean
|