Skip to content

Commit

Permalink
Updates on files
Browse files Browse the repository at this point in the history
Added changeset on workflow
  • Loading branch information
Alexander Rogalskiy committed Aug 31, 2021
1 parent a69993d commit f4001c9
Show file tree
Hide file tree
Showing 21 changed files with 220 additions and 35 deletions.
File renamed without changes.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# Local files
# Env local files
.env
vercel_token.txt

# BlueJ files
Expand Down
2 changes: 1 addition & 1 deletion .husky/prepare-commit-msg
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

git cz --hook --non-interactive --type=feat --subject="added new features" || true
exec < /dev/tty && git cz --hook --non-interactive --type=feat --subject="added new features" || true
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
##
## ---- Base OS layer ----
## docker build -t <container_tag> --build-arg IMAGE_SOURCE=node IMAGE_TAG=lts --build-arg TOKEN=<token> .
## docker build -t styled-screenshots --build-arg IMAGE_SOURCE=node --build-arg IMAGE_TAG=lts --build-arg VERCEL_TOKEN=<token> .
##
ARG IMAGE_SOURCE=node
ARG IMAGE_TAG=lts
Expand Down
56 changes: 56 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Since we rely on paths relative to the makefile location, abort if make isn't being run from there.
$(if $(findstring /,$(MAKEFILE_LIST)),$(error Please only invoke this makefile from the directory it resides in))

IMAGE ?= styled-proverbs
TAG ?= latest

UTILS := docker
# Make sure that all required utilities can be located.
UTIL_CHECK := $(or $(shell which $(UTILS) >/dev/null && echo 'ok'),$(error Did you forget to install `docker` after cloning the repo? At least one of the required supporting utilities not found: $(UTILS)))

# Default target (by virtue of being the first non '.'-prefixed in the file).
.PHONY: _no-target-specified
_no-target-specified:
$(error Please specify the target to make - `make list` shows targets)

# Lists all targets defined in this makefile.
.PHONY: list
list:
@$(MAKE) -pRrn : -f $(MAKEFILE_LIST) 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | command grep -v -e '^[^[:alnum:]]' -e '^$@$$command ' | sort

# Ensure docker token command.
.PHONY: _ensure-token
_ensure-token:
ifndef TOKEN
$(error Please invoke with `make TOKEN=<token> docker-build`)
endif

# Ensures that the git workspace is clean.
.PHONY: _ensure-clean
_ensure-clean:
@[ -z "$$((git status --porcelain --untracked-files=no || echo err) | command grep -v 'CHANGELOG.md')" ] || { echo "Workspace is not clean; please commit changes first." >&2; exit 2; }

# Run docker build command.
.PHONY: docker-build
docker-build: _ensure-token _ensure-clean
docker build -f Dockerfile -t $(IMAGE):$(TAG) --build-arg VERCEL_TOKEN=$(TOKEN) .

# Run docker start command.
.PHONY: docker-start
docker-start:
docker-compose -f docker-compose.yml up -d

# Run docker stop command.
.PHONY: docker-stop
docker-stop:
docker-compose -f docker-compose.yml down -v --remove-orphans

# Run tilt start command.
.PHONY: tilt-start
tilt-start:
tilt up

# Run tilt stop command.
.PHONY: tilt-stop
tilt-stop:
tilt down --delete-namespaces
4 changes: 2 additions & 2 deletions Tiltfile
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@ namespace_create('webapp')
conftest(path='k8s/backend/deployment.yaml', namespace='main')
# k8s_yaml('k8s/backend/deployment.yaml')
k8s_yaml(namespace_inject(read_file('k8s/backend/deployment.yaml'), 'webapp'), allow_duplicates=False)
k8s_resource('backend', port_forwards=3000, resource_deps=['conftest'])
k8s_resource('backend-screenshots-v1', port_forwards=3000, resource_deps=['conftest'])

# Add a live_update rule to our docker_build
congrats = "🎉 Congrats, you ran a live_update! 🎉"
docker_build_with_restart('styled-screenshots', '.', build_args={'IMAGE_SOURCE': 'node', 'IMAGE_TAG': 'lts', 'VERCEL_TOKEN': ''},
docker_build('styled-screenshots', '.', build_args={'IMAGE_SOURCE': 'node', 'IMAGE_TAG': 'lts', 'VERCEL_TOKEN': ''},
dockerfile='./Dockerfile',
entrypoint=['npm', 'run', 'develop:docker'],
live_update=[
Expand Down
120 changes: 103 additions & 17 deletions k8s/backend/deployment.yaml
Original file line number Diff line number Diff line change
@@ -1,16 +1,71 @@
apiVersion: v1
kind: Secret
metadata:
name: vercel-credentials
namespace: webapp
labels:
app.kubernetes.io/name: backend-screenshots
app.kubernetes.io/instance: styled-screenshots
app.kubernetes.io/version: v1
app.kubernetes.io/component: function
app.kubernetes.io/part-of: serverless
app.kubernetes.io/managed-by: tilt
type: Opaque
data:
token: YAa5Oepb
---
apiVersion: v1
kind: ConfigMap
metadata:
name: backend-screenshots-configmap
namespace: webapp
labels:
app.kubernetes.io/name: backend-screenshots
app.kubernetes.io/instance: styled-screenshots
app.kubernetes.io/version: v1
app.kubernetes.io/component: function
app.kubernetes.io/part-of: serverless
app.kubernetes.io/managed-by: tilt
data:
SERVER_PORT: '3000'
APP_NAME: styled-screenshots
---
apiVersion: v1
kind: Service
metadata:
name: backend-screenshots
namespace: webapp
labels:
app.kubernetes.io/name: backend-screenshots
app.kubernetes.io/instance: styled-screenshots
app.kubernetes.io/version: v1
app.kubernetes.io/component: function
app.kubernetes.io/part-of: serverless
app.kubernetes.io/managed-by: tilt
spec:
type: ClusterIP
clusterIP: None
sessionAffinity: None
ports:
- name: http
protocol: TCP
port: 3000
selector:
app.kubernetes.io/name: backend-screenshots
app.kubernetes.io/version: v1
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: backend
name: backend-screenshots-v1
namespace: webapp
labels:
app.kubernetes.io/name: backend
app.kubernetes.io/name: backend-screenshots
app.kubernetes.io/instance: styled-screenshots
app.kubernetes.io/version: '0.0.0'
app.kubernetes.io/version: v1
app.kubernetes.io/component: function
app.kubernetes.io/part-of: serverless
app.kubernetes.io/managed-by: tilt

spec:
replicas: 1
minReadySeconds: 60
Expand All @@ -23,28 +78,43 @@ spec:
type: RollingUpdate
selector:
matchLabels:
app: backend
app.kubernetes.io/name: backend-screenshots
app.kubernetes.io/version: v1
template:
metadata:
labels:
app: backend
app.kubernetes.io/name: backend-screenshots
app.kubernetes.io/version: v1
annotations:
scheduler.alpha.kubernetes.io/critical-pod: ''
spec:
dnsPolicy: Default
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
terminationGracePeriodSeconds: 30
tolerations:
- key: 'CriticalAddonsOnly'
operator: 'Exists'
# tolerations:
# - key: "node-priority"
# operator: "Equal"
# value: "infra"
# effect: "NoExecute"
# nodeSelector:
# node-priority: infra
containers:
- name: backend
- name: backend-screenshots
image: styled-screenshots
imagePullPolicy: IfNotPresent
terminationMessagePath: /etc/logs/termination.log
terminationMessagePolicy: File
ports:
- name: http
containerPort: 3000
protocol: TCP
env:
- name: TOKEN
valueFrom:
secretKeyRef:
name: vercel-credentials
key: token
- name: WATCH_NAMESPACE
valueFrom:
fieldRef:
Expand All @@ -53,16 +123,32 @@ spec:
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: USER_AGENT
value: "k8s-agent $(WATCH_NAMESPACE)/$(POD_NAME)"
- name: LOG_DIR
value: "/tmp/logs"
volumeMounts:
- name: data
mountPath: /data
mountPath: "/data"
- name: data-tmp
mountPath: "/tmp"
resources:
limits:
cpu: 2000m
memory: 512Mi
requests:
cpu: 100m
memory: 32Mi
cpu: 1
memory: "2G"
ephemeral-storage: "2G"
limits:
cpu: 2
memory: "3G"
ephemeral-storage: "3G"
securityContext:
allowPrivilegeEscalation: false
allowPrivilegeEscalation: false
privileged: false
readOnlyRootFilesystem: false
runAsNonRoot: false
volumes:
- name: data
emptyDir: {}
- name: data-tmp
emptyDir: {}
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
"format": "prettier --single-quote --write **/*.ts",
"format:check": "prettier --check **/*.ts",
"format:diff": "prettier --list-different \"**/*.{js,jsx,ts,tsx,json,css,scss,md}\"",
"lint": "eslint --cache --fix --quiet --cache-location ./node_modules/.cache/ --format codeframe --ext js,ts .",
"lint": "eslint --format './node_modules/eslint-friendly-formatter/index.js' --cache --fix --quiet --cache-location ./node_modules/.cache/ --format codeframe --ext js,ts .",
"lint:clean": "del-cli .eslintcache",
"lint:json": "jsonlint ./package.json --quiet",
"lint:docker": "dockerfile_lint -r default_rules.yaml",
Expand All @@ -38,6 +38,7 @@
"prepare": "del-cli coverage .cache",
"postpublish": "git push && git push --tags",
"setup": "yarn",
"name": "node ./scripts/rootAppName.js",
"semantic-release": "semantic-release",
"gitlog": "node ./scripts/changelog.js",
"bump:patch": "npm version patch --no-git-tag-version",
Expand Down Expand Up @@ -96,6 +97,7 @@
"eslint-plugin-prettier": "^3.4.0",
"eslint-plugin-spellcheck": "0.0.19",
"eslint-plugin-unicorn": "^34.0.1",
"eslint-friendly-formatter": "^4.0.1",
"git-cz": "^4.7.6",
"gradient-string": "^1.2.0",
"husky": "^7.0.1",
Expand Down
3 changes: 2 additions & 1 deletion policy/deny.rego
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ name = input.metadata.name

deny[msg] {
input.kind == "Deployment"
not input.spec.selector.matchLabels.app
not input.spec.selector.matchLabels.app.kubernetes.io/name
# not input.spec.selector.matchLabels.app

msg := "Containers must provide app label for pod selectors"
}
Expand Down
4 changes: 2 additions & 2 deletions scripts/docker-build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

set -e

cd ..
cd "$(dirname "$0")" || exit 1

# Build docker images
GIT_SHA=$(git rev-parse HEAD)
docker build -f Dockerfile --build-arg TOKEN=$1 -t styled-screenshots -t styled-screenshots:$GIT_SHA --build-arg TOKEN=$VERCEL_TOKEN .
docker build -f Dockerfile -t styled-screenshots -t styled-quotes:$GIT_SHA --build-arg VERCEL_TOKEN=$1 .
8 changes: 8 additions & 0 deletions scripts/docker-compose-start.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/sh

set -e

cd "$(dirname "$0")" || exit 1

docker-compose -f docker-compose.yml build
docker-compose -f docker-compose.yml up -d
7 changes: 7 additions & 0 deletions scripts/docker-compose-stop.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/bin/sh

set -e

cd "$(dirname "$0")" || exit 1

docker-compose -f docker-compose.yml down -v --remove-orphans
6 changes: 6 additions & 0 deletions scripts/installHusky.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
const {exec} = require('child_process');

exec(`husky install `, (err, stdout, stderr) => {
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
});
12 changes: 12 additions & 0 deletions scripts/rootAppName.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
const packageJson = require('../package.json');

const moduleName = `${/[^/]*$/.exec(packageJson.name)[0]}_${packageJson.version.replace(/\./g, '_')}`;
const packageName = process.env.npm_package_name;

console.log(`>>> Module name: ${moduleName}`);
console.log(`>>> Package name: ${packageName}`)

module.exports = {
moduleName,
packageName
};
Loading

0 comments on commit f4001c9

Please sign in to comment.