В предыдущей статье упоминалосьnpmПолучите доступ к travis для реализации метода автоматической публикации пакетов npm.В этой статье в основном описывается использование проектов Go, которые в основном делятся на выполнение модульного тестирования и упаковку сборки и доставку в релиз github. Справочник по основным операциям конкретного travisнадВот и все, эта статья охватывает только разные части
модульный тест
В этой статье не описывается, как писать модульные тесты Go.filenamify(библиотека для проверки путей к файлам) в качестве примера. былfilenamify.goнаписать тестовые файлыfilenamify_test.go. просто нужноtracisвыполнить вgo test -vВот и все.
# https://github.com/flytam/filenamify/blob/master/.travis.yml
language: go
go:
- 1.13.x
env:
- GO111MODULE=on
script: go test -v
Затем добавьте в проект значок состояния сборки. возьми
релиз github релиз
Иногда наши проекты Go необходимо упаковать в жизнеспособные файлы и выпустить непосредственно в выпуск github, чтобы другие могли их загрузить и выполнить. Вы также можете использоватьtravisосознать, с помощьюtravis releasesинструмент
1. Создайте новый.travis.ymlфайл, заполните базовую среду конфигурации Go
language: go
go:
- 1.13.x
env:
- GO111MODULE=on # 启用Go mod
install:
- go get -v
2. ПишитеMakefile
существуетnodejsВ проекте мы обычно настраиваемnpm run testкоманда выполняет тесты, а Go нетnpmа такжеpackage.jsonЭти две вещи должны быть написаны в это времяMakefileдобиться (можно поставитьMakefileрассматривается как функциональный тип вpackage.jsonчто-нибудь, просто используйтеmake xxxвыполнить),Makefileнаписать можетСсылаться на.
кblog-syncНапример, здесь мне нужно упаковать подходящий файл для всей платформы, поэтомуMakefileследующим образом
GOCMD=go
GOBUILD=$(GOCMD) build
BINARY_NAME=bin
NAME=blog-sync
#mac
build:
CGO_ENABLED=0 $(GOBUILD) -o $(BINARY_NAME)/$(NAME)-mac
# windows
build-linux:
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 $(GOBUILD) -o $(BINARY_NAME)/$(NAME)-linux
# linux
build-win:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 $(GOBUILD) -o $(BINARY_NAME)/$(NAME)-win.exe
# 全平台
build-all:
make build
make build-win
make build-linux
воплощать в жизньmake build-allдоступны наbinВ каталоге генерируются исполняемые файлы для 3-х платформ.
language: go
go:
- 1.13.x
env:
- GO111MODULE=on # 启用Go mod
install:
- go get -v
before_deploy: make build-all
deploy:
provider: releases
api_key: 自动生成的github key
file_glob: true
file: bin/*
skip_cleanup: true
on:
repo: flytam/blog-sync
tags: true
3. ИспользуйтеsetupНачальная конфигурация
# 已经安装travis cli
travis setup releases
# 按需填写,输入github账号密码,加密key,发布文件等
После простой настройки окончательная конфигурация выглядит следующим образом:releasesКонфигурация может относиться кДокументация
# https://github.com/flytam/blog-sync/blob/master/.travis.yml
language: go
go:
- 1.13.x
env:
- GO111MODULE=on # 启用Go mod
install:
- go get -v
before_deploy: make build-all # 发布前执行生成二进制文件的命令
deploy:
provider: releases
api_key:
secure: xxxx
# 使用glob匹配发布bin目录下的文件
file_glob: true
file: bin/*
skip_cleanup: true
on:
repo: flytam/blog-sync
# tag才触发发布
tags: true
4. Отпустите
Каждый раз, когда тег помещается в хранилище, он запускает автоматический выпуск исполняемого файла для выпуска github.
git tag 1.0.0
git push --tags
5. Как видите, наш автоматический выпуск сборки прошел успешно.