-
Notifications
You must be signed in to change notification settings - Fork 4
/
.travis.yml
125 lines (113 loc) · 3.94 KB
/
.travis.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# set travis distribution
dist: focal
# no email notifications
notifications:
email: false
# enable apt module to update packages:
addons:
apt:
update: true
# go is the primary language
language: go
# go version to use
go:
- '1.15'
# enable docker for xgo and building docker containers
services:
- docker
# set explicit caches
cache:
directories:
- ./node_modules
- $HOME/gopath/pkg/mod
# explicit import path
go_import_path: github.com/chrisruffalo/gudgeon
before_install:
# export versions into a format compatible with make file
- export VERSION=${TRAVIS_TAG}
- export LONGVERSION=$VERSION
- export NUMBER=$(echo "$VERSION" | sed -r -e 's/([^0-9.-]*)?-?v?([0-9.]*)-?([^-]*)?-?([^-]*)?/\2/')
# if none of these worked or had values, unset so make can do it
- if [[ "" == "$VERSION" ]]; then unset VERSION; fi
- if [[ "" == "$LONGVERSION" ]]; then unset LONGVERSION; fi
- if [[ "" == "$NUMBER" ]]; then unset NUMBER; fi
# debug
- echo "VERSION=${VERSION}"
- echo "LONGVERSION=${LONGVERSION}"
- echo "NUMBER=${NUMBER}"
# make full use of cache.
before_script:
# ensure go modules are forced on
- export GO111MODULE=on
# announce versions (so that we can debug from here if something is wrong, really)
- go version
- make announce
# install dependencies
- sudo dpkg --add-architecture arm64
- sudo dpkg --add-architecture armhf
- sudo dpkg --add-architecture mips
- sudo apt-get install -y ruby ruby-dev build-essential rpm libsqlite3-dev gcc-multilib g++-multilib npm gcc-arm-linux-gnueabihf libc6-dev-armhf-cross gcc-aarch64-linux-gnu libc6-dev-arm64-cross libc6-dev-i386 linux-libc-dev:i386
- gem install --no-document fpm
# install node 13
- curl -sL https://deb.nodesource.com/setup_15.x | sudo -E bash -
- sudo apt-get install -y nodejs
# install newer version of npm
- sudo npm install -g npm
# prepare build environment
- travis_retry travis_wait make prepare
- travis_retry travis_wait make npm
# more debug of installed tools
- node_modules/.bin/webpack --version
- node_modules/.bin/webpack-cli --version
# the script needs to build the binaries to be successful
script:
- export CGO_ENABLED=1
- travis_retry make test
# get third-party resources for build
- make webpack
# build binaries
- make GOARCH=386 build
- make GOARCH=amd64 build
- make GOARCH=arm GOARM=5 build
- make GOARCH=arm GOARM=6 build
- make GOARCH=arm GOARM=7 build
- make GOARCH=arm64 build
- make GOARCH=mips GOMIPS=softfloat build
- make GOARCH=mipsle GOMIPS=softfloat build
# cross-compile for arm (disable until xgo support/cc support is available)
#- travis_retry travis_wait make buildxgo
before_deploy:
# x86 packages
- OS_BIN_ARCH=amd64 OS_ARCH=x86_64 make rpm
- OS_BIN_ARCH=386 OS_ARCH=i686 make rpm
- OS_BIN_ARCH=amd64 OS_ARCH=x86_64 make deb
- OS_BIN_ARCH=386 OS_ARCH=i386 make deb
# arm packages
- BINARY_TARGET=gudgeon-linux-arm5 OS_ARCH=arm5 make rpm
- BINARY_TARGET=gudgeon-linux-arm5 OS_ARCH=arm5 make deb
- BINARY_TARGET=gudgeon-linux-arm6 OS_ARCH=arm6 make rpm
- BINARY_TARGET=gudgeon-linux-arm6 OS_ARCH=arm6 make deb
- BINARY_TARGET=gudgeon-linux-arm7 OS_ARCH=arm7 make rpm
- BINARY_TARGET=gudgeon-linux-arm7 OS_ARCH=arm7 make deb
- BINARY_TARGET=gudgeon-linux-arm64 OS_ARCH=arm64 make rpm
- BINARY_TARGET=gudgeon-linux-arm64 OS_ARCH=arm64 make deb
# mips packages
- BINARY_TARGET=gudgeon-linux-mips OS_ARCH=mips make tar
- BINARY_TARGET=gudgeon-linux-mipsle OS_ARCH=mipsle make tar
# make docker build(s)
- BINARY_TARGET=gudgeon-linux-amd64 make docker
# push build(s) to docker cloud
- docker login --username="$DOCKER_USERNAME" --password="$DOCKER_PASSWORD"
- make dockerpush
- DOCKER_TAG=latest make dockerpush
# hash resources for greater confidence in distribution on github
- make hash
deploy:
provider: releases
api_key: "$GITHUB_OAUTH_TOKEN"
file_glob: true
file: build/gudgeon*
cleanup: false
overwrite: true
on:
tags: true