blob: 7a4cb11169b751d0afd6092539859b476e75ab38 [file] [log] [blame]
Mohammed Naser1de55192023-04-28 17:13:35 -04001VERSION --use-copy-link 0.7
Mohammed Naser8613c862023-04-24 17:26:51 -04002FROM python:3.10
3
4poetry:
Mohammed Naser32cb11e2023-04-28 21:49:51 +00005 RUN pip3 install poetry==1.4.2
6 SAVE IMAGE --cache-hint
Mohammed Naser8613c862023-04-24 17:26:51 -04007
Mohammed Naser1de55192023-04-28 17:13:35 -04008build.wheels:
Mohammed Naser8613c862023-04-24 17:26:51 -04009 FROM +poetry
10 COPY pyproject.toml poetry.lock ./
Mohammed Naser1de55192023-04-28 17:13:35 -040011 ARG --required only
12 RUN poetry export --only=${only} -f requirements.txt --without-hashes > requirements.txt
Mohammed Naser8613c862023-04-24 17:26:51 -040013 RUN pip wheel -r requirements.txt --wheel-dir=/wheels
14 SAVE ARTIFACT requirements.txt
15 SAVE ARTIFACT /wheels
Mohammed Naser1de55192023-04-28 17:13:35 -040016 SAVE IMAGE --cache-hint
Mohammed Naser8613c862023-04-24 17:26:51 -040017
Mohammed Naser1de55192023-04-28 17:13:35 -040018build.venv:
19 ARG --required only
20 FROM +build.wheels --only ${only}
Mohammed Naser8613c862023-04-24 17:26:51 -040021 RUN python3 -m venv /venv
22 ENV PATH=/venv/bin:$PATH
23 RUN pip install -r requirements.txt
Mohammed Naser1de55192023-04-28 17:13:35 -040024 SAVE IMAGE --cache-hint
25
26build.venv.dev:
27 FROM +build.venv --only main,dev
Mohammed Naser8613c862023-04-24 17:26:51 -040028 SAVE ARTIFACT /venv
29
Mohammed Naser1de55192023-04-28 17:13:35 -040030build.venv.runtime:
31 FROM +build.venv --only main
32 SAVE ARTIFACT /venv
33
34build.collections:
35 FROM +build.venv.runtime
36 COPY charts /src/charts
37 COPY meta /src/meta
38 COPY playbooks /src/playbooks
39 COPY plugins /src/plugins
40 COPY roles /src/roles
41 COPY galaxy.yml /src/galaxy.yml
42 RUN ansible-galaxy collection install --collections-path /usr/share/ansible/collections /src
43 SAVE ARTIFACT /usr/share/ansible/collections
44 SAVE IMAGE --cache-hint
45
46image:
47 FROM python:3.10-slim
Mohammed Naser1de55192023-04-28 17:13:35 -040048 ENV ANSIBLE_PIPELINING=True
Mohammed Naser9feca4b2023-05-19 16:17:40 -040049 RUN \
50 apt-get update && \
Mohammed Naser92219f82023-05-23 13:15:08 -040051 apt-get install --no-install-recommends -y rsync openssh-client && \
Mohammed Naser9feca4b2023-05-19 16:17:40 -040052 apt-get clean && \
53 rm -rf /var/lib/apt/lists/*
Mohammed Naserebc3afb2023-05-31 14:08:01 -040054 CMD ["/bin/bash"]
Mohammed Nasere720d782023-07-10 15:57:21 -040055 COPY +build.venv.runtime/venv /venv
56 ENV PATH=/venv/bin:$PATH
57 COPY +build.collections/ /usr/share/ansible
Mohammed Naser1de55192023-04-28 17:13:35 -040058 ARG tag=latest
Mohammed Naserccc70cc2023-04-28 22:20:34 +000059 SAVE IMAGE --push ghcr.io/vexxhost/atmosphere:${tag}
Mohammed Naser8613c862023-04-24 17:26:51 -040060
61pin-images:
Mohammed Naser1de55192023-04-28 17:13:35 -040062 FROM +build.venv.dev
ricolinb8ab0172023-06-01 15:41:02 +080063 COPY roles/defaults/vars/main.yml /defaults.yml
Mohammed Naser8613c862023-04-24 17:26:51 -040064 COPY build/pin-images.py /usr/local/bin/pin-images
65 RUN /usr/local/bin/pin-images /defaults.yml /pinned.yml
ricolinb8ab0172023-06-01 15:41:02 +080066 SAVE ARTIFACT /pinned.yml AS LOCAL roles/defaults/vars/main.yml
Mohammed Naserd03bba32023-04-25 12:54:58 +000067
68gh:
69 FROM alpine:3
70 RUN apk add --no-cache github-cli
71
72trigger-image-sync:
73 FROM +gh
74 ARG --required project
75 RUN --secret GITHUB_TOKEN gh workflow run --repo vexxhost/docker-openstack-${project} sync.yml