Skip to content
This repository was archived by the owner on May 10, 2024. It is now read-only.

Commit a3e01e4

Browse files
author
B&R
committed
refactor: Extract environment setup int env.mk as a preparation for making it a part of CI
1 parent 595603a commit a3e01e4

File tree

4 files changed

+61
-36
lines changed

4 files changed

+61
-36
lines changed

.env

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
ENV_CLUSTER_NAME=rkt
2+
ENV_NS=backups
3+
ENV_APP_SVC=server-backup-repository-server
4+
ENV_PORT_FORWARD=8050:8080

.github/workflows/test.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,15 @@ jobs:
2929

3030
- name: Test
3131
run: "make test"
32-
if: "!contains(github.event.head_commit.message, 'test skip')"
32+
if: "!contains(github.event.head_commit.message, '!test skip')"
3333

3434
- name: Convert coverage to lcov format
3535
uses: jandelgado/[email protected]
36-
if: "!contains(github.event.head_commit.message, 'test skip')"
36+
if: "!contains(github.event.head_commit.message, '!test skip')"
3737

3838
- name: Coveralls
3939
uses: coverallsapp/[email protected]
40-
if: "!contains(github.event.head_commit.message, 'test skip')"
40+
if: "!contains(github.event.head_commit.message, '!test skip')"
4141
with:
4242
github-token: ${{ secrets.github_token }}
4343
path-to-lcov: coverage.lcov
@@ -48,7 +48,7 @@ jobs:
4848

4949
- name: Create Arch Linux package to check if PKGBUILD works
5050
51-
if: "!contains(github.event.head_commit.message, 'pkg skip')"
51+
if: "!contains(github.event.head_commit.message, '!pkg skip')"
5252
with:
5353
target: 'pkgbuild'
5454
pkgname: './'

Makefile

Lines changed: 5 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
include env.mk
2+
13
SUDO=
24

35
.EXPORT_ALL_VARIABLES:
@@ -11,42 +13,13 @@ build:
1113
test: ## Unit tests
1214
go test -v ./... -covermode=count -coverprofile=coverage.out
1315

14-
integration-test: prepare-tools skaffold-deploy _pytest ## End-To-End tests with Kubernetes
16+
integration-test: prepare-tools _prepare-env _pytest ## End-To-End tests with Kubernetes
1517
_pytest: ## Shortcut for E2E tests without setting up the environment
1618
pipenv sync
1719
pipenv run pytest -s
1820

19-
k3d: prepare-tools
20-
(${SUDO} docker ps | grep k3d-bmt-server-0 > /dev/null 2>&1) || ${SUDO} k3d cluster create bmt --registry-create bmt-registry:0.0.0.0:5000 --agents 1 -p "30080:30080@agent:0" -p "30081:30081@agent:0" -p "30050:30050@agent:0"
21-
k3d kubeconfig merge bmt
22-
kubectl create ns backups || true
23-
cat /etc/hosts | grep "bmt-registry" > /dev/null || (sudo /bin/bash -c "echo '127.0.0.1 bmt-registry' >> /etc/hosts")
24-
25-
prepare-tools:
26-
mkdir -p .build
27-
# skaffold
28-
@test -f ./.build/skaffold || (curl -sL https://storage.googleapis.com/skaffold/releases/v2.0.0/skaffold-linux-amd64 --output ./.build/skaffold && chmod +x ./.build/skaffold)
29-
# kubectl
30-
@test -f ./.build/kubectl || (curl -sL https://dl.k8s.io/release/v1.25.0/bin/linux/amd64/kubectl --output ./.build/kubectl && chmod +x ./.build/kubectl)
31-
# k3d
32-
@test -f ./.build/k3d || (curl -sL https://github.com/k3d-io/k3d/releases/download/v5.4.6/k3d-linux-amd64 --output ./.build/k3d && chmod +x ./.build/k3d)
33-
# helm
34-
@test -f ./.build/helm || (curl -sL https://get.helm.sh/helm-v3.10.2-linux-amd64.tar.gz --output /tmp/helm.tar.gz && tar xf /tmp/helm.tar.gz -C /tmp && mv /tmp/linux-amd64/helm ./.build/helm && chmod +x ./.build/helm)
35-
# kubens
36-
@test -f ./.build/kubens || (curl -sL https://raw.githubusercontent.com/ahmetb/kubectx/master/kubens --output ./.build/kubens && chmod +x ./.build/kubens)
37-
38-
skaffold-deploy: prepare-tools
39-
skaffold deploy -p deps
40-
skaffold build -p app --tag e2e --default-repo bmt-registry:5000 --push --insecure-registry bmt-registry:5000 --disable-multi-platform-build=true --detect-minikube=false --cache-artifacts=false
41-
skaffold deploy -p app --tag e2e --assume-yes=true --default-repo bmt-registry:5000
42-
43-
export KUBECONFIG=~/.k3d/kubeconfig-bmt.yaml; kubectl apply -f "docs/examples/" -n backups; \
44-
kubectl port-forward svc/server-backup-repository-server -n backups 8050:8080 &
45-
46-
47-
dev: ## Runs the development environment in Kubernetes
48-
skaffold deploy -p deps
49-
skaffold dev -p app --tag e2e --assume-yes=true --default-repo bmt-registry:5000 --force=true
21+
_prepare-env:
22+
kubectl apply -f "docs/examples/" -n backups
5023

5124
run:
5225
export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE; \

env.mk

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
SUDO=
2+
3+
ifneq (,$(wildcard ./.env))
4+
include .env
5+
export
6+
endif
7+
8+
# default values
9+
ENV_CLUSTER_NAME ?= "rkt"
10+
ENV_NS ?= "default"
11+
ENV_APP_SVC ?= "service-name"
12+
ENV_PORT_FORWARD ?= "8050:8080"
13+
14+
15+
.EXPORT_ALL_VARIABLES:
16+
PATH = $(shell pwd)/.build:$(shell echo $$PATH)
17+
KUBECONFIG = $(shell echo "$$HOME/.k3d/kubeconfig-${ENV_CLUSTER_NAME}.yaml")
18+
19+
k3d: prepare-tools
20+
(${SUDO} docker ps | grep k3d-${ENV_CLUSTER_NAME}-server-0 > /dev/null 2>&1) || ${SUDO} k3d cluster create ${ENV_CLUSTER_NAME} --registry-create ${ENV_CLUSTER_NAME}-registry:0.0.0.0:5000 --agents 0
21+
k3d kubeconfig merge ${ENV_CLUSTER_NAME}
22+
kubectl create ns ${ENV_NS} || true
23+
cat /etc/hosts | grep "${ENV_CLUSTER_NAME}-registry" > /dev/null || (sudo /bin/bash -c "echo '127.0.0.1 ${ENV_CLUSTER_NAME}-registry' >> /etc/hosts")
24+
25+
prepare-tools: ## Installs required tools
26+
mkdir -p .build
27+
# skaffold
28+
@test -f ./.build/skaffold || (curl -sL https://storage.googleapis.com/skaffold/releases/v2.2.0/skaffold-linux-amd64 --output ./.build/skaffold && chmod +x ./.build/skaffold)
29+
# kubectl
30+
@test -f ./.build/kubectl || (curl -sL https://dl.k8s.io/release/v1.26.0/bin/linux/amd64/kubectl --output ./.build/kubectl && chmod +x ./.build/kubectl)
31+
# k3d
32+
@test -f ./.build/k3d || (curl -sL https://github.com/k3d-io/k3d/releases/download/v5.4.6/k3d-linux-amd64 --output ./.build/k3d && chmod +x ./.build/k3d)
33+
# helm
34+
@test -f ./.build/helm || (curl -sL https://get.helm.sh/helm-v3.11.2-linux-amd64.tar.gz --output /tmp/helm.tar.gz && tar xf /tmp/helm.tar.gz -C /tmp && mv /tmp/linux-amd64/helm ./.build/helm && chmod +x ./.build/helm)
35+
# kubens
36+
@test -f ./.build/kubens || (curl -sL https://raw.githubusercontent.com/ahmetb/kubectx/master/kubens --output ./.build/kubens && chmod +x ./.build/kubens)
37+
38+
skaffold-deploy: prepare-tools ## Deploys app with dependencies using Skaffold
39+
skaffold deploy -p deps
40+
skaffold build -p app --tag e2e --default-repo ${ENV_CLUSTER_NAME}-registry:5000 --push --insecure-registry ${ENV_CLUSTER_NAME}-registry:5000 --disable-multi-platform-build=true --detect-minikube=false --cache-artifacts=false
41+
skaffold deploy -p app --tag e2e --assume-yes=true --default-repo ${ENV_CLUSTER_NAME}-registry:5000
42+
43+
export KUBECONFIG=~/.k3d/kubeconfig-${ENV_CLUSTER_NAME}.yaml
44+
kubectl port-forward svc/${ENV_APP_SVC} -n ${ENV_NS} ${ENV_PORT_FORWARD} &
45+
46+
dev: ## Runs the development environment in Kubernetes
47+
skaffold deploy -p deps
48+
skaffold dev -p app --tag e2e --assume-yes=true --default-repo ${ENV_CLUSTER_NAME}-registry:5000 --force=true

0 commit comments

Comments
 (0)