155 linhas
4.2 KiB
YAML
155 linhas
4.2 KiB
YAML
---
|
|
- name: create an Alpine build container
|
|
hosts: localhost
|
|
gather_facts: false
|
|
collections:
|
|
- containers.podman
|
|
vars:
|
|
alpine_version: 3.13.1
|
|
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: "{{ user.handle }}"
|
|
vars:
|
|
user:
|
|
name: GERCZEI, Tamas
|
|
email: tamas@gerczei.eu
|
|
handle: tgerczei
|
|
build_config:
|
|
- PACKAGER="{{ user.name }} <{{ user.email }}>"
|
|
- MAINTAINER="$PACKAGER"
|
|
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] }}"
|
|
|
|
- name: ensure user exists
|
|
user:
|
|
name: "{{ user.handle }}"
|
|
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: "{{ user.email }}"
|
|
- name: user.name
|
|
value: "{{ user.name }}"
|
|
|
|
- name: clone aports repository
|
|
git:
|
|
repo: git://git.alpinelinux.org/aports
|
|
dest: "/home/{{ user.handle }}/aports"
|
|
update: no
|
|
register: repo
|
|
|
|
- name: generate cryptographic key for the build system
|
|
command: abuild-keygen -qai
|
|
args:
|
|
creates: "/home/{{ user.handle }}/.abuild"
|
|
|
|
become: yes
|
|
|
|
- name: build a package
|
|
hosts: alpine-builder
|
|
become_method: su
|
|
become_user: "{{ user.handle }}"
|
|
vars:
|
|
package:
|
|
name: community/gitea
|
|
version: 1.11.3-r0
|
|
user:
|
|
name: GERCZEI, Tamas
|
|
email: tamas@gerczei.eu
|
|
handle: tgerczei
|
|
tasks:
|
|
- name: build and fetch package
|
|
block:
|
|
- name: modify APKBUILD
|
|
copy:
|
|
src: "/home/{{ user.handle }}/alpine-{{ package.name | basename }}/APKBUILD_{{ package.version }}"
|
|
dest: "/home/{{ user.handle }}/aports/{{ package.name }}/APKBUILD"
|
|
register: apkbuild
|
|
when: repo is changed
|
|
|
|
- name: generate checksum
|
|
command: abuild -q checksum
|
|
args:
|
|
chdir: "/home/{{ user.handle }}/aports/{{ package.name }}"
|
|
when: apkbuild is changed
|
|
|
|
- name: build package
|
|
command: abuild -qrc
|
|
args:
|
|
chdir: "/home/{{ user.handle }}/aports/{{ package.name }}"
|
|
creates: "/home/{{ user.handle }}/packages/{{ package.name | dirname }}/x86_64"
|
|
|
|
- name: obtain package
|
|
fetch:
|
|
src: "/home/{{ user.handle }}/packages/{{ package.name | dirname }}/x86_64/{{ package.name | basename }}-{{ package.version }}.apk"
|
|
dest: "/home/{{ user.handle }}/alpine-{{ package.name | basename }}/packages/"
|
|
flat: yes
|
|
|
|
become: yes
|