This repository has been archived by the owner on Mar 2, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy path.travis.yml
143 lines (121 loc) · 5.07 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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
stages:
- go-test
- test
- push-manifests
language: go
go:
- "1.14"
services:
- docker
git:
depth: 1
addons:
apt:
packages:
- jq
jobs:
include:
- stage: go-test
script:
- diff -u <(echo -n) <(gofmt -d .)
- go vet $(go list ./... | grep -v /vendor/)
- go test -v ./...
deploy: ~
- stage: push-manifests
install:
- curl https://get.docker.com | sh
- |
mkdir -p ~/.docker
echo '{ "experimental": "enabled" }' > ~/.docker/config.json
docker version
before_script:
- echo -n "$DOCKER_PASSWORD" | docker login --username "$DOCKER_USERNAME" --password-stdin
script:
- bash ci/docker-manifest.sh
- bash ci/docker-push-readme.sh "$TRAVIS_REPO_SLUG" ./docker-hub-readme.md
deploy: ~
if: repo == "hoshsadiq/m3ufilter" && tag IS present
env:
global:
- GO111MODULE=on
- CGO_ENABLED=0
- DOCKER_USERNAME=hoshsadiq
- secure: "kcpY/XlyxCEKmnXsreRXX2aij8/rezYdVprfFrEeSd8Z38HWxxzXVOsyU8hUIVzbRN9teNeaam+tkR5KluNdPNZHSca5LtlpHcO1RAMhooeJYktiVQUbzHkH7DJ0mh4BjxPmHro+R7mh9tLtQa6rSV87vKgR2GvAchJfhqoFAaG2SS5LPDfziO8JdpWXl7p8ULmG/rnJA/gS4WdXIle5S23Up9jt/0YDedw6nrqkjJeRyhDxdgAG8jP+T0/WsqzV3S0muwxNKuSOqnKAdvM8mEGP2l0GRVdS9ct0eXezH6Ox1tUz9amNZ8agN+4tQlgTlmrV0WwEjtf59gg3os+a6xzWD/9ZkqJCEmRtby+33/MjRt8bRsA3sBpeei6yV2OTbFlNDZf5eyMgyn9dBKzLX1LBbFIrbLB6zHqKG33BVMOql6XrqG/Kx+z6rQR216gNxL/pZ8PMCKpu8ZmKYsuAQp+55ixpr/RBVZTyPYiTXWOkg+qEPLVr/UBkDHumv/Tijkrj77fRvvJU3NETuaHC+KidqnL1pVJ+53zGdhQ4rYqtJyXqzSD+3tHTqE4H2b1XI1Um81E0bw0jzWegjYVg5BQpLkj/bopTl2grOwcpNt3RLChIXY8Up4xI/iRBo7U6M2IHtNFXQZ3XfQaU79sfHU29TutFO7EbfjRUkuBr/u0="
matrix:
- OS=linux ARCH=amd64
- OS=linux ARCH=386
- OS=linux ARCH=arm
- OS=linux ARCH=arm64
- OS=windows ARCH=amd64
- OS=windows ARCH=386
- OS=darwin ARCH=amd64
install:
- mkdir -p build
- go get github.com/mitchellh/gox
before_script:
- docker version
- |
if [[ "$OS" == "linux" ]]; then
mkdir -p ~/.docker
echo '{"experimental":true}' | sudo tee /etc/docker/daemon.json
echo '{"experimental":"enabled"}' > ~/.docker/config.json
if [[ "$ARCH" != "amd64" ]]; then
docker run --rm --privileged multiarch/qemu-user-static:register
fi
fi
script:
- export BUILD_DATE="$(date --iso-8601=seconds)"
- gox
-ldflags "
-X github.com/hoshsadiq/m3ufilter/config.Version=${TRAVIS_TAG:-nightly}
-X github.com/hoshsadiq/m3ufilter/config.GitCommit=${TRAVIS_COMMIT}
-X github.com/hoshsadiq/m3ufilter/config.BuildDate=${BUILD_DATE}
-X github.com/hoshsadiq/m3ufilter/config.GoVersion=${TRAVIS_GO_VERSION}
-X github.com/hoshsadiq/m3ufilter/config.Platform=${OS}/${ARCH}
"
-osarch "$OS/$ARCH"
-output "build/m3u-filter_{{.OS}}_{{.Arch}}"
github.com/$TRAVIS_REPO_SLUG/cmd/m3u-filter
- |
if [[ "$OS" == "linux" ]]; then
docker build --build-arg "ARCH=$ARCH" -t $TRAVIS_REPO_SLUG:${TRAVIS_TAG:-v0.0.0}-$ARCH .
# based on https://github.com/rmoriz/multiarch-test/blob/master/hooks/build
tempdir=$(mktemp -d -t docker-rearch.XXXXXXXX)
pushd $tempdir
echo "Set docker image architecture to $arch"
docker save "$TRAVIS_REPO_SLUG:${TRAVIS_TAG:-v0.0.0}-$ARCH" | tar xv -C $tempdir
docker rmi "$TRAVIS_REPO_SLUG:${TRAVIS_TAG:-v0.0.0}-$ARCH"
for filename in $tempdir/*/json; do
[ -e "$filename" ] || continue
newJson="$(jq --compact-output 'del(.architecture)' "$filename")"
echo "$newJson" > "$filename"
done
for filename in $tempdir/*.json; do
[ -e "$filename" ] || continue
! [ $filename = "$tempdir/manifest.json" ] || continue
newJson="$(jq --arg architecture "$ARCH" --compact-output '.architecture=$architecture' "$filename")"
echo "$newJson" > "$filename"
done
tar cv . | docker load
popd
docker inspect "$TRAVIS_REPO_SLUG:${TRAVIS_TAG:-v0.0.0}-$ARCH"
fi
before_deploy:
- ls -la build/
- echo -n "$DOCKER_PASSWORD" | docker login --username "$DOCKER_USERNAME" --password-stdin
deploy:
- provider: releases
skip_cleanup: true
file_glob: true
file: build/*
api_key:
secure: CnjUhD6PoSZ1qv+/OjdJ7c1QLyPX3X31hXRMkgcG4trP8W+QrDDmixYpcJbHdc/mNrFsiJ8/L2Qm8mLUnSaLIf/HbSHp0EzxKuDU2Rdb2MGRuDUqLyWSHGbY67otTXvEYVagoFmg8s6cEVincDMckD47uyw5L2NduwyNs0hg1TizVZyTnfAba2WsKSwHJpA01yVRTuIH92J38jFWUjqZkgDyMVYG7G7vb+mU3WNLyxBfzJVkLXzOWx0ELyxWi6X9BT/8Ib0Q/m3SUFan3XteQlMkeSEUPnbdmfL4FYlm/oXfqrigunRCp7edD1wgnrP3sHkKbl5NtHU5I6BHFaiT42M8Rr1Snp9wOzvCtjDb+1Ory84+L8iYcueXh0SXNvgCxkZBYsiFVsOEwz8dWpFqVW6R8ADY6x65VhEyBICbRL2kbRgpZyfTlb9nJKw6ZlWwmPDracxKexGD62BTSdlvL0s8C2Y/aJf90oYOAPvv0VuvzE4CUrPod7eKKR/saHhmzrYolLh4Hta552u0uHZNRTsLxVJXuW2QZfKodNJFQWsrDNADPd69Fg1m3USgkspClfb0uQkt5gpaqVE9x9BP0qGjzJ2P/WqNt36qTKLxbtIMcrdmIj7DalxgBeBy9c9OAljs6MjVdcbJWo0Sht7JE5jdM4lVhVjvSRBtgYRInIA=
on:
repo: hoshsadiq/m3ufilter
tags: true
- provider: script
script: bash ci/docker-push.sh
on:
repo: hoshsadiq/m3ufilter
tags: true
condition: $OS = "linux"