Просмотр исходного кода

chore: build rpm packages on tags

Mustafa Arici 8 лет назад
Родитель
Сommit
3efcc7f1e6
5 измененных файлов с 85 добавлено и 3 удалено
  1. 30 3
      .travis.yml
  2. 4 0
      Makefile
  3. 32 0
      build.sh
  4. 1 0
      contrib/afterinstall.sh
  5. 18 0
      contrib/systemd/ovpmd.service

+ 30 - 3
.travis.yml

@@ -1,16 +1,43 @@
+sudo: required
+services:
+  - docker
+
+cache:
+    directories:
+     - $HOME/.cache
+
 language: go
 go:
   - 1.8
   - tip
-
+go_import_path: github.com/cad/ovpm
+env:
+    matrix:
+      - OS=el DIST=7
+      - OS=fedora DIST=25
 
 before_install:
   - sudo apt-get -qq update
   - sudo apt-get install -y openvpn
   - go get -t -v ./...
 
+after_success:
+  - bash <(curl -s https://codecov.io/bash)
+
+
 script:
   - go test -race -coverprofile=coverage.txt -covermode=atomic .
+  - make docker-build
 
-after_success:
-- bash <(curl -s https://codecov.io/bash)
+deploy:
+  # Deploy packages to PackageCloud
+  provider: packagecloud
+  username: ${PACKAGECLOUD_USER}
+  repository: ${PACKAGECLOUD_REPO}
+  token: ${PACKAGECLOUD_TOKEN}
+  dist: ${OS}/${DIST}
+  package_glob: rpm/*.{deb,rpm}
+  skip_cleanup: true
+  on:
+    tag: true
+    #branch: master

+ 4 - 0
Makefile

@@ -0,0 +1,4 @@
+.PHONY: build
+docker-build:
+	docker run --rm -i -t -v `pwd`:/fs/src/github.com/cad/ovpm -w /fs/src/github.com/cad/ovpm fedora ./build.sh
+	#docker run --rm -i -t -v `pwd`:/fs/src/github.com/cad/ovpm -w /fs/src/github.com/cad/ovpm fedora /bin/bash

+ 32 - 0
build.sh

@@ -0,0 +1,32 @@
+#!/bin/bash
+set -x
+
+# deps
+rpm --import https://mirror.go-repo.io/fedora/RPM-GPG-KEY-GO-REPO
+curl -s https://mirror.go-repo.io/fedora/go-repo.repo | tee /etc/yum.repos.d/go-repo.repo
+yum -y install golang ruby ruby-devel gcc make redhat-rpm-config git rpm-build rpmdevtools
+gem install fpm
+
+# prep
+export DIR="/fs/src/github.com/cad/ovpm"
+export UNITDIR="/usr/lib/systemd/system/"
+export GOPATH="/fs/"
+#export PATH=":$PATH"
+mkdir -p $DIR/build/
+mkdir -p $DIR/rpm/
+rm -rf $DIR/build/*
+rm -rf $DIR/rpm/*
+mkdir -p $DIR/build/usr/sbin/
+mkdir -p $DIR/build/usr/bin/
+mkdir -p $DIR/build/var/db/ovpm
+mkdir -p $DIR/build/$UNITDIR
+go get -v -t -d ./...
+
+#build
+#install
+GOOS=linux  go build  -o $DIR/build/usr/sbin/ovpmd ./cmd/ovpmd
+GOOS=linux  go build  -o $DIR/build/usr/bin/ovpm   ./cmd/ovpm
+cp $DIR/contrib/systemd/ovpmd.service $DIR/build/$UNITDIR
+
+#package
+fpm -s dir -t rpm -n ovpm --version `git name-rev --tags --name-only $(git rev-parse HEAD) | cut -d 'v' -f 2` --iteration 1 --depends openvpn --description "OVPM makes all aspects of OpenVPN server administration a breeze." --after-install $DIR/contrib/afterinstall.sh -p $DIR/rpm -C $DIR/build .

+ 1 - 0
contrib/afterinstall.sh

@@ -0,0 +1 @@
+systemctl daemon-reload

+ 18 - 0
contrib/systemd/ovpmd.service

@@ -0,0 +1,18 @@
+[Unit]
+Description=OpenVPn Manager
+Before=multi-user.target
+Before=shutdown.target
+After=local-fs.target
+After=remote-fs.target
+After=network-online.target
+After=systemd-journald-dev-log.socket
+Wants=network-online.target
+Conflicts=shutdown.target
+
+[Service]
+TimeoutSec=5min
+PIDFile=/var/run/ovpmd.pid
+ExecStart=/sbin/ovpmd
+
+[Install]
+WantedBy=multi-user.target