Some checks failed
CI / Run tests and lints (push) Failing after 29s
CI / Build CLI docs (push) Has been skipped
CI / Run Playwright end-to-end tests (mysql) (push) Failing after 3s
CI / Run Playwright end-to-end tests (postgres) (push) Failing after 2s
CI / Run Playwright end-to-end tests (sqlite) (push) Failing after 3s
CodeQL / Analyze (go) (push) Failing after 4s
CodeQL / Analyze (javascript) (push) Failing after 3s
Docker Image Scanners / scanners (push) Failing after 4s
Synchronize Issue Labels / Synchronize Issue Labels (push) Has been skipped
CI / Run end-to-end tests (postgres) (push) Failing after 19s
CI / Run end-to-end tests (sqlite) (push) Failing after 2s
CI / Run Playwright end-to-end tests (cockroach) (push) Failing after 2s
CI / Draft newsletter (push) Has been skipped
CI / Generate release (push) Has been skipped
CI / Pending approval Slack notification (push) Has been skipped
CI / Send newsletter (push) Has been skipped
215 lines
7.2 KiB
Makefile
215 lines
7.2 KiB
Makefile
SHELL=/usr/bin/env bash -o pipefail
|
|
|
|
# EXECUTABLES = docker-compose docker node npm go
|
|
# K := $(foreach exec,$(EXECUTABLES),\
|
|
# $(if $(shell which $(exec)),some string,$(error "No $(exec) in PATH")))
|
|
|
|
export PATH := .bin:${PATH}
|
|
export PWD := $(shell pwd)
|
|
export BUILD_DATE := $(shell date -u +"%Y-%m-%dT%H:%M:%SZ")
|
|
export VCS_REF := $(shell git rev-parse HEAD)
|
|
export QUICKSTART_OPTIONS ?=
|
|
export IMAGE_TAG := $(if $(IMAGE_TAG),$(IMAGE_TAG),latest)
|
|
|
|
.bin/clidoc:
|
|
echo "deprecated usage, use docs/cli instead"
|
|
go build -o .bin/clidoc ./cmd/clidoc/.
|
|
|
|
.PHONY: docs/cli
|
|
docs/cli:
|
|
go run ./cmd/clidoc/. .
|
|
|
|
.PHONY: docs/api
|
|
docs/api:
|
|
npx @redocly/openapi-cli preview-docs spec/api.json
|
|
|
|
.PHONY: docs/swagger
|
|
docs/swagger:
|
|
npx @redocly/openapi-cli preview-docs spec/swagger.json
|
|
|
|
.bin/golangci-lint: Makefile
|
|
curl --retry 7 --retry-connrefused -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -d -b .bin v2.10.1
|
|
|
|
.bin/hydra: Makefile
|
|
bash <(curl --retry 7 --retry-connrefused https://raw.githubusercontent.com/ory/meta/master/install.sh) -d -b .bin hydra v2.2.0
|
|
|
|
.bin/ory: Makefile
|
|
curl --retry 7 --retry-connrefused https://raw.githubusercontent.com/ory/meta/master/install.sh | bash -s -- -b .bin ory v0.2.2
|
|
touch -a -m .bin/ory
|
|
|
|
.bin/buf: Makefile
|
|
curl -sSL \
|
|
"https://github.com/bufbuild/buf/releases/download/v1.39.0/buf-$(shell uname -s)-$(shell uname -m).tar.gz" | \
|
|
tar -xvzf - -C ".bin/" --strip-components=2 buf/bin/buf buf/bin/protoc-gen-buf-breaking buf/bin/protoc-gen-buf-lint
|
|
touch -a -m .bin/buf
|
|
|
|
.PHONY: lint
|
|
lint: .bin/golangci-lint .bin/buf
|
|
.bin/golangci-lint run -v --timeout 10m ./...
|
|
.bin/buf lint
|
|
|
|
.PHONY: mocks
|
|
mocks:
|
|
go tool mockgen -mock_names Manager=MockLoginExecutorDependencies -package pkg -destination pkg/hook_login_executor_dependencies.go github.com/ory/kratos/selfservice loginExecutorDependencies
|
|
|
|
.PHONY: proto
|
|
proto: gen/oidc/v1/state.pb.go
|
|
|
|
gen/oidc/v1/state.pb.go: proto/oidc/v1/state.proto buf.yaml buf.gen.yaml .bin/buf
|
|
.bin/buf generate
|
|
go tool goimports -w gen/
|
|
|
|
.PHONY: install
|
|
install:
|
|
go install .
|
|
|
|
.PHONY: test-resetdb
|
|
test-resetdb:
|
|
script/testenv.sh
|
|
|
|
.PHONY: test
|
|
test:
|
|
docker pull oryd/hydra:v2.2.0
|
|
go test -p 1 -count=1 -failfast $(if $(TAGS),-tags $(TAGS)) ./...
|
|
|
|
test-short:
|
|
go test -count=1 -failfast -short $(if $(TAGS),-tags $(TAGS)) ./...
|
|
|
|
.PHONY: test-coverage
|
|
test-coverage:
|
|
go test -coverprofile=coverage.out -failfast -timeout=20m ./...
|
|
|
|
.PHONY: test-coverage-next
|
|
test-coverage-next:
|
|
go test -short -failfast -timeout=20m -cover ./... --args test.gocoverdir="$$PWD/coverage"
|
|
go tool covdata percent -i=coverage
|
|
go tool covdata textfmt -i=./coverage -o coverage.new.out
|
|
|
|
# Generates the SDK
|
|
.PHONY: sdk
|
|
sdk: .bin/ory node_modules
|
|
../../.bin/swagger generate spec -m -o spec/swagger.json \
|
|
-c github.com/ory/kratos \
|
|
-c github.com/ory/x/healthx \
|
|
-c github.com/ory/x/crdbx \
|
|
-c github.com/ory/x/openapix \
|
|
-c github.com/ory/x/region
|
|
ory dev swagger sanitize ./spec/swagger.json
|
|
../../.bin/swagger validate ./spec/swagger.json
|
|
CIRCLE_PROJECT_USERNAME=ory CIRCLE_PROJECT_REPONAME=kratos \
|
|
ory dev openapi migrate \
|
|
--health-path-tags metadata \
|
|
-p https://raw.githubusercontent.com/ory/x/master/healthx/openapi/patch.yaml \
|
|
-p file://.schema/openapi/patches/meta.yaml \
|
|
-p file://.schema/openapi/patches/schema.yaml \
|
|
-p file://.schema/openapi/patches/selfservice.yaml \
|
|
-p file://.schema/openapi/patches/security.yaml \
|
|
-p file://.schema/openapi/patches/session.yaml \
|
|
-p file://.schema/openapi/patches/identity.yaml \
|
|
-p file://.schema/openapi/patches/courier.yaml \
|
|
-p file://.schema/openapi/patches/generic_error.yaml \
|
|
-p file://.schema/openapi/patches/nulls.yaml \
|
|
-p file://.schema/openapi/patches/common.yaml \
|
|
spec/swagger.json spec/api.json
|
|
|
|
rm -rf pkg/httpclient
|
|
mkdir -p pkg/httpclient/
|
|
npm run openapi-generator-cli -- generate -i "spec/api.json" \
|
|
-g go \
|
|
-o "pkg/httpclient" \
|
|
--git-user-id ory \
|
|
--git-repo-id client-go \
|
|
--git-host github.com \
|
|
--api-name-suffix "API" \
|
|
-c .schema/openapi/gen.go.yml
|
|
|
|
(cd pkg/httpclient; rm -rf go.mod go.sum test api docs)
|
|
|
|
rm -rf pkg/client-go
|
|
mkdir -p pkg/client-go/
|
|
npm run openapi-generator-cli -- generate -i "spec/api.json" \
|
|
-g go \
|
|
-o "pkg/client-go" \
|
|
--git-user-id ory \
|
|
--git-repo-id client-go \
|
|
--git-host github.com \
|
|
--api-name-suffix "API" \
|
|
-c .schema/openapi/gen.go.yml
|
|
|
|
(cd pkg/client-go; go mod edit -module github.com/ory/client-go go.mod; rm -rf test api docs; go mod tidy)
|
|
|
|
make format
|
|
|
|
.PHONY: quickstart
|
|
quickstart:
|
|
docker pull oryd/kratos:latest
|
|
docker pull oryd/kratos-selfservice-ui-node:latest
|
|
docker-compose -f quickstart.yml -f quickstart-standalone.yml up --build --force-recreate
|
|
|
|
.PHONY: quickstart-dev
|
|
quickstart-dev:
|
|
docker build -f .docker/Dockerfile-build -t oryd/kratos:latest .
|
|
docker-compose -f quickstart.yml -f quickstart-standalone.yml -f quickstart-latest.yml $(QUICKSTART_OPTIONS) up --build --force-recreate
|
|
|
|
authors: # updates the AUTHORS file
|
|
curl --retry 7 --retry-connrefused https://raw.githubusercontent.com/ory/ci/master/authors/authors.sh | env PRODUCT="Ory Kratos" bash
|
|
|
|
PRETTIER_VERSION=$(shell cat package.json | jq -r '.devDependencies["prettier"] // .dependencies["prettier"]')
|
|
|
|
# Formats the code
|
|
.PHONY: format
|
|
format: .bin/ory .bin/buf
|
|
.bin/ory dev headers copyright --exclude=gen --exclude=pkg/httpclient --exclude=pkg/client-go --exclude test/e2e/proxy/node_modules --exclude test/e2e/node_modules --exclude node_modules --exclude=oryx
|
|
go tool goimports -w -local github.com/ory .
|
|
@echo "Prettier Version: $(PRETTIER_VERSION)"
|
|
npx --package=prettier@$(PRETTIER_VERSION) prettier 'test/e2e/**/*{.ts,.js}' --write
|
|
npx --package=prettier@$(PRETTIER_VERSION) prettier '.github' --write
|
|
.bin/buf format --write
|
|
|
|
# Build local docker image
|
|
.PHONY: docker
|
|
docker:
|
|
DOCKER_BUILDKIT=1 DOCKER_CONTENT_TRUST=1 docker build -f .docker/Dockerfile-build --build-arg=COMMIT=$(VCS_REF) --build-arg=BUILD_DATE=$(BUILD_DATE) -t oryd/kratos:${IMAGE_TAG} .
|
|
|
|
.PHONY: test-e2e
|
|
test-e2e: node_modules test-resetdb kratos-config-e2e
|
|
source script/test-envs.sh
|
|
test/e2e/run.sh sqlite
|
|
test/e2e/run.sh postgres
|
|
test/e2e/run.sh cockroach
|
|
test/e2e/run.sh mysql
|
|
|
|
.PHONY: test-e2e-playwright
|
|
test-e2e-playwright: node_modules test-resetdb kratos-config-e2e
|
|
source script/test-envs.sh
|
|
test/e2e/run.sh --only-setup
|
|
(cd test/e2e; DB=memory npm run playwright)
|
|
|
|
.PHONY: test-refresh
|
|
test-refresh:
|
|
UPDATE_SNAPSHOTS=true go test -tags refresh -short ./...
|
|
|
|
.PHONY: pre-release
|
|
pre-release:
|
|
go tool yq '.services.kratos.image = "oryd/kratos:'$$DOCKER_TAG'"' -i quickstart.yml
|
|
go tool yq '.services.kratos-migrate.image = "oryd/kratos:'$$DOCKER_TAG'"' -i quickstart.yml
|
|
go tool yq '.services.kratos-selfservice-ui-node.image = "oryd/kratos-selfservice-ui-node:'$$DOCKER_TAG'"' -i quickstart.yml
|
|
|
|
.PHONY: post-release
|
|
post-release:
|
|
echo "nothing to do"
|
|
|
|
licenses: .bin/licenses node_modules # checks open-source licenses
|
|
.bin/licenses
|
|
|
|
.bin/licenses: Makefile
|
|
curl --retry 7 --retry-connrefused https://raw.githubusercontent.com/ory/ci/master/licenses/install | sh
|
|
|
|
node_modules: package-lock.json
|
|
npm ci
|
|
touch node_modules
|
|
|
|
.PHONY: kratos-config-e2e
|
|
kratos-config-e2e:
|
|
sh ./test/e2e/render-kratos-config.sh
|