From cbe266ed763fdcf17ce317836577c984c017ba2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tam=C3=A1s=20G=C3=A9rczei?= Date: Mon, 16 Mar 2020 19:34:15 +0100 Subject: [PATCH] crude and inflexible prototype --- alpine-builder.yaml | 141 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 alpine-builder.yaml diff --git a/alpine-builder.yaml b/alpine-builder.yaml new file mode 100644 index 0000000..b3dacf5 --- /dev/null +++ b/alpine-builder.yaml @@ -0,0 +1,141 @@ +--- +- name: create an Alpine build container + hosts: localhost + gather_facts: false + collections: + - containers.podman + vars: + alpine_version: 3.11.3 + tasks: + - name: check container + podman_container_info: + name: alpine-builder + register: container_info + + - name: create container + block: + - name: ensure image is present and fresh + podman_image: + name: docker.io/library/alpine + tag: "{{ alpine_version }}" + force: yes + + - podman_container: + name: alpine-builder + image: "alpine:{{ alpine_version }}" + tty: yes + interactive: yes + register: container + when: "'no such container' in container_info.stderr" + + - name: register container + add_host: + name: alpine-builder + ansible_connection: podman + changed_when: false + + - name: install Python + block: + - raw: apk update + - raw: apk add python3 + delegate_to: alpine-builder + when: container is changed + +- name: configure a build environment + hosts: alpine-builder + become_method: su + become_user: tgerczei + tasks: + - name: update system + apk: + update_cache: yes + upgrade: yes + + - name: install Alpine SDK + package: + name: alpine-sdk + + - name: configure build system + lineinfile: + path: /etc/abuild.conf + line: "{{ config_line }}" + insertafter: "^#{{ config_line.split('=')[0] }}.*" + loop: "{{ build_config }}" + loop_control: + loop_var: config_line + label: "{{ config_line.split('=')[0] }}" + vars: + build_config: + - PACKAGER="GERCZEI, Tamas " + - MAINTAINER="$PACKAGER" + + - name: ensure user exists + user: + name: tgerczei + shell: /bin/sh + groups: + - wheel + - abuild + append: yes + + - name: obtain aports tree + block: + - name: configure git + git_config: + name: "{{ item.name }}" + value: "{{ item.value }}" + scope: global + loop: "{{ git_settings }}" + vars: + git_settings: + - name: user.email + value: tamas@gerczei.eu + - name: user.name + value: GERCZEI, Tamas + + - name: clone aports repository + git: + repo: git://git.alpinelinux.org/aports + dest: /home/tgerczei/aports + update: no + register: repo + + - name: generate cryptographic key for the build system + command: abuild-keygen -qai + args: + creates: /home/tgerczei/.abuild + + become: yes + +- name: build a Gitea package + hosts: alpine-builder + become_method: su + become_user: tgerczei + tasks: + - name: build and fetch package + block: + - name: modify APKBUILD + copy: + src: /home/tgerczei/alpine-gitea/APKBUILD + dest: /home/tgerczei/aports/community/gitea/ + register: apkbuild + when: repo is changed + + - command: abuild -q checksum + args: + chdir: /home/tgerczei/aports/community/gitea + when: apkbuild is changed + + - name: build package + command: abuild -qrc + args: + chdir: /home/tgerczei/aports/community/gitea + creates: /home/tgerczei/packages/community/x86_64 + + - name: obtain package + fetch: + src: /home/tgerczei/packages/community/x86_64/gitea-1.11.3-r0.apk + dest: /home/tgerczei/alpine-gitea/packages/ + flat: yes + + become: yes