Skip to content

woodpecker-kit/woodpecker-tools

Repository files navigation

ci

go mod version GoDoc goreportcard

GitHub license codecov GitHub latest SemVer tag) GitHub release)

for what

  • this project used to github golang lib project

Contributing

Contributor Covenant GitHub contributors

We welcome community contributions to this project.

Please read Contributor Guide for more information on how to get started.

请阅读有关 贡献者指南 以获取更多如何入门的信息

depends

in go mod project

# before above global settings
# test version info
$ git ls-remote -q https://github.com/woodpecker-kit/woodpecker-tools.git

# test depends see full version
$ go list -mod readonly -v -m -versions github.com/woodpecker-kit/woodpecker-tools
# or use last version add go.mod by script
$ echo "go mod edit -require=$(go list -mod=readonly -m -versions github.com/woodpecker-kit/woodpecker-tools | awk '{print $1 "@" $NF}')"
$ echo "go mod vendor"

Features

  • wd_log package support debug at line number and gid
  • wd_flag package is flag for woodpecker plugin
    • wd_flag.SetTimeFormat(format string) will change time format like 2006-01-02 15:04:05, must before wd_urfave_cli_v2.UrfaveCliBindInfo()
  • wd_info.WoodpeckerInfo is plugin most use env args from woodpecker-ci/woodpecker
  • wd_info.CiSystemVersionMinimumSupport and wd_info.CiSystemVersionConstraint can check plugin support ci system version
  • wd_urfave_cli_v2.WoodpeckerUrfaveCliFlags() bind cli as github.com/urfave/cli/v2
  • wd_info.WoodpeckerInfoSupportVersion support version begin 2.0.0
  • env_mock.MockEnvByStruct support struct tag mock_env_key or mock_env_default for unit test of plugin
    • 1.19.+ add wd_mock.Fast*() method for fast mock
    • wd_mock.FastWorkSpace for fast mock workspace
    • wd_mock.FastCurrentStatus for fast mock current status most use wd_info.BuildStatusSuccess or wd_info.BuildStatusFailure
    • wd_mock.FastTag for fast mock event tag
    • wd_mock.FastPullRequest for fast mock event pull_request
    • wd_mock.FastPullRequestClose for fast mock event pull_request_closed
    • wd_mock.FastPushCommitBranch for fast mock event push commit branch
  • env_transfer.AddOrCoverEnvByKey env_transfer.RemoveEnvByKey and env_transfer.SaveEnv2File for transfer env between steps
    • please add .env.woodpecker_transfer.local at git ignore, to use env_transfer.DefaultWriterFileName to transfer env
    • env_transfer.AddOrCoverEnvByKey or env_transfer.RemoveEnvByKey will append env_transfer.PrefixTransfer and upper case at runner env
    • load env can use env_transfer.OverloadEnvFromFile, most use file name as env_transfer.DefaultWriterFileName
  • wd_steps_transfer.Out and wd_steps_transfer.In for transfer data between steps with same workflow
    • please add .woodpecker_kit.steps.transfer at git ignore, to use wd_steps_transfer.DefaultWriterFileName to transfer data
  • env_kit package use github.com/sinlov-go/unittest-kit
    • env_kit.FetchOsEnv* and env_kit.SetEnv* for env get or set
    • env_kit.FindAllEnv4Print, env_kit.FindAllEnvByPrefix, env_kit.FindAllEnv4PrintAsSortJust for find print env string
  • wd_template for support Handlebars.js for golang
    • use wd_template.RegisterSettings(DefaultFunctions) once to register default functions then use
  • wd_short_info.ParseWoodpeckerInfo2Short can parse wd_info.WoodpeckerInfo to wd_short_info.WoodpeckerInfoShot (v1.18+) for template more clear
  • code check
    • full check by golang version
    • full check for docker build

env

  • minimum go version: go 1.19
  • change go 1.19, ^1.19, 1.19.12-bullseye, 1.19.12 to new go version

libs

lib version
https://github.com/stretchr/testify v1.8.4
https://github.com/sebdah/goldie v2.5.3

usage

wd_info.WoodpeckerInfo

env_mock.MockEnvByStruct

dev

# It needs to be executed after the first use or update of dependencies.
$ make init dep
  • test code
$ make test testBenchmark

add main.go file and run

# run at env dev use cmd/woodpecker-tools/main.go
$ make dev
  • ci to fast check
# check style at local
$ make style

# run ci at local
$ make ci

docker

# then test build as test/Dockerfile
$ make dockerTestRestartLatest
# clean test build
$ make dockerTestPruneLatest

# more info see
$ make helpDocker