Простой доступ к проектам travis ci для Go

Go

В предыдущей статье упоминалось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

Затем добавьте в проект значок состояния сборки. возьми

在这里插入图片描述
在这里插入图片描述
Таким образом, каждый раз, когда вы нажимаете на удаленное устройство, CI будет запускаться для автоматического выполнения модульных тестов.

релиз 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. Как видите, наш автоматический выпуск сборки прошел успешно.

在这里插入图片描述