diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..d2e200b --- /dev/null +++ b/.drone.yml @@ -0,0 +1,118 @@ +--- +kind: pipeline +type: docker +name: cleanup-before + +steps: + - name: clean + image: alpine + commands: + - rm -rf /build/* + volumes: + - name: build + path: /build + when: + event: tag + +volumes: + - name: build + host: + path: /tmp/go-aptproxy/build + +--- +kind: pipeline +type: docker +name: default-linux-amd64 + +steps: + - name: build + image: golang + commands: + - ./ci-build.sh build + environment: + GOOS: linux + GOARCH: amd64 + volumes: + - name: build + path: /build + +volumes: + - name: build + host: + path: /tmp/go-aptproxy/build + +depends_on: + - cleanup-before + +--- +kind: pipeline +type: docker +name: gitea-release + +steps: + - name: move + image: alpine + commands: + - mv build/* ./ + volumes: + - name: build + path: /drone/src/build + when: + event: tag + - name: release + image: plugins/gitea-release + settings: + base_url: https://git.paulbsd.com + api_key: + from_secret: gitea_token + files: "*.tar.gz" + checksum: + - sha256 + - sha512 + title: VERSION + volumes: + - name: build + path: /drone/src/build + when: + event: tag + - name: ls + image: alpine + commands: + - find . + volumes: + - name: build + path: /drone/src/build + when: + event: tag + +volumes: + - name: build + host: + path: /tmp/go-aptproxy/build + +depends_on: + - default-linux-amd64 + +--- +kind: pipeline +type: docker +name: cleanup-after + +steps: + - name: clean + image: alpine + commands: + - rm -rf /build/* + volumes: + - name: build + path: /build + when: + event: tag + +volumes: + - name: build + host: + path: /tmp/go-aptproxy/build + +depends_on: + - gitea-release diff --git a/ci-build.sh b/ci-build.sh new file mode 100755 index 0000000..bd103d9 --- /dev/null +++ b/ci-build.sh @@ -0,0 +1,67 @@ +#!/bin/bash + +set -e + +PROJECTNAME="go-aptproxy" +RELEASENAME=${PROJECTNAME} +VERSION="0" + +GOOPTIONS="-mod=vendor" +SRCFILES=cmd/${PROJECTNAME}/*.go + +build() { + echo "Begin of build" + if [[ ! -z ${DRONE_TAG} ]] + then + echo "Drone tag set, let's do a release" + VERSION=${DRONE_TAG} + echo "${PROJECTNAME} ${VERSION}" > /build/VERSION + elif [[ ! -z ${DRONE_COMMIT} ]] + then + echo "Drone not set, let's only do a build" + VERSION=${DRONE_COMMIT} + fi + + if [[ ! -z ${VERSION} && ! -z ${GOOS} && ! -z ${GOARCH} ]] + then + echo "Let's set a release name" + RELEASENAME=${PROJECTNAME}-${VERSION}-${GOOS}-${GOARCH} + fi + + echo "Building project" + go generate ${SRCFILES} + go build -o ${PROJECTNAME} ${GOOPTIONS} ${SRCFILES} + + if [[ ! -z ${DRONE_TAG} ]] + then + echo "Let's make archives" + mkdir -p /build + tar -czvf /build/${RELEASENAME}.tar.gz ${PROJECTNAME} + fi + + echo "Removing binary file" + rm ${PROJECTNAME} + + echo "End of build" +} + +clean() { + rm -rf ${RELEASEDIR} + for i in ${PROJECTNAME} "cmd/${PROJECTNAME}/packrd" "cmd/${PROJECTNAME}/main-packr.go" + do + rm -rf ${i} + done +} + +case $1 in + "build") + build + ;; + "clean") + clean + ;; + *) + echo "No options choosen" + exit 1 + ;; +esac