-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
85 lines (75 loc) · 2.74 KB
/
Makefile
File metadata and controls
85 lines (75 loc) · 2.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# =============================================================================
# devenvmgr/interpreters - Makefile
# =============================================================================
IMAGE_NAME := ghcr.io/devenvmgr/interpreters
VERSION := $(shell date +%y%m)
COMMIT := $(shell git rev-parse --short HEAD 2>/dev/null || echo "unknown")
.PHONY: build build-test test shell push clean info help
# Default target
help:
@echo "devenvmgr/interpreters - Build targets"
@echo ""
@echo " make build Build the Docker image"
@echo " make build-test Build and run basic tests"
@echo " make test Run interpreter tests"
@echo " make shell Start interactive shell"
@echo " make push Push image to registry"
@echo " make clean Remove local images"
@echo " make info Show image information"
@echo ""
# Build the image
build:
docker build -t $(IMAGE_NAME):latest \
-t $(IMAGE_NAME):$(VERSION) \
-t $(IMAGE_NAME):$(COMMIT) \
--build-arg INTERPRETERS_VERSION=$(VERSION) \
.
# Build and test
build-test: build test
# Run tests
test:
@echo "=== Testing JavaScript/TypeScript ==="
docker run --rm $(IMAGE_NAME):latest node --version
docker run --rm $(IMAGE_NAME):latest npm --version
docker run --rm $(IMAGE_NAME):latest bun --version
docker run --rm $(IMAGE_NAME):latest deno --version
@echo ""
@echo "=== Testing Python ==="
docker run --rm $(IMAGE_NAME):latest python3 --version
docker run --rm $(IMAGE_NAME):latest pip3 --version
@echo ""
@echo "=== Testing Ruby ==="
docker run --rm $(IMAGE_NAME):latest ruby --version
docker run --rm $(IMAGE_NAME):latest bundler --version
@echo ""
@echo "=== Testing PHP ==="
docker run --rm $(IMAGE_NAME):latest php --version
docker run --rm $(IMAGE_NAME):latest composer --version
@echo ""
@echo "=== Testing Other Languages ==="
docker run --rm $(IMAGE_NAME):latest perl -v | head -2
docker run --rm $(IMAGE_NAME):latest lua5.4 -v
docker run --rm $(IMAGE_NAME):latest R --version | head -1
docker run --rm $(IMAGE_NAME):latest julia --version
docker run --rm $(IMAGE_NAME):latest elixir --version
docker run --rm $(IMAGE_NAME):latest ghc --version
@echo ""
@echo "=== Testing Static Site Generators ==="
docker run --rm $(IMAGE_NAME):latest hugo version
docker run --rm $(IMAGE_NAME):latest jekyll --version
@echo ""
@echo "=== All tests passed ==="
# Interactive shell
shell:
docker run --rm -it -v $(PWD):/workspace $(IMAGE_NAME):latest
# Push to registry
push:
docker push $(IMAGE_NAME):latest
docker push $(IMAGE_NAME):$(VERSION)
docker push $(IMAGE_NAME):$(COMMIT)
# Clean up
clean:
docker rmi $(IMAGE_NAME):latest $(IMAGE_NAME):$(VERSION) $(IMAGE_NAME):$(COMMIT) 2>/dev/null || true
# Show image info
info:
docker run --rm $(IMAGE_NAME):latest --info