diff options
author | Joshua Shreve <j.a.shreve@gmail.com> | 2021-07-17 15:20:49 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-17 15:20:49 -0400 |
commit | fe049ced7824b28226e7e30a9bba579c08b23fc4 (patch) | |
tree | 4b9a3e7b0d637f690d69bfe6cf916a266be08d6c | |
parent | f4a63717c4eaaffd0fb143da0b44aca313c8ea96 (diff) | |
parent | 7e65e218b771625ab5d56fc5963d1f67e8bd42fd (diff) |
Merge pull request #9 from rpanfili/makefile_pipeline
add Makefile pipeline.
-rw-r--r-- | .github/workflows/release.yaml | 30 | ||||
-rw-r--r-- | Makefile | 52 |
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 + |