Skip to content

Commit e63dc58

Browse files
committed
Adding some build and image pushing
1 parent 0ca228c commit e63dc58

3 files changed

Lines changed: 155 additions & 2 deletions

File tree

.circleci/config.yml

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
aliases:
2+
- &default-env
3+
GO111MODULE=on
4+
5+
- &working-dir
6+
/go/auto-docs
7+
- &workspace-persist
8+
root: /go/
9+
paths:
10+
- auto-docs
11+
- bin
12+
- pkg
13+
- src
14+
15+
version: 2
16+
jobs:
17+
build:
18+
environment: *default-env
19+
working_directory: *working-dir
20+
docker:
21+
- image: golang:1.12-stretch
22+
steps:
23+
- checkout
24+
- restore-cache:
25+
key: v1-deps-{{ checksum "go.sum" }}
26+
- checkout
27+
- run:
28+
name: Prep Local
29+
command: |
30+
go mod download
31+
GO111MODULE=off go get -u github.com/kevinburke/go-bindata/...
32+
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > /go/bin/cc-test-reporter
33+
chmod +x /go/bin/cc-test-reporter
34+
- persist_to_workspace: *workspace-persist
35+
- save-cache:
36+
paths:
37+
- /go/
38+
key: v1-deps-{{ checksum "go.sum" }}
39+
40+
fe-compile:
41+
environment: *default-env
42+
working_directory: *working-dir
43+
docker:
44+
- image: vuejs/ci
45+
steps:
46+
- attach_workspace:
47+
at: /go/
48+
- run:
49+
name: Compile the Frontend
50+
command: |
51+
yarn && yarn build
52+
- store_artifacts:
53+
path: dist
54+
destination: frontend
55+
- persist_to_workspace: *workspace-persist
56+
57+
be-tests:
58+
environment: *default-env
59+
working_directory: *working-dir
60+
docker:
61+
- image: golang:1.12-stretch
62+
steps:
63+
- attach_workspace:
64+
at: /go/
65+
- run:
66+
name: Test backend
67+
command: |
68+
cc-test-reporter before-build
69+
go-bindata -o ./auto-docs/assets.go -prefix dist/ dist/...
70+
go test -coverprofile=c.out -covermode=atomic -race ./...
71+
RESULT=$?
72+
sed -i s#github.com/cloudcloud/auto-docs/## c.out
73+
sed -i '/^auto-docs\/assets.go.*/d' c.out
74+
cc-test-reporter after-build -t gocov --exit-code $RESULT
75+
- store_artifacts:
76+
path: c.out
77+
destination: test-coverage
78+
- persist_to_workspace: *workspace-persist
79+
80+
images:
81+
environment: *default-env
82+
working_directory: *working-dir
83+
docker:
84+
- image: golang:1.12-stretch
85+
steps:
86+
- attach_workspace:
87+
at: /go/
88+
- run:
89+
name: Build executables
90+
command: |
91+
go-bindata -o auto-docs/assets.go -prefix dist/ dist/...
92+
GOARCH=amd64 GOOS=linux go build -o build/auto-docs.${GOARCH}-${GOOS} ./auto-docs
93+
GOARCH=amd64 GOOS=darwin go build -o build/auto-docs.${GOARCH}-${GOOS} ./auto-docs
94+
GOARCH=amd64 GOOS=windows go build -o build/auto-docs.${GOARCH}-${GOOS}.exe ./auto-docs
95+
GOARCH=386 GOOS=linux go build -o build/auto-docs.${GOARCH}-${GOOS} ./auto-docs
96+
GOARCH=386 GOOS=windows go build -o build/auto-docs.${GOARCH}-${GOOS}.exe ./auto-docs
97+
- run:
98+
name: Push to github
99+
command: |
100+
ghr -t ${GITHUB_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} ${CIRCLE_TAG} ./build/
101+
- store_artifacts:
102+
path: build
103+
destination: binaries
104+
105+
docker-image:
106+
environment: *default-env
107+
working_directory: *working-dir
108+
docker:
109+
- image: circleci/buildpack-deps:stretch
110+
steps:
111+
- checkout
112+
- setup_remote_docker
113+
- attach_workspace:
114+
at: /go/
115+
- run:
116+
name: Image Build
117+
command: |
118+
docker build -t --rm=false cloudcloud/auto-docs:v${CIRCLE_TAG} .
119+
echo ${DOCKERHUB_PASSWORD} | docker login -u "${DOCKERHUB_USERNAME}" --password-stdin
120+
docker push cloudcloud/auto-docs:${CIRCLE_TAG}
121+
122+
workflows:
123+
version: 2
124+
125+
auto-docs:
126+
jobs:
127+
- build
128+
129+
- fe-compile:
130+
requires:
131+
- build
132+
133+
- be-tests:
134+
requires:
135+
- fe-compile
136+
137+
- images:
138+
requires:
139+
- be-tests
140+
filters:
141+
branches:
142+
ignore: /.*/
143+
tags:
144+
only:
145+
- /v[0-9]+.[0-9]+.[0-9]+/
146+
147+
- docker-image:
148+
requires:
149+
- images
150+

Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
FROM node:12.0-slim AS fe
2-
LABEL maintainer="Al <allan.shone@gmail.com>"
2+
LABEL maintainer="CerealBoy <allan.shone@gmail.com>"
33
COPY . .
44
RUN yarn && yarn build
55

@@ -13,7 +13,7 @@ RUN apk add ca-certificates git && \
1313
go-bindata -o auto-docs/server/assets.go --prefix dist/ dist/... && \
1414
sed -i "s/package main/package server/" auto-docs/server/assets.go && \
1515
GO111MODULE=on go mod download && \
16-
GO111MODULE=on go build -o /auto-docs ./auto-docs
16+
GO111MODULE=on go build -ldflags "-X main.GitCommit=$(git tag -l | head -n 1)" -o /auto-docs ./auto-docs
1717

1818
FROM golang:alpine AS release
1919
ENTRYPOINT ["/auto-docs"]

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# auto-docs
22

3+
[![Maintainability](https://api.codeclimate.com/v1/badges/fa2cff555295e8949be1/maintainability)](https://codeclimate.com/github/cloudcloud/auto-docs/maintainability)
4+
[![Test Coverage](https://api.codeclimate.com/v1/badges/fa2cff555295e8949be1/test_coverage)](https://codeclimate.com/github/cloudcloud/auto-docs/test_coverage)
5+
36
## background
47

58
This project aims to be somewhat of a Knowledge Management system

0 commit comments

Comments
 (0)