summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Shreve <j.a.shreve@gmail.com>2021-07-17 15:20:49 -0400
committerGitHub <noreply@github.com>2021-07-17 15:20:49 -0400
commitfe049ced7824b28226e7e30a9bba579c08b23fc4 (patch)
tree4b9a3e7b0d637f690d69bfe6cf916a266be08d6c
parentf4a63717c4eaaffd0fb143da0b44aca313c8ea96 (diff)
parent7e65e218b771625ab5d56fc5963d1f67e8bd42fd (diff)
Merge pull request #9 from rpanfili/makefile_pipeline
add Makefile pipeline.
-rw-r--r--.github/workflows/release.yaml30
-rw-r--r--Makefile52
2 files changed, 82 insertions, 0 deletions
diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml
new file mode 100644
index 0000000..d308444
--- /dev/null
+++ b/.github/workflows/release.yaml
@@ -0,0 +1,30 @@
+---
+name: "Dactyl keyboard"
+
+on:
+ push:
+ branches:
+ - master
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ timeout-minutes: 10
+ name: "Build artifacts and publish Release"
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2
+ - uses: satackey/action-docker-layer-caching@v0.0.11
+ continue-on-error: true
+ - name: Clean up
+ run: rm -r things/*
+ - name: Build
+ run: make build
+ - name: Release
+ uses: softprops/action-gh-release@v1
+ with:
+ draft: false
+ files: things/*
+ tag_name: v${{ github.run_number }}
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..4419763
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,52 @@
+#SHELL := /bin/sh
+
+mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
+current_dir := $(dir $(mkfile_path))
+
+source_dir := ${current_dir}"src"
+artifact_dir := ${current_dir}"things"
+
+DOCKER_CMD := "docker"
+.DEFAULT_GOAL := help
+
+help: ## Will print this help.
+ @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
+.PHONY: help
+
+.DELETE_ON_ERROR:
+
+build: build-container config build-models ## Build everything. Executes the complete pipeline.
+ @echo "\nAll done"
+.PHONY: build
+
+check-requirements: # private
+ @if ! command -v ${DOCKER_CMD} %> /dev/null; then \
+ echo "Docker executable not found (\`${DOCKER_CMD}\`)." && \
+ exit 1; \
+ fi
+.PHONY: check-requirements
+
+build-container: check-requirements ## Build docker container.
+ @echo "\nBuilding container..\n" && \
+ ${DOCKER_CMD} build -t dactyl-keyboard -f docker/Dockerfile . && \
+ echo "Done"
+.PHONY: build-container
+
+config: check-requirements ## Generate configuration.
+ @echo "\nGenerate configuration..\n" && \
+ ${DOCKER_CMD} run --rm --name DM-config -v ${source_dir}:/app/src -v ${artifact_dir}:/app/things dactyl-keyboard python3 -i generate_configuration.py && \
+ echo "Done"
+.PHONY: config
+
+build-models: check-requirements ## Build models.
+ @echo "\nGenerate models..\n" && \
+ cd ${current_dir} && \
+ ${DOCKER_CMD} run --rm --name DM-run -v ${source_dir}:/app/src -v ${artifact_dir}:/app/things dactyl-keyboard python3 -i dactyl_manuform.py && \
+ echo "Done"
+.PHONY: config
+
+shell: check-requirements ## Open an interactive shell inside a container.
+ @${DOCKER_CMD} run --rm -it --name DM-shell -v "src:/app/src" -v "things:/app/things" dactyl-keyboard bash && \
+ echo "\nBye!"
+.PHONY: shell
+