mirror of
https://github.com/amitbet/vncproxy.git
synced 2025-04-27 18:55:13 +00:00
130 lines
5.3 KiB
YAML
130 lines
5.3 KiB
YAML
version: 2 # use CircleCI 2.0
|
|
jobs: # basic units of work in a run
|
|
build: # runs not using Workflows must have a `build` job as entry point
|
|
docker: # run the steps with Docker
|
|
# CircleCI Go images available at: https://hub.docker.com/r/circleci/golang/
|
|
- image: circleci/golang:1.12
|
|
# CircleCI PostgreSQL images available at: https://hub.docker.com/r/circleci/postgres/
|
|
- image: circleci/postgres:9.6-alpine
|
|
environment: # environment variables for primary container
|
|
POSTGRES_USER: circleci-demo-go
|
|
POSTGRES_DB: circle_test
|
|
|
|
parallelism: 2
|
|
|
|
environment: # environment variables for the build itself
|
|
TEST_RESULTS: /tmp/test-results # path to where test results will be saved
|
|
|
|
steps: # steps that comprise the `build` job
|
|
- checkout # check out source code to working directory
|
|
- run: mkdir -p $TEST_RESULTS # create the test results directory
|
|
|
|
- restore_cache: # restores saved cache if no changes are detected since last run
|
|
keys:
|
|
- go-mod-v4-{{ checksum "go.sum" }}
|
|
|
|
# Wait for Postgres to be ready before proceeding
|
|
- run:
|
|
name: Waiting for Postgres to be ready
|
|
command: dockerize -wait tcp://localhost:5432 -timeout 1m
|
|
|
|
- run:
|
|
name: Run unit tests
|
|
environment: # environment variables for the database url and path to migration files
|
|
CONTACTS_DB_URL: "postgres://circleci-demo-go@localhost:5432/circle_test?sslmode=disable"
|
|
CONTACTS_DB_MIGRATIONS: /home/circleci/project/db/migrations
|
|
|
|
# store the results of our tests in the $TEST_RESULTS directory
|
|
command: |
|
|
PACKAGE_NAMES=$(go list ./... | circleci tests split --split-by=timings --timings-type=classname)
|
|
gotestsum --junitfile ${TEST_RESULTS}/gotestsum-report.xml -- $PACKAGE_NAMES
|
|
|
|
# Build
|
|
- run:
|
|
name: Build and package all OS flavors
|
|
command: |
|
|
#!/bin/bash
|
|
sum="sha1sum"
|
|
|
|
# VERSION=`date -u +%Y%m%d`
|
|
VERSION="v1.11"
|
|
LDFLAGS="-X main.VERSION=$VERSION -s -w"
|
|
GCFLAGS=""
|
|
|
|
if ! hash sha1sum 2>/dev/null; then
|
|
if ! hash shasum 2>/dev/null; then
|
|
echo "I can't see 'sha1sum' or 'shasum'"
|
|
echo "Please install one of them!"
|
|
exit
|
|
fi
|
|
sum="shasum"
|
|
fi
|
|
|
|
UPX=false
|
|
if hash upx 2>/dev/null; then
|
|
UPX=true
|
|
fi
|
|
|
|
|
|
OSES=( linux darwin windows )
|
|
ARCHS=(amd64 386 )
|
|
for os in ${OSES[@]}; do
|
|
for arch in ${ARCHS[@]}; do
|
|
suffix=""
|
|
if [ "$os" == "windows" ]
|
|
then
|
|
suffix=".exe"
|
|
fi
|
|
|
|
env CGO_ENABLED=0 GOOS=$os GOARCH=$arch go build -ldflags "$LDFLAGS" -gcflags "$GCFLAGS" -o ./dist/${os}_${arch}/recorder${suffix} ./recorder/cmd
|
|
env CGO_ENABLED=0 GOOS=$os GOARCH=$arch go build -ldflags "$LDFLAGS" -gcflags "$GCFLAGS" -o ./dist/${os}_${arch}/player${suffix} ./player/cmd
|
|
env CGO_ENABLED=0 GOOS=$os GOARCH=$arch go build -ldflags "$LDFLAGS" -gcflags "$GCFLAGS" -o ./dist/${os}_${arch}/proxy${suffix} ./proxy/cmd
|
|
|
|
if $UPX; then upx -9 client_${os}_${arch}${suffix} server_${os}_${arch}${suffix};fi
|
|
# tar -zcf ./dist/${CIRCLE_PROJECT_REPONAME}-${os}-${arch}-$VERSION.tar.gz ./dist/${os}_${arch}/proxy${suffix} ./dist/${os}_${arch}/player${suffix} ./dist/${os}_${arch}/recorder${suffix}
|
|
cd dist/${os}_${arch}/
|
|
zip -D -q -r ../${CIRCLE_PROJECT_REPONAME}-${os}-${arch}-$VERSION.zip proxy${suffix} player${suffix} recorder${suffix}
|
|
cd ../..
|
|
export
|
|
$sum ./dist/${CIRCLE_PROJECT_REPONAME}-${os}-${arch}-$VERSION.zip
|
|
rm -rf ./dist/${os}_${arch}/
|
|
done
|
|
done
|
|
|
|
- store_artifacts: # upload test summary for display in Artifacts
|
|
path: ./dist
|
|
destination: release-artifacts
|
|
|
|
# - run: make # pull and build dependencies for the project
|
|
|
|
# - save_cache:
|
|
# key: go-mod-v4-{{ checksum "go.sum" }}
|
|
# paths:
|
|
# - "/go/pkg/mod"
|
|
|
|
# - run:
|
|
# name: Start service
|
|
# environment:
|
|
# CONTACTS_DB_URL: "postgres://circleci-demo-go@localhost:5432/circle_test?sslmode=disable"
|
|
# CONTACTS_DB_MIGRATIONS: /home/circleci/project/db/migrations
|
|
# command: ./workdir/contacts
|
|
# background: true # keep service running and proceed to next step
|
|
|
|
# - run:
|
|
# name: Validate service is working
|
|
# command: |
|
|
# sleep 5
|
|
# curl --retry 10 --retry-delay 1 -X POST --header "Content-Type: application/json" -d '{"email":"test@example.com","name":"Test User"}' http://localhost:8080/contacts
|
|
|
|
# - store_artifacts: # upload test summary for display in Artifacts
|
|
# path: /tmp/test-results
|
|
# destination: raw-test-output
|
|
|
|
# - store_test_results: # upload test results for display in Test Summary
|
|
# path: /tmp/test-results
|
|
workflows:
|
|
version: 2
|
|
build-workflow:
|
|
jobs:
|
|
- build
|