mirror of
https://github.com/laravel-ls/uri
synced 2026-06-27 05:03:41 +02:00
158 lines
4.1 KiB
YAML
158 lines
4.1 KiB
YAML
version: 2.1
|
|
|
|
orbs:
|
|
golang: cci-orb/golang@volatile
|
|
codecov: codecov/codecov@volatile
|
|
|
|
command_vars:
|
|
- cache_key: &cache_key gomod-<< parameters.go-version >>-{{ checksum "go.mod" }}-{{ checksum "go.sum" }}
|
|
- cache_tools_key: &cache_tools_key tools-<< parameters.go-version >>-{{ checksum "tools/go.mod" }}-{{ checksum "tools/go.sum" }}
|
|
|
|
commands:
|
|
restore_dependencies:
|
|
parameters:
|
|
go-version:
|
|
type: string
|
|
steps:
|
|
- restore_cache:
|
|
name: "Restore module dependencies cache"
|
|
keys:
|
|
- *cache_key
|
|
- restore_cache:
|
|
name: "Restore dependencies tools"
|
|
keys:
|
|
- *cache_tools_key
|
|
- run:
|
|
name: "Download project modules"
|
|
command: |
|
|
go mod download
|
|
|
|
save_dependencies:
|
|
parameters:
|
|
go-version:
|
|
type: string
|
|
steps:
|
|
- save_cache:
|
|
name: "Save module cache"
|
|
key: *cache_key
|
|
paths:
|
|
- /go/pkg/mod/cache
|
|
- save_cache:
|
|
name: "Save dependencies tools"
|
|
key: *cache_tools_key
|
|
paths:
|
|
- /go/bin/
|
|
- run:
|
|
name: "go mod vendor"
|
|
command: |
|
|
go mod vendor
|
|
|
|
setup:
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: Check versions
|
|
command: |
|
|
go version
|
|
go env
|
|
- run:
|
|
name: "Parse CPUs"
|
|
command: |
|
|
# https://circleci.com/changelog#container-cgroup-limits-now-visible-inside-the-docker-executor
|
|
CPUS="$(echo $(($(cat /sys/fs/cgroup/cpu/cpu.shares) / 1024)))"
|
|
echo "export CPUS=${CPUS}" >> $BASH_ENV
|
|
install_tools:
|
|
steps:
|
|
- run:
|
|
name: "Download project tool dependencies"
|
|
command: |
|
|
if [ -z $(find /go/bin/ -mindepth 1 -type f -executable | head -1) ]; then
|
|
make -j${CPUS} tools GOBIN=/go/bin
|
|
fi
|
|
|
|
set_goflags:
|
|
steps:
|
|
- run:
|
|
name: "Parse CPUs"
|
|
command: |
|
|
echo "export GOFLAGS='-p=${CPUS} -cpu=${CPUS}'" >> $BASH_ENV
|
|
|
|
jobs:
|
|
test:
|
|
parameters:
|
|
go-version:
|
|
type: string
|
|
docker:
|
|
- image: golang:<< parameters.go-version >>
|
|
auth:
|
|
username: $DOCKERHUB_USER
|
|
password: $DOCKERHUB_PASSWORD
|
|
working_directory: /go/src/go.lsp.dev/uri
|
|
resource_class: medium
|
|
steps:
|
|
- restore_dependencies:
|
|
go-version: << parameters.go-version >>
|
|
- install_tools
|
|
- save_dependencies:
|
|
go-version: << parameters.go-version >>
|
|
- set_goflags
|
|
- run:
|
|
name: Test and take a coverage
|
|
environment:
|
|
GOTESTSUM_FORMAT: standard-verbose
|
|
GOTESTSUM_JUNITFILE: /tmp/test-results/tests.xml
|
|
GOTESTSUM_JSONFILE: /tmp/test-results/tests.json
|
|
command: |
|
|
mkdir -p /tmp/test-results
|
|
make coverage
|
|
- codecov/upload:
|
|
file: "coverage.out"
|
|
when: on_success
|
|
|
|
lint:
|
|
parameters:
|
|
go-version:
|
|
type: string
|
|
docker:
|
|
- image: golang:<< parameters.go-version >>
|
|
auth:
|
|
username: $DOCKERHUB_USER
|
|
password: $DOCKERHUB_PASSWORD
|
|
working_directory: /go/src/go.lsp.dev/uri
|
|
resource_class: medium
|
|
steps:
|
|
- restore_dependencies:
|
|
go-version: << parameters.go-version >>
|
|
- install_tools
|
|
- save_dependencies:
|
|
go-version: << parameters.go-version >>
|
|
- run:
|
|
name: Run fmt and lint for sources
|
|
command: |
|
|
make lint
|
|
git add -N . && git diff --exit-code
|
|
|
|
workflows:
|
|
version: 2
|
|
workflows:
|
|
jobs:
|
|
- test:
|
|
context: org-global
|
|
matrix:
|
|
parameters:
|
|
go-version: ["1.15-buster", "1.16-rc-buster"]
|
|
pre-steps:
|
|
- setup
|
|
post-steps:
|
|
- store_test_results:
|
|
path: /tmp/test-results
|
|
- store_artifacts:
|
|
path: /tmp/test-results
|
|
|
|
- lint:
|
|
context: org-global
|
|
matrix:
|
|
parameters:
|
|
go-version: ["1.15-buster"]
|
|
pre-steps:
|
|
- setup
|