diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..723ef36 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea \ No newline at end of file diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..578f056 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,32 @@ +sudo: false + +services: +- docker + +#env: +# global: +# # DOCKER_USER +# - secure: +# # DOCKER_PASS +# - secure: + +matrix: + fast_finish: true + +before_install: +- make init + +script: +- make verify + +before_deploy: +- make docker-build docker-images + +deploy: +- provider: script + skip_cleanup: true + script: + - make -e docker-login docker-push + on: + repo: VirtusLab/runscope-agent + tags: true diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..20362ed --- /dev/null +++ b/Dockerfile @@ -0,0 +1,19 @@ +FROM alpine:3.9 + +ENV ARCHIVE_NAME="runscope-radar.zip" \ + BIN_DIRECTORY="/home/agent/bin" \ + USER="agent" \ + AGENT_UID="472" \ + AGENT_GID="472" + +RUN set -x && apk --no-cache add --update ca-certificates && \ + addgroup -g "${AGENT_GID}" -S "${USER}" && \ + adduser -u "${AGENT_UID}" -S "${USER}" -G "${USER}" && \ + mkdir -p "${BIN_DIRECTORY}" && \ + wget "https://s3.amazonaws.com/runscope-downloads/runscope-radar/latest/linux-386/${ARCHIVE_NAME}" && \ + unzip "${ARCHIVE_NAME}" -d "${BIN_DIRECTORY}" && rm "${ARCHIVE_NAME}" && \ + chown -R "${USER}:${USER}" "${BIN_DIRECTORY}" + +USER "${USER}" +ENTRYPOINT [ "/home/agent/bin/runscope-radar" ] +CMD ["--version"] \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..d522512 --- /dev/null +++ b/Makefile @@ -0,0 +1,136 @@ +# Setup variables for the Makefile +NAME=runscope-agent +REPO=virtuslab/runscope-agent +DOCKER_REGISTRY=quay.io + +# Set POSIX sh for maximum interoperability +SHELL := /bin/sh +PATH := $(GOPATH)/bin:$(PATH) + +# Set an output prefix, which is the local directory if not specified +PREFIX?=$(shell pwd) + +# Populate version variables +# Add to compile time flags +VERSION := $(shell cat VERSION.txt) +GITCOMMIT := $(shell git rev-parse --short HEAD) +GITBRANCH := $(shell git rev-parse --abbrev-ref HEAD) +GITUNTRACKEDCHANGES := $(shell git status --porcelain --untracked-files=no) +GITIGNOREDBUTTRACKEDCHANGES := $(shell git ls-files -i --exclude-standard) +ifneq ($(GITUNTRACKEDCHANGES),) + GITCOMMIT := $(GITCOMMIT)-dirty +endif +ifneq ($(GITIGNOREDBUTTRACKEDCHANGES),) + GITCOMMIT := $(GITCOMMIT)-dirty +endif + +VERSION_TAG := $(VERSION)-$(GITCOMMIT) +LATEST_TAG := latest + +ARGS ?= $(EXTRA_ARGS) + +.DEFAULT_GOAL := help + +.PHONY: all +all: clean init verify docker-build ## Ensure deps, test, verify, docker build + @echo "+ $@" + +.PHONY: init +init: ## Initializes this Makefile dependencies: checkmake + @echo "+ $@" + go get -u github.com/mrtazz/checkmake + +.PHONY: verify +verify: checkmake ## Runs a checkmake + +.PHONY: clean +clean: ## Cleanup + @echo "+ $@" + +.PHONY: spring-clean +spring-clean: ## Cleanup git ignored files (interactive) + @echo "+ $@" + git clean -Xdi + +.PHONY: test +test: ## Runs the go tests + @echo "+ $@" + +.PHONY: docker-build +docker-build: ## Build the container + @echo "+ $@" + docker build -t $(REPO):$(GITCOMMIT) . + +.PHONY: docker-login +docker-login: ## Log in into the repository + @echo "+ $@" + @docker login -u="${DOCKER_USER}" -p="${DOCKER_PASS}" $(DOCKER_REGISTRY) + +.PHONY: docker-images +docker-images: ## List all local containers + @echo "+ $@" + @docker images + +.PHONY: docker-push +docker-push: docker-login ## Push the container + @echo "+ $@" + @docker tag $(REPO):$(GITCOMMIT) $(DOCKER_REGISTRY)/$(REPO):$(VERSION) + @docker tag $(REPO):$(GITCOMMIT) $(DOCKER_REGISTRY)/$(REPO):$(VERSION_TAG) + @docker tag $(REPO):$(GITCOMMIT) $(DOCKER_REGISTRY)/$(REPO):$(LATEST_TAG) + @docker push $(DOCKER_REGISTRY)/$(REPO):$(VERSION) + @docker push $(DOCKER_REGISTRY)/$(REPO):$(VERSION_TAG) + @docker push $(DOCKER_REGISTRY)/$(REPO):$(LATEST_TAG) + +.PHONY: docker-run +docker-run: docker-build ## Build and run the container + @echo "+ $@" + docker run -i -t -v $(PWD):/host \ + $(REPO):$(GITCOMMIT) --help + +.PHONY: bump-version +BUMP := patch +bump-version: ## Bump the version in the version file. Set BUMP to [ patch | major | minor ] + @echo "+ $@" + go get -u github.com/jessfraz/junk/sembump # update sembump tool + $(eval NEW_VERSION=$(shell sembump --kind $(BUMP) $(VERSION))) + @echo "Bumping VERSION.txt from $(VERSION) to $(NEW_VERSION)" + echo $(NEW_VERSION) > VERSION.txt + @echo "Updating version from $(VERSION) to $(NEW_VERSION) in README.md" + sed -i s/$(VERSION)/$(NEW_VERSION)/g README.md + git add VERSION.txt README.md + git commit -vseam "Bump version to $(NEW_VERSION)" + @echo "Run make tag to create and push the tag for new version $(NEW_VERSION)" + +.PHONY: tag +tag: ## Create a new git tag to prepare to build a release + @echo "+ $@" + git tag -s -a $(VERSION) -m "$(VERSION)" + git push origin $(VERSION) + +.PHONY: help +help: + @grep -Eh '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' + +.PHONY: checkmake +checkmake: ## Check this Makefile + @echo "+ $@" + @checkmake Makefile + +.PHONY: status +status: ## Shows git and dep status + @echo "+ $@" + @echo "Commit: $(GITCOMMIT), VERSION: $(VERSION)" + @echo +ifneq ($(GITUNTRACKEDCHANGES),) + @echo "Changed files:" + @git status --porcelain --untracked-files=no + @echo +endif +ifneq ($(GITIGNOREDBUTTRACKEDCHANGES),) + @echo "Ignored but tracked files:" + @git ls-files -i --exclude-standard + @echo +endif + @echo "Dependencies:" + @dep status + @echo diff --git a/README.md b/README.md new file mode 100644 index 0000000..33002dd --- /dev/null +++ b/README.md @@ -0,0 +1,54 @@ +# runscope-agent + +A Docker image for running the [runscope agent](https://www.runscope.com/docs/radar/agent). + +[![Version](https://img.shields.io/badge/version-v0.0.1-brightgreen.svg)](https://github.com/VirtusLab/runscope-agent/releases/tag/v0.0.1) +[![Build Status](https://travis-ci.org/VirtusLab/runscope-agent.svg?branch=master)](https://travis-ci.org/VirtusLab/runscope-agent) +[![Docker Repository on Quay](https://quay.io/repository/VirtusLab/runscope-agent/status "Docker Repository on Quay")](https://quay.io/repository/VirtusLab/runscope-agent) + +## Using the docker image + +```bash +docker run --rm quay.io/virtuslab/runscope-agent --help +Usage of radar: + --agent-id string + Agent uuid + --api-host string + Api host base url + --cafile string + CA certificate file + -f, --configfile string + Config file + --debug + Enable debugging web server + --disconnect-timeout string + Disconnect timeout (default "5") + --ignore-env-proxy + Ignore HTTP_PROXY and HTTPS_PROXY environment variables + -l, --logfile string + Logfile to write to + --name string + Agent name + --pidfile string + Pid file + --team-id string + team uuid + -w, --threads int + Number of worker threads (default 10) + --timeout int + Connection idle timeout (default 20) + -t, --token string + Runscope Auth Token + -v, --verbose + Log more information + --verify-ssl string + Verify SSL? (true/false) (default "true") + --version + Get version number + --web-host string + Web host base url (default "https://www.runscope.com") +``` +## Contribution + +Feel free to file [issues](https://github.com/VirtusLab/runscope-agent/issues) +or [pull requests](https://github.com/VirtusLab/runscope-agent/pulls). \ No newline at end of file diff --git a/VERSION.txt b/VERSION.txt new file mode 100644 index 0000000..95e94cd --- /dev/null +++ b/VERSION.txt @@ -0,0 +1 @@ +v0.0.1 \ No newline at end of file diff --git a/config.env b/config.env new file mode 100644 index 0000000..0bcbeb1 --- /dev/null +++ b/config.env @@ -0,0 +1,7 @@ +# Setup variables for the Makefile +NAME=runscope-agent +REPO=runscope-agent +DOCKER_REGISTRY=914904879356.dkr.ecr.eu-west-1.amazonaws.com +CLAIR_ADDR=http://api.clair.svc.cluster.local +AWS_ACCOUNT=914904879356 +AWS_REGION=eu-west-1 \ No newline at end of file