From e4a92d0ecf55b54d5622586d6884e5cd67c85acd Mon Sep 17 00:00:00 2001 From: pips Date: Mon, 22 Sep 2025 13:31:02 +0200 Subject: [PATCH] feat: external project build template --- .editorconfig | 27 +++++++++++++++++++++++++ .woodpecker/build.yaml | 40 ++++++++++++++++++++++++++++++++++++++ Dockerfile.builder | 8 ++++++++ Makefile | 16 +++++++++++++++ README.md | 6 ++++++ deb-package/DEBIAN/control | 12 ++++++++++++ 6 files changed, 109 insertions(+) create mode 100644 .editorconfig create mode 100644 .woodpecker/build.yaml create mode 100644 Dockerfile.builder create mode 100644 Makefile create mode 100644 README.md create mode 100644 deb-package/DEBIAN/control diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..6028193 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,27 @@ +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true +indent_style = space +indent_size = 4 + +[COMMIT_EDITMSG] +indent_size = 4 +indent_style = space +max_line_length = 80 + +[control] +trim_trailing_whitespace = false + +[Makefile] +indent_style = tab + +[*.md] +max_line_length = 80 + +[*.{yml,yaml}] +indent_size = 2 + +[*.patch] +trim_trailing_whitespace = false diff --git a/.woodpecker/build.yaml b/.woodpecker/build.yaml new file mode 100644 index 0000000..f5c9104 --- /dev/null +++ b/.woodpecker/build.yaml @@ -0,0 +1,40 @@ +when: + - event: push + branch: ${CI_REPO_DEFAULT_BRANCH} + - event: pull_request + +steps: + - name: builder + image: woodpeckerci/plugin-kaniko:1.3.0 + when: + - path: Dockerfile.builder + event: push + branch: ${CI_REPO_DEFAULT_BRANCH} + settings: + registry: ${CI_FORGE_URL##https://} + repo: ${CI_REPO_OWNER}/${CI_REPO_NAME}-builder + dockerfile: Dockerfile.builder + username: CIBot + password: + from_secret: package_token + - name: compile + image: ${CI_FORGE_URL##https://}/${CI_REPO_OWNER}/${CI_REPO_NAME}-builder + when: + - event: push + branch: ${CI_REPO_DEFAULT_BRANCH} + - event: pull_request + commands: + - make compile + - name: dpkg + image: ubuntu:24.04 + when: + - event: push + branch: ${CI_REPO_DEFAULT_BRANCH} + depends_on: compile + commands: + - make dpkg + environment: + password: + from_secret: package_token + commit_abbrev: ${CI_COMMIT_SHA:0:7} + diff --git a/Dockerfile.builder b/Dockerfile.builder new file mode 100644 index 0000000..5addab9 --- /dev/null +++ b/Dockerfile.builder @@ -0,0 +1,8 @@ +# use specific image if relevant (rust, golang) +FROM ubuntu:24.04 + +RUN apt-get update && \ + apt-get install curl \ + # other packages to build \ + + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..254151d --- /dev/null +++ b/Makefile @@ -0,0 +1,16 @@ + +package = mypackage.deb + +.PHONY: compile +compile: + cd upstream && echo compile + +.PHONY: dpkg +dpkg: + make -p deb-packagee/usr/bin/ + cp upstream/bin deb-package/usr/bin/ + chmod -R o-w deb-package/ + sed -i "s|%date%|`date +%Y%m%d`|g" deb-package/DEBIAN/control + sed -i "s|%hash%|$(commit_abbrev)|g" deb-package/DEBIAN/control + dpkg-deb --build deb-package/ $(package) + @curl --user CIBot:$(PASSWORD) $(package) $(CI_FORGE_URL)/api/packages/$(CI_REPO_OWNER)/debian/pool/noble/main/upload diff --git a/README.md b/README.md new file mode 100644 index 0000000..84455ed --- /dev/null +++ b/README.md @@ -0,0 +1,6 @@ +# Template for external project package building + +- git submodule add upstream +- Makefile: change package name & compile / dpkg target instructions +- Dockerfile.builder: required deb packages / base image +- deb-package/DEBIAN/control: Package name, depends, conflict & description diff --git a/deb-package/DEBIAN/control b/deb-package/DEBIAN/control new file mode 100644 index 0000000..280352a --- /dev/null +++ b/deb-package/DEBIAN/control @@ -0,0 +1,12 @@ +Package: mypackage-main +Version: 0.0.1~git%date%.%hash%-1 +Section: base +Priority: optional +Architecture: amd64 +Maintainer: pips +Homepage: https://example.com +Suggests: suggeted-packages +Depends: depends (>= X.Y.Z), packages (>= X.Y) +Conflicts: package-from-official-repo +Description: Description of mypackage + Auto packaging of mypackage following main dev branch