mirror of https://github.com/hashicorp/boundary
ci: Remove CircleCI configuration (#3065)
CI is now performed via Github Actions. Some notable Github Action
workflows that replace the CircleCI jobs are:
- test: replaces CCI build, test-api, test-sdk
- test-sql: replaces CCI test-sql
- make-gen-delta: replaces CCI make-gen-delta
See:
https://github.com/hashicorp/boundary/actions/workflows/test.yml
https://github.com/hashicorp/boundary/actions/workflows/test-sql.yml
https://github.com/hashicorp/boundary/actions/workflows/make-gen-delta.yml
https://docs.github.com/en/actions
https://cli.github.com/manual/gh_run
pull/3070/head
parent
1821cb4631
commit
000fc7c0e0
@ -1 +0,0 @@
|
|||||||
config.yml linguist-generated
|
|
||||||
@ -1 +0,0 @@
|
|||||||
.tmp/
|
|
||||||
@ -1,95 +0,0 @@
|
|||||||
# Set SHELL to 'strict mode' without using .SHELLFLAGS for max compatibility.
|
|
||||||
# See https://fieldnotes.tech/how-to-shell-for-compatible-makefiles/
|
|
||||||
SHELL := /usr/bin/env bash -euo pipefail -c
|
|
||||||
|
|
||||||
# CONFIG is the name of the make target someone
|
|
||||||
# would invoke to update the main config file (config.yml).
|
|
||||||
CONFIG ?= ci-config
|
|
||||||
# VERIFY is the name of the make target someone
|
|
||||||
# would invoke to verify the config file.
|
|
||||||
VERIFY ?= ci-verify
|
|
||||||
|
|
||||||
CIRCLECI := circleci --skip-update-check
|
|
||||||
ifeq ($(DEBUG_CIRCLECI_CLI),YES)
|
|
||||||
CIRCLECI += --debug
|
|
||||||
endif
|
|
||||||
|
|
||||||
# For config processing, always refer to circleci.com not self-hosted circleci,
|
|
||||||
# because self-hosted does not currently support the necessary API.
|
|
||||||
CIRCLECI_CLI_HOST := https://circleci.com
|
|
||||||
export CIRCLECI_CLI_HOST
|
|
||||||
|
|
||||||
# Set up some documentation/help message variables.
|
|
||||||
# We do not attempt to install the CircleCI CLI from this Makefile.
|
|
||||||
CCI_INSTALL_LINK := https://circleci.com/docs/2.0/local-cli/\#installation
|
|
||||||
CCI_INSTALL_MSG := Please install CircleCI CLI. See $(CCI_INSTALL_LINK)
|
|
||||||
CCI_VERSION := $(shell $(CIRCLECI) version 2> /dev/null)
|
|
||||||
ifeq ($(CCI_VERSION),)
|
|
||||||
# Attempting to use the CLI fails with installation instructions.
|
|
||||||
CIRCLECI := echo '$(CCI_INSTALL_MSG)'; exit 1; \#
|
|
||||||
endif
|
|
||||||
|
|
||||||
SOURCE_DIR := config
|
|
||||||
SOURCE_YML := $(shell [ ! -d $(SOURCE_DIR) ] || find $(SOURCE_DIR) -name '*.yml')
|
|
||||||
CONFIG_SOURCE := Makefile $(SOURCE_YML) | $(SOURCE_DIR)
|
|
||||||
OUT := config.yml
|
|
||||||
TMP := .tmp/config-processed
|
|
||||||
CONFIG_PACKED := .tmp/config-packed
|
|
||||||
|
|
||||||
default: help
|
|
||||||
|
|
||||||
help:
|
|
||||||
@echo "Usage:"
|
|
||||||
@echo " make $(CONFIG): recompile config.yml from $(SOURCE_DIR)/"
|
|
||||||
@echo " make $(VERIFY): verify that config.yml is a true mapping from $(SOURCE_DIR)/"
|
|
||||||
@echo
|
|
||||||
@echo "Diagnostics:"
|
|
||||||
@[ -z "$(CCI_VERSION)" ] || echo " circleci-cli version $(CCI_VERSION)"
|
|
||||||
@[ -n "$(CCI_VERSION)" ] || echo " $(CCI_INSTALL_MSG)"
|
|
||||||
|
|
||||||
$(SOURCE_DIR):
|
|
||||||
@echo No source directory $(SOURCE_DIR) found.; exit 1
|
|
||||||
|
|
||||||
# Make sure our .tmp dir exists.
|
|
||||||
$(shell [ -d .tmp ] || mkdir .tmp)
|
|
||||||
|
|
||||||
.PHONY: $(CONFIG)
|
|
||||||
$(CONFIG): $(OUT)
|
|
||||||
|
|
||||||
.PHONY: $(VERIFY)
|
|
||||||
$(VERIFY): config-up-to-date
|
|
||||||
@$(CIRCLECI) config validate $(OUT)
|
|
||||||
|
|
||||||
define GENERATED_FILE_HEADER
|
|
||||||
### ***
|
|
||||||
### WARNING: DO NOT manually EDIT or MERGE this file, it is generated by 'make $(CONFIG)'.
|
|
||||||
### INSTEAD: Edit or merge the source in $(SOURCE_DIR)/ then run 'make $(CONFIG)'.
|
|
||||||
### ***
|
|
||||||
endef
|
|
||||||
export GENERATED_FILE_HEADER
|
|
||||||
|
|
||||||
# GEN_CONFIG writes the config to a temporary file. If the whole process succeeds,
|
|
||||||
# it them moves that file to $@. This makes is an atomic operation, so if it fails
|
|
||||||
# make doesn't consider a half-baked file up to date.
|
|
||||||
define GEN_CONFIG
|
|
||||||
@$(CIRCLECI) config pack $(SOURCE_DIR) > $(CONFIG_PACKED)
|
|
||||||
@echo "$$GENERATED_FILE_HEADER" > $@.tmp || { rm -f $@; exit 1; }
|
|
||||||
@$(CIRCLECI) config process $(CONFIG_PACKED) >> $@.tmp || { rm -f $@.tmp; exit 1; }
|
|
||||||
@mv -f $@.tmp $@
|
|
||||||
endef
|
|
||||||
|
|
||||||
$(OUT): $(CONFIG_SOURCE)
|
|
||||||
$(GEN_CONFIG)
|
|
||||||
@echo "$@ updated"
|
|
||||||
|
|
||||||
$(TMP): $(CONFIG_SOURCE)
|
|
||||||
$(GEN_CONFIG)
|
|
||||||
|
|
||||||
.PHONY: config-up-to-date
|
|
||||||
config-up-to-date: $(TMP) # Note this must not depend on $(OUT)!
|
|
||||||
@if diff -w $(OUT) $<; then \
|
|
||||||
echo "Generated $(OUT) is up to date!"; \
|
|
||||||
else \
|
|
||||||
echo "Generated $(OUT) is out of date, run make $(CONFIG) to update."; \
|
|
||||||
exit 1; \
|
|
||||||
fi
|
|
||||||
@ -1,130 +0,0 @@
|
|||||||
# How to use CircleCI multi-file config
|
|
||||||
|
|
||||||
This README and the Makefile should be in your `.circleci` directory,
|
|
||||||
in the root of your repository.
|
|
||||||
All path references in this README assume we are in this `.circleci` directory.
|
|
||||||
|
|
||||||
The `Makefile` in this directory generates `./config.yml` in CircleCI 2.0 syntax,
|
|
||||||
from the tree rooted at `./config/`, which contains files in CircleCI 2.0 or 2.1 syntax.
|
|
||||||
|
|
||||||
|
|
||||||
## Quickstart
|
|
||||||
|
|
||||||
The basic workflow is:
|
|
||||||
|
|
||||||
- Edit source files in `./config/`
|
|
||||||
- When you are done, run `make ci-config` to update `./config.yml`
|
|
||||||
- Commit this entire `.circleci` directory, including that generated file together.
|
|
||||||
- Run `make ci-verify` to ensure the current `./config.yml` is up to date with the source.
|
|
||||||
|
|
||||||
When merging this `.circleci` directory:
|
|
||||||
|
|
||||||
- Do not merge the generated `./config.yml` file, instead:
|
|
||||||
- Merge the source files under `./config/`, and then
|
|
||||||
- Run `make ci-config` to re-generate the merged `./config.yml`
|
|
||||||
|
|
||||||
And that's it, for more detail, read on!
|
|
||||||
|
|
||||||
|
|
||||||
## How does it work, roughly?
|
|
||||||
|
|
||||||
CircleCI supports [generating a single config file from many],
|
|
||||||
using the `$ circleci config pack` command.
|
|
||||||
It also supports [expanding 2.1 syntax to 2.0 syntax]
|
|
||||||
using the `$ circleci config process` command.
|
|
||||||
We use these two commands, stitched together using the `Makefile`
|
|
||||||
to implement the workflow.
|
|
||||||
|
|
||||||
[generating a single config file from many]: https://circleci.com/docs/2.0/local-cli/#packing-a-config
|
|
||||||
[expanding 2.1 syntax to 2.0 syntax]: https://circleci.com/docs/2.0/local-cli/#processing-a-config
|
|
||||||
|
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
You will need the [CircleCI CLI tool] installed and working,
|
|
||||||
at least version `0.1.5607`.
|
|
||||||
You can [download this tool directly from GitHub Releases].
|
|
||||||
|
|
||||||
```
|
|
||||||
$ circleci version
|
|
||||||
0.1.5607+f705856
|
|
||||||
```
|
|
||||||
|
|
||||||
[CircleCI CLI tool]: https://circleci.com/docs/2.0/local-cli/
|
|
||||||
[download this tool directly from GitHub Releases]: https://github.com/CircleCI-Public/circleci-cli/releases
|
|
||||||
|
|
||||||
|
|
||||||
## Updating the config source
|
|
||||||
|
|
||||||
Before making changes, be sure to understand the layout
|
|
||||||
of the `./config/` file tree, as well as circleci 2.1 syntax.
|
|
||||||
See the [Syntax and layout] section below.
|
|
||||||
|
|
||||||
To update the config, you should edit, add or remove files
|
|
||||||
in the `./config/` directory,
|
|
||||||
and then run `make ci-config`.
|
|
||||||
If that's successful,
|
|
||||||
you should then commit every `*.yml` file in the tree rooted in this directory.
|
|
||||||
That is: you should commit both the source under `./config/`
|
|
||||||
and the generated file `./config.yml` at the same time, in the same commit.
|
|
||||||
The included git pre-commit hook will help with this.
|
|
||||||
Do not edit the `./config.yml` file directly, as you will lose your changes
|
|
||||||
next time `make ci-config` is run.
|
|
||||||
|
|
||||||
[Syntax and layout]: #syntax-and-layout
|
|
||||||
|
|
||||||
|
|
||||||
### Verifying `./config.yml`
|
|
||||||
|
|
||||||
To check whether or not the current `./config.yml` is up to date with the source
|
|
||||||
and valid, run `$ make ci-verify`.
|
|
||||||
Note that `$ make ci-verify` should be run in CI,
|
|
||||||
in case not everyone has the git pre-commit hook set up correctly.
|
|
||||||
|
|
||||||
|
|
||||||
#### Example shell session
|
|
||||||
|
|
||||||
```sh
|
|
||||||
$ make ci-config
|
|
||||||
config.yml updated
|
|
||||||
$ git add -A . # The -A makes sure to include deletions/renames etc.
|
|
||||||
$ git commit -m "ci: blah blah blah"
|
|
||||||
Changes detected in .circleci/, running 'make -C .circleci ci-verify'
|
|
||||||
--> Generated config.yml is up to date!
|
|
||||||
--> Config file at config.yml is valid.
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
### Syntax and layout
|
|
||||||
|
|
||||||
It is important to understand the layout of the config directory.
|
|
||||||
Read the documentation on [packing a config] for a full understanding
|
|
||||||
of how multiple YAML files are merged by the circleci CLI tool.
|
|
||||||
|
|
||||||
[packing a config]: https://circleci.com/docs/2.0/local-cli/#packing-a-config
|
|
||||||
|
|
||||||
Here is an example file tree (with comments added afterwards):
|
|
||||||
|
|
||||||
```sh
|
|
||||||
$ tree .
|
|
||||||
.
|
|
||||||
├── Makefile
|
|
||||||
├── README.md # This file.
|
|
||||||
├── config # The source code for config.yml is rooted here.
|
|
||||||
│ ├── @config.yml # Files beginning with @ are treated specially by `circleci config pack`
|
|
||||||
│ ├── commands # Subdirectories of config become top-level keys.
|
|
||||||
│ │ └── go_test.yml # Filenames (minus .yml) become top-level keys under
|
|
||||||
│ │ └── go_build.yml # their parent (in this case "commands").
|
|
||||||
│ │ # The contents of go_test.yml therefore are placed at: .commands.go_test:
|
|
||||||
│ └── jobs # jobs also becomes a top-level key under config...
|
|
||||||
│ ├── build.yml # ...and likewise filenames become keys under their parent.
|
|
||||||
│ └── test.yml
|
|
||||||
└── config.yml # The generated file in 2.0 syntax.
|
|
||||||
```
|
|
||||||
|
|
||||||
About those `@` files... Preceding a filename with `@`
|
|
||||||
indicates to `$ circleci config pack` that the contents of this YAML file
|
|
||||||
should be at the top-level, rather than underneath a key named after their filename.
|
|
||||||
This naming convention is unfortunate as it breaks autocompletion in bash,
|
|
||||||
but there we go.
|
|
||||||
|
|
||||||
@ -1,330 +0,0 @@
|
|||||||
### ***
|
|
||||||
### WARNING: DO NOT manually EDIT or MERGE this file, it is generated by 'make ci-config'.
|
|
||||||
### INSTEAD: Edit or merge the source in config/ then run 'make ci-config'.
|
|
||||||
### ***
|
|
||||||
# Orb 'circleci/slack@3.4.2' resolved to 'circleci/slack@3.4.2'
|
|
||||||
version: 2
|
|
||||||
jobs:
|
|
||||||
test-sql-13-alpine:
|
|
||||||
machine:
|
|
||||||
image: ubuntu-2004:202111-01
|
|
||||||
resource_class: medium
|
|
||||||
working_directory: ~/boundary
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- run:
|
|
||||||
command: |
|
|
||||||
make test-sql POSTGRES_DOCKER_IMAGE_BASE=docker.mirror.hashicorp.services/postgres PG_DOCKER_TAG=13-alpine
|
|
||||||
name: Run SQL PgTap Tests
|
|
||||||
trigger-merge-to-downstream:
|
|
||||||
machine:
|
|
||||||
image: ubuntu-2004:202111-01
|
|
||||||
resource_class: medium
|
|
||||||
working_directory: ~/boundary
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- run:
|
|
||||||
command: |
|
|
||||||
./scripts/trigger-merge-to-downstream ${CIRCLE_BRANCH}
|
|
||||||
name: Trigger Merge to Downstream
|
|
||||||
test-api:
|
|
||||||
machine:
|
|
||||||
image: ubuntu-2004:202111-01
|
|
||||||
resource_class: medium
|
|
||||||
working_directory: ~/boundary
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- run:
|
|
||||||
command: |
|
|
||||||
make install-go
|
|
||||||
source ~/.bashrc
|
|
||||||
echo 'export GOROOT=$GOROOT' >> "$BASH_ENV"
|
|
||||||
echo 'export GOPATH=$GOPATH' >> "$BASH_ENV"
|
|
||||||
echo 'export PATH=$PATH' >> "$BASH_ENV"
|
|
||||||
echo "$ go version"
|
|
||||||
go version
|
|
||||||
name: Install go
|
|
||||||
- run:
|
|
||||||
command: |
|
|
||||||
make test-api
|
|
||||||
name: Run API Tests
|
|
||||||
no_output_timeout: 15m
|
|
||||||
test-sql-11-alpine:
|
|
||||||
machine:
|
|
||||||
image: ubuntu-2004:202111-01
|
|
||||||
resource_class: medium
|
|
||||||
working_directory: ~/boundary
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- run:
|
|
||||||
command: |
|
|
||||||
make test-sql POSTGRES_DOCKER_IMAGE_BASE=docker.mirror.hashicorp.services/postgres PG_DOCKER_TAG=11-alpine
|
|
||||||
name: Run SQL PgTap Tests
|
|
||||||
make-gen-deltas:
|
|
||||||
machine:
|
|
||||||
image: ubuntu-2004:202111-01
|
|
||||||
resource_class: medium
|
|
||||||
working_directory: ~/boundary
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- run:
|
|
||||||
command: |
|
|
||||||
make install-go
|
|
||||||
source ~/.bashrc
|
|
||||||
echo 'export GOROOT=$GOROOT' >> "$BASH_ENV"
|
|
||||||
echo 'export GOPATH=$GOPATH' >> "$BASH_ENV"
|
|
||||||
echo 'export PATH=$PATH' >> "$BASH_ENV"
|
|
||||||
echo "$ go version"
|
|
||||||
go version
|
|
||||||
name: Install go
|
|
||||||
- run:
|
|
||||||
command: |
|
|
||||||
make tools
|
|
||||||
name: Install tools
|
|
||||||
- run:
|
|
||||||
command: |
|
|
||||||
make gen
|
|
||||||
echo "Testing git diffs..."
|
|
||||||
git diff --exit-code
|
|
||||||
git status --porcelain
|
|
||||||
test -z "$(git status --porcelain)"
|
|
||||||
name: Check make gen deltas
|
|
||||||
test-sdk:
|
|
||||||
machine:
|
|
||||||
image: ubuntu-2004:202111-01
|
|
||||||
resource_class: medium
|
|
||||||
working_directory: ~/boundary
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- run:
|
|
||||||
command: |
|
|
||||||
make install-go
|
|
||||||
source ~/.bashrc
|
|
||||||
echo 'export GOROOT=$GOROOT' >> "$BASH_ENV"
|
|
||||||
echo 'export GOPATH=$GOPATH' >> "$BASH_ENV"
|
|
||||||
echo 'export PATH=$PATH' >> "$BASH_ENV"
|
|
||||||
echo "$ go version"
|
|
||||||
go version
|
|
||||||
name: Install go
|
|
||||||
- run:
|
|
||||||
command: |
|
|
||||||
make test-sdk
|
|
||||||
name: Run SDK Tests
|
|
||||||
no_output_timeout: 15m
|
|
||||||
test-sql-12-alpine:
|
|
||||||
machine:
|
|
||||||
image: ubuntu-2004:202111-01
|
|
||||||
resource_class: medium
|
|
||||||
working_directory: ~/boundary
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- run:
|
|
||||||
command: |
|
|
||||||
make test-sql POSTGRES_DOCKER_IMAGE_BASE=docker.mirror.hashicorp.services/postgres PG_DOCKER_TAG=12-alpine
|
|
||||||
name: Run SQL PgTap Tests
|
|
||||||
build:
|
|
||||||
machine:
|
|
||||||
image: ubuntu-2004:202111-01
|
|
||||||
resource_class: large
|
|
||||||
working_directory: ~/boundary
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- run:
|
|
||||||
command: |
|
|
||||||
make install-go
|
|
||||||
source ~/.bashrc
|
|
||||||
echo 'export GOROOT=$GOROOT' >> "$BASH_ENV"
|
|
||||||
echo 'export GOPATH=$GOPATH' >> "$BASH_ENV"
|
|
||||||
echo 'export PATH=$PATH' >> "$BASH_ENV"
|
|
||||||
echo "$ go version"
|
|
||||||
go version
|
|
||||||
name: Install go
|
|
||||||
- run:
|
|
||||||
command: |
|
|
||||||
make tools
|
|
||||||
name: Install tools
|
|
||||||
- run:
|
|
||||||
command: |
|
|
||||||
which pg_isready || sudo apt-get update && sudo apt-get install -y postgresql-client
|
|
||||||
make DOCKER_ARGS='-d' PG_OPTS='-c shared_buffers=256MB -c max_connections=200000' -C testing/dbtest/docker database-up
|
|
||||||
until pg_isready -h 127.0.0.1; do docker container inspect boundary-sql-tests &> /dev/null || exit -1; sleep 1; done
|
|
||||||
name: Initialize Test Database
|
|
||||||
- run:
|
|
||||||
command: |
|
|
||||||
make test-ci
|
|
||||||
name: Run Acceptance Tests
|
|
||||||
no_output_timeout: 15m
|
|
||||||
- run:
|
|
||||||
command: |
|
|
||||||
make -C testing/dbtest/docker clean
|
|
||||||
name: Cleanup
|
|
||||||
when: always
|
|
||||||
test-sql-latest:
|
|
||||||
machine:
|
|
||||||
image: ubuntu-2004:202111-01
|
|
||||||
resource_class: medium
|
|
||||||
working_directory: ~/boundary
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- run:
|
|
||||||
command: |
|
|
||||||
make test-sql POSTGRES_DOCKER_IMAGE_BASE=docker.mirror.hashicorp.services/postgres PG_DOCKER_TAG=latest
|
|
||||||
name: Run SQL PgTap Tests
|
|
||||||
workflows:
|
|
||||||
ci:
|
|
||||||
jobs:
|
|
||||||
- build
|
|
||||||
- test-api
|
|
||||||
- test-sdk
|
|
||||||
- test-sql-latest
|
|
||||||
- test-sql-11-alpine
|
|
||||||
- test-sql-12-alpine
|
|
||||||
- test-sql-13-alpine
|
|
||||||
- make-gen-deltas
|
|
||||||
trigger-merge-to-downstream:
|
|
||||||
jobs:
|
|
||||||
- trigger-merge-to-downstream:
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- main
|
|
||||||
- /release\/.*/
|
|
||||||
version: 2
|
|
||||||
|
|
||||||
# Original config.yml file:
|
|
||||||
# commands:
|
|
||||||
# install-go:
|
|
||||||
# description: |
|
|
||||||
# Ensure the right version of Go is installed and set PATH, GOPATH, GOROOT
|
|
||||||
# steps:
|
|
||||||
# - run:
|
|
||||||
# command: |
|
|
||||||
# make install-go
|
|
||||||
# source ~/.bashrc
|
|
||||||
# echo 'export GOROOT=$GOROOT' >> \"$BASH_ENV\"
|
|
||||||
# echo 'export GOPATH=$GOPATH' >> \"$BASH_ENV\"
|
|
||||||
# echo 'export PATH=$PATH' >> \"$BASH_ENV\"
|
|
||||||
# echo \"$ go version\"
|
|
||||||
# go version
|
|
||||||
# name: Install go
|
|
||||||
# install-tools:
|
|
||||||
# description: |
|
|
||||||
# Install tools using the Makefile
|
|
||||||
# steps:
|
|
||||||
# - run:
|
|
||||||
# command: |
|
|
||||||
# make tools
|
|
||||||
# name: Install tools
|
|
||||||
# executors:
|
|
||||||
# go-machine:
|
|
||||||
# machine:
|
|
||||||
# image: ubuntu-2004:202111-01
|
|
||||||
# resource_class: large
|
|
||||||
# working_directory: ~/boundary
|
|
||||||
# go-machine-medium:
|
|
||||||
# machine:
|
|
||||||
# image: ubuntu-2004:202111-01
|
|
||||||
# resource_class: medium
|
|
||||||
# working_directory: ~/boundary
|
|
||||||
# jobs:
|
|
||||||
# build:
|
|
||||||
# executor: go-machine
|
|
||||||
# steps:
|
|
||||||
# - checkout
|
|
||||||
# - install-go
|
|
||||||
# - install-tools
|
|
||||||
# - run:
|
|
||||||
# command: |
|
|
||||||
# which pg_isready || sudo apt-get update && sudo apt-get install -y postgresql-client
|
|
||||||
# make DOCKER_ARGS='-d' PG_OPTS='-c shared_buffers=256MB -c max_connections=200000' -C testing/dbtest/docker database-up
|
|
||||||
# until pg_isready -h 127.0.0.1; do docker container inspect boundary-sql-tests &> /dev/null || exit -1; sleep 1; done
|
|
||||||
# name: Initialize Test Database
|
|
||||||
# - run:
|
|
||||||
# command: |
|
|
||||||
# make test-ci
|
|
||||||
# name: Run Acceptance Tests
|
|
||||||
# no_output_timeout: 15m
|
|
||||||
# - run:
|
|
||||||
# command: |
|
|
||||||
# make -C testing/dbtest/docker clean
|
|
||||||
# name: Cleanup
|
|
||||||
# when: always
|
|
||||||
# make-gen-deltas:
|
|
||||||
# executor: go-machine-medium
|
|
||||||
# steps:
|
|
||||||
# - checkout
|
|
||||||
# - install-go
|
|
||||||
# - install-tools
|
|
||||||
# - run:
|
|
||||||
# command: |
|
|
||||||
# make gen
|
|
||||||
# echo \"Testing git diffs...\"
|
|
||||||
# git diff --exit-code
|
|
||||||
# git status --porcelain
|
|
||||||
# test -z \"$(git status --porcelain)\"
|
|
||||||
# name: Check make gen deltas
|
|
||||||
# test-api:
|
|
||||||
# executor: go-machine-medium
|
|
||||||
# steps:
|
|
||||||
# - checkout
|
|
||||||
# - install-go
|
|
||||||
# - run:
|
|
||||||
# command: |
|
|
||||||
# make test-api
|
|
||||||
# name: Run API Tests
|
|
||||||
# no_output_timeout: 15m
|
|
||||||
# test-sdk:
|
|
||||||
# executor: go-machine-medium
|
|
||||||
# steps:
|
|
||||||
# - checkout
|
|
||||||
# - install-go
|
|
||||||
# - run:
|
|
||||||
# command: |
|
|
||||||
# make test-sdk
|
|
||||||
# name: Run SDK Tests
|
|
||||||
# no_output_timeout: 15m
|
|
||||||
# test-sql:
|
|
||||||
# executor: go-machine-medium
|
|
||||||
# parameters:
|
|
||||||
# postgres-version:
|
|
||||||
# type: string
|
|
||||||
# steps:
|
|
||||||
# - checkout
|
|
||||||
# - run:
|
|
||||||
# command: |
|
|
||||||
# make test-sql POSTGRES_DOCKER_IMAGE_BASE=docker.mirror.hashicorp.services/postgres PG_DOCKER_TAG=<< parameters.postgres-version >>
|
|
||||||
# name: Run SQL PgTap Tests
|
|
||||||
# trigger-merge-to-downstream:
|
|
||||||
# executor: go-machine-medium
|
|
||||||
# steps:
|
|
||||||
# - checkout
|
|
||||||
# - run:
|
|
||||||
# command: |
|
|
||||||
# ./scripts/trigger-merge-to-downstream ${CIRCLE_BRANCH}
|
|
||||||
# name: Trigger Merge to Downstream
|
|
||||||
# orbs:
|
|
||||||
# slack: circleci/slack@3.4.2
|
|
||||||
# version: 2.1
|
|
||||||
# workflows:
|
|
||||||
# ci:
|
|
||||||
# jobs:
|
|
||||||
# - build
|
|
||||||
# - test-api
|
|
||||||
# - test-sdk
|
|
||||||
# - test-sql:
|
|
||||||
# matrix:
|
|
||||||
# parameters:
|
|
||||||
# postgres-version:
|
|
||||||
# - latest
|
|
||||||
# - 11-alpine
|
|
||||||
# - 12-alpine
|
|
||||||
# - 13-alpine
|
|
||||||
# - make-gen-deltas
|
|
||||||
# trigger-merge-to-downstream:
|
|
||||||
# jobs:
|
|
||||||
# - trigger-merge-to-downstream:
|
|
||||||
# filters:
|
|
||||||
# branches:
|
|
||||||
# only:
|
|
||||||
# - main
|
|
||||||
# - /release\\/.*/
|
|
||||||
@ -1,4 +0,0 @@
|
|||||||
version: 2.1
|
|
||||||
|
|
||||||
orbs:
|
|
||||||
slack: circleci/slack@3.4.2
|
|
||||||
@ -1,14 +0,0 @@
|
|||||||
---
|
|
||||||
description: >
|
|
||||||
Ensure the right version of Go is installed and set PATH, GOPATH, GOROOT
|
|
||||||
steps:
|
|
||||||
- run:
|
|
||||||
name: "Install go"
|
|
||||||
command: |
|
|
||||||
make install-go
|
|
||||||
source ~/.bashrc
|
|
||||||
echo 'export GOROOT=$GOROOT' >> "$BASH_ENV"
|
|
||||||
echo 'export GOPATH=$GOPATH' >> "$BASH_ENV"
|
|
||||||
echo 'export PATH=$PATH' >> "$BASH_ENV"
|
|
||||||
echo "$ go version"
|
|
||||||
go version
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
---
|
|
||||||
description: >
|
|
||||||
Install tools using the Makefile
|
|
||||||
steps:
|
|
||||||
- run:
|
|
||||||
name: "Install tools"
|
|
||||||
command: |
|
|
||||||
make tools
|
|
||||||
@ -1,10 +0,0 @@
|
|||||||
go-machine:
|
|
||||||
machine:
|
|
||||||
image: 'ubuntu-2004:202111-01'
|
|
||||||
resource_class: large
|
|
||||||
working_directory: ~/boundary
|
|
||||||
go-machine-medium:
|
|
||||||
machine:
|
|
||||||
image: 'ubuntu-2004:202111-01'
|
|
||||||
resource_class: medium
|
|
||||||
working_directory: ~/boundary
|
|
||||||
@ -1,21 +0,0 @@
|
|||||||
executor: go-machine
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- install-go
|
|
||||||
- install-tools
|
|
||||||
- run:
|
|
||||||
name: "Initialize Test Database"
|
|
||||||
command: |
|
|
||||||
which pg_isready || sudo apt-get update && sudo apt-get install -y postgresql-client
|
|
||||||
make DOCKER_ARGS='-d' PG_OPTS='-c shared_buffers=256MB -c max_connections=200000' -C testing/dbtest/docker database-up
|
|
||||||
until pg_isready -h 127.0.0.1; do docker container inspect boundary-sql-tests &> /dev/null || exit -1; sleep 1; done
|
|
||||||
- run:
|
|
||||||
name: "Run Acceptance Tests"
|
|
||||||
no_output_timeout: 15m
|
|
||||||
command: |
|
|
||||||
make test-ci
|
|
||||||
- run:
|
|
||||||
name: "Cleanup"
|
|
||||||
when: always
|
|
||||||
command: |
|
|
||||||
make -C testing/dbtest/docker clean
|
|
||||||
@ -1,13 +0,0 @@
|
|||||||
executor: go-machine-medium
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- install-go
|
|
||||||
- install-tools
|
|
||||||
- run:
|
|
||||||
name: "Check make gen deltas"
|
|
||||||
command: |
|
|
||||||
make gen
|
|
||||||
echo "Testing git diffs..."
|
|
||||||
git diff --exit-code
|
|
||||||
git status --porcelain
|
|
||||||
test -z "$(git status --porcelain)"
|
|
||||||
@ -1,9 +0,0 @@
|
|||||||
executor: go-machine-medium
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- install-go
|
|
||||||
- run:
|
|
||||||
name: "Run API Tests"
|
|
||||||
no_output_timeout: 15m
|
|
||||||
command: |
|
|
||||||
make test-api
|
|
||||||
@ -1,9 +0,0 @@
|
|||||||
executor: go-machine-medium
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- install-go
|
|
||||||
- run:
|
|
||||||
name: "Run SDK Tests"
|
|
||||||
no_output_timeout: 15m
|
|
||||||
command: |
|
|
||||||
make test-sdk
|
|
||||||
@ -1,10 +0,0 @@
|
|||||||
executor: go-machine-medium
|
|
||||||
parameters:
|
|
||||||
postgres-version:
|
|
||||||
type: string
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- run:
|
|
||||||
name: "Run SQL PgTap Tests"
|
|
||||||
command: |
|
|
||||||
make test-sql POSTGRES_DOCKER_IMAGE_BASE=docker.mirror.hashicorp.services/postgres PG_DOCKER_TAG=<< parameters.postgres-version >>
|
|
||||||
@ -1,7 +0,0 @@
|
|||||||
executor: go-machine-medium
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- run:
|
|
||||||
name: "Trigger Merge to Downstream"
|
|
||||||
command: |
|
|
||||||
./scripts/trigger-merge-to-downstream ${CIRCLE_BRANCH}
|
|
||||||
@ -1,9 +0,0 @@
|
|||||||
jobs:
|
|
||||||
- build
|
|
||||||
- test-api
|
|
||||||
- test-sdk
|
|
||||||
- test-sql:
|
|
||||||
matrix:
|
|
||||||
parameters:
|
|
||||||
postgres-version: ["latest", "11-alpine", "12-alpine", "13-alpine"]
|
|
||||||
- make-gen-deltas
|
|
||||||
@ -1,7 +0,0 @@
|
|||||||
jobs:
|
|
||||||
- trigger-merge-to-downstream:
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
only:
|
|
||||||
- main
|
|
||||||
- /release\/.*/
|
|
||||||
@ -1,45 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
# Check .circleci/config.yml is up to date and valid, and that all changes are
|
|
||||||
# included together in this commit.
|
|
||||||
|
|
||||||
# Fail early if we accidentally used '.yaml' instead of '.yml'
|
|
||||||
if ! git diff --name-only --cached --exit-code -- '.circleci/***.yaml'; then
|
|
||||||
echo "ERROR: File(s) with .yaml extension detected. Please rename them .yml instead."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Succeed early if no changes to yml files in .circleci/ are currently staged.
|
|
||||||
# make ci-verify is slow so we really don't want to run it unnecessarily.
|
|
||||||
if git diff --name-only --cached --exit-code -- '.circleci/***.yml'; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Make sure to add no explicit output before this line, as it would just be noise
|
|
||||||
# for those making non-circleci changes.
|
|
||||||
echo "==> Verifying config changes in .circleci/"
|
|
||||||
echo "--> OK: All files are .yml not .yaml"
|
|
||||||
|
|
||||||
# Ensure commit includes _all_ files in .circleci/
|
|
||||||
# So not only are the files up to date, but we are also committing them in one go.
|
|
||||||
if ! git diff --name-only --exit-code -- '.circleci/***.yml'; then
|
|
||||||
echo "ERROR: Some .yml diffs in .circleci/ are staged, others not."
|
|
||||||
echo "Please commit the entire .circleci/ directory together, or omit it altogether."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Even untracked yml or yaml files will get baked into the output.
|
|
||||||
# This is a loose check on _any_ untracked files in .circleci/ for simplicity.
|
|
||||||
if [ -n "$(git ls-files --others --exclude-standard '.circleci/')" ]; then
|
|
||||||
echo "ERROR: You have untracked files in .circleci/ please add or delete them."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "--> OK: All .yml files in .circleci are staged."
|
|
||||||
if ! make -C .circleci ci-verify; then
|
|
||||||
echo "ERROR: make ci-verify failed"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo "--> OK: make ci-verify succeeded."
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
/.circleci/config/@build-release.yml
|
|
||||||
/packagespec.mk linguist-generated
|
|
||||||
@ -1,24 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
BRANCH=${1:="main"}
|
|
||||||
|
|
||||||
if [[ -z "${DOWNSTREAM_SLUG}" ]]; then
|
|
||||||
echo "skipping, no downstream"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -z "${CIRCLE_REPOSITORY_URL}" ]]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "${CIRCLE_REPOSITORY_URL}" == *"boundary-${DOWNSTREAM_SLUG}"* ]]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -z ${CIRCLE_CI_DOWNSTREAM_TOK} ]]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
curl -u "${CIRCLE_CI_DOWNSTREAM_TOK}:" \
|
|
||||||
-d "build_parameters[CIRCLE_JOB]=merge-from-upstream" \
|
|
||||||
"https://circleci.com/api/v1.1/project/github/hashicorp/boundary-${DOWNSTREAM_SLUG}/tree/${BRANCH}"
|
|
||||||
Loading…
Reference in new issue