release-manager-micro

module
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 18, 2018 License: BSD-3-Clause

README

Release manager (development version)

Build Status License (3-Clause BSD) Go Report Card BCH compliance

This application generate version for your software (based on semver and gitflow).

Input: project id, major version, minor version, branch name

Output: semantic version http://semver.org/ (look like as v1.2.0-rc.7)

NOTICE: something does not work? Just remove all containers with consul agents

docker-compose rm -vf consul service.version.incremental service.semver service.project service.api

Changelog

Quick start (how to run and use)

  • Install docker and docker-compose

  • Clone sources

    git clone https://github.com/itcreator/release-manager-micro.git .
  • Run release manager
    ops/scripts/start.sh #or start_semver.sh or start_incremental.sh
    
    #waiting for the output: 2016/11/03 23:59:24 Serving release manager at http://[::]:80
  • Create new project
    curl -iX POST -H "Content-Type: application/release-manager.v1+json" http://127.0.0.1/projects -d '{"name":"MyProject", "description":"demo project"}'

Response:

    HTTP/1.1 201 Created
    Content-Type: application/release-manager.v1+json
    X-Error-Code: 
    Date: Fri, 04 Nov 2016 00:08:17 GMT
    Content-Length: 58
    
    {"description":"demo project","id":34,"name":"MyProject"}
  • Generate semantic version
    curl -iX POST -H "Content-Type: application/release-manager.v1+json" http://127.0.0.1/projects/1/version/semantic -d '{"major":1, "minor": 2, "branch": "release"}'

Response:

    HTTP/1.1 201 Created
    Content-Type: application/release-manager.v1+json
    Date: Fri, 04 Nov 2016 00:09:53 GMT
    Content-Length: 24
    
    {"version":"v1.2.0-rc"}
  • Generate incremental version
    curl -iX POST -H "Content-Type: application/release-manager.v1+json" http://127.0.0.1/increamental_version/test

Response:

    HTTP/1.1 201 Created
    Content-Type: application/release-manager.v1+json
    Date: Fri, 09 Dec 2016 12:15:24 GMT
    Content-Length: 14
    
    {"version":1}
  • Use version number v1.2.0-rc (for example as git tag or ad docker image tag

Development information

API Documentation apiDoc/api_doc.yml

    docker-compose up
    docker-compose exec service.api bash
    go run cmd/release-manager-server/main.go --host=0.0.0.0 --port=80
    curl -iX POST -H "Content-Type: application/release-manager.v1+json" http://127.0.0.1:9090/projects/1/version/semantic -d '{"major":1, "minor": 3, "branch": "release"}'
    curl -i http://127.0.0.1:9/projects
    curl -iX POST -H "Content-Type: application/release-manager.v1+json" http://127.0.0.1:9090/projects -d '{"name":"MyProject", "description":"demo project"}'
    curl -i http://127.0.0.1:9090/projects/5
    curl -iX PUT -H "Content-Type: application/release-manager.v1+json" http://127.0.0.1:9090/projects/5 -d '{"name":"Project 5!", "description":"demo project 5"}'

Shortcuts

    export PATH=./ops/shortcuts:$PATH
    go-project go run cmd/service/main.go
    go-api go run cmd/release-manager-server/main.go --host=0.0.0.0 --port=80

Add new agent: go to ops/consul/scripts/boot.sh and add line consul join service.*** Add new agent manually:

    docker-compose exec consul consul join service.api

Check consul cluster

    docker-compose exec consul consul members
Project service
    docker-compose exec service.project bash

    #server 
    go run main.go

Protobuf
    docker-compose exec service.project bash -c "protoc --go_out=plugins=micro:. proto/**/*.proto"
    # or
    protoc --go_out=plugins=micro:. proto/**/*.proto
    docker-compose run --rm protoc protoc --go_out=plugins=micro:src/semver proto/semver/*.proto
Swagger
    docker-compose run --rm go_swagger generate server -f /apiDoc/api_doc.yml
Serve API documentation
    docker-compose run --rm go_swagger serve --no-open --port=8070 /apiDoc/api_doyml

And open [http://127.0.0.1:8070/docs]

Or

docker-compose run --rm go_swagger serve --no-open --port=8070 --flavor=swagger /apiDoc/api_doc.yml

And open [http://petstore.swagger.io/?url=http%3A%2F%2Flocalhost%3A8070%2Fswagger.json]

DB
    docker-compose exec service.project.db psql -U releasemanager -d release_manager
Tests
    go test $(glide novendor) --cover
Docker containers ip
    docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

###TODO: +project - implement CRUD +Consul health check +go-swagger - return correct response and error messages +implement versioning +use gorp Implement build scripts Configure environment for CI and production Implement UI (Angular 2) add OpenID Connect Implement ACL folder/repo structure dashboard for micro services

Proto
- extend (inheritance)

Directories

Path Synopsis
src
api/proto/incremental
Package incremental is a generated protocol buffer package.
Package incremental is a generated protocol buffer package.
api/proto/project
Package project is a generated protocol buffer package.
Package project is a generated protocol buffer package.
api/proto/semver
Package semver is a generated protocol buffer package.
Package semver is a generated protocol buffer package.
api/restapi
Package restapi Release Manager This application generate version for your software.
Package restapi Release Manager This application generate version for your software.
incremental/proto/incremental
Package incremental is a generated protocol buffer package.
Package incremental is a generated protocol buffer package.
project/proto/project
Package project is a generated protocol buffer package.
Package project is a generated protocol buffer package.
semver/proto/semver
Package semver is a generated protocol buffer package.
Package semver is a generated protocol buffer package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL