diff --git a/.cz.yaml b/.cz.yaml new file mode 100644 index 0000000..62b2ada --- /dev/null +++ b/.cz.yaml @@ -0,0 +1,7 @@ +commitizen: + bump_message: "build(version): bump version $current_version \u2192 $new_version" + changelog_incremental: false + name: cz_conventional_commits + tag_format: $major.$minor.$patch$prerelease + update_changelog_on_bump: true + version: 0.0.1 diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..a03425c --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +.gitlab-ci.yml +README.md diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..fcec1c7 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,59 @@ +--- +variables: + GIT_SUBMODULE_STRATEGY: recursive + MY_PROJECT_ID: "45741845" + GIT_SYNC_URL: "https://$GITHUB_USERNAME_ROBOT:$GITHUB_TOKEN_ROBOT@github.com/NoFussComputing/execution_environment.git" + + DOCKER_IMAGE_BUILD_TARGET_PLATFORMS: "linux/amd64,linux/arm64,linux/arm/v7" + DOCKER_IMAGE_PUBLISH_NAME: 'ansible-ee' + DOCKER_IMAGE_PUBLISH_REGISTRY: docker.io/nofusscomputing + DOCKER_IMAGE_PUBLISH_URL: https://hub.docker.com/r/nofusscomputing/$DOCKER_IMAGE_PUBLISH_NAME + + + +include: + - project: nofusscomputing/projects/gitlab-ci + ref: development + file: + - .gitlab-ci_common.yaml + - type/docker-image.gitlab-ci.yaml + #- template: Jobs/Container-Scanning.gitlab-ci.yml # see https://gitlab.com/gitlab-org/gitlab/-/issues/381665 + + + +Build/Cache Python Packages: + stage: build + image: nofusscomputing/docker-buildx-qemu:dev + services: + - name: docker:23-dind + entrypoint: ["env", "-u", "DOCKER_HOST"] + command: ["dockerd-entrypoint.sh"] + variables: + DOCKER_HOST: tcp://docker:2375/ + DOCKER_DRIVER: overlay2 + DOCKER_TLS_CERTDIR: "" + before_script: + - docker info + #- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + - pip3 install setuptools wheel + - pip3 install commitizen==2.21.0 # version specified so current build works. + - pip3 install gitlab-ci/gitlab_release/python-module/cz_nfc/. + - update-binfmts --enable # Important: Ensures execution of other binary formats is enabled in the kernel + - docker buildx create --driver=docker-container --driver-opt image=moby/buildkit:v0.11.6 --use + - docker buildx inspect --bootstrap + script: | + docker buildx build \ + --file dockerfile-build_cache \ + --platform=$DOCKER_IMAGE_BUILD_TARGET_PLATFORMS . \ + --build-arg CI_JOB_TOKEN=$CI_JOB_TOKEN \ + --build-arg CI_API_V4_URL=$CI_API_V4_URL \ + --build-arg CI_PROJECT_ID=$CI_PROJECT_ID + rules: + - if: '$CI_PIPELINE_SOURCE == "merge_request_event"' + when: never + - if: $CI_COMMIT_TAG + when: never + - if: '$CI_COMMIT_BRANCH != "master"' + allow_failure: true + when: manual + - when: never diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..cc4d8a5 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,4 @@ +[submodule "gitlab-ci"] + path = gitlab-ci + url = https://gitlab.com/nofusscomputing/projects/gitlab-ci.git + branch = development diff --git a/README.md b/README.md index 0124703..5623770 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,61 @@ -# execution environment Repository. +
-This repository was created by ansible!! \ No newline at end of file + + +# No Fuss Computing - Execution Environment + +
+ +![Project Status - Active](https://img.shields.io/badge/Project%20Status-Active-green?logo=gitlab&style=plastic) + +
+ +![Gitlab forks count](https://img.shields.io/badge/dynamic/json?label=Forks&query=%24.forks_count&url=https%3A%2F%2Fgitlab.com%2Fapi%2Fv4%2Fprojects%2F45741845%2F&color=ff782e&logo=gitlab&style=plastic) ![Gitlab stars](https://img.shields.io/badge/dynamic/json?label=Stars&query=%24.star_count&url=https%3A%2F%2Fgitlab.com%2Fapi%2Fv4%2Fprojects%2F45741845%2F&color=ff782e&logo=gitlab&style=plastic) [![Open Issues](https://img.shields.io/badge/dynamic/json?color=ff782e&logo=gitlab&style=plastic&label=Open%20Issues&query=%24.statistics.counts.opened&url=https%3A%2F%2Fgitlab.com%2Fapi%2Fv4%2Fprojects%2F45741845%2Fissues_statistics)](https://gitlab.com/nofusscomputing/projects/ansible/execution_environment/-/issues) + + + +![GitHub forks](https://img.shields.io/github/forks/NofussComputing/execution_environment?logo=github&style=plastic&color=000000&labell=Forks) ![GitHub stars](https://img.shields.io/github/stars/NofussComputing/execution_environment?color=000000&logo=github&style=plastic) ![Github Watchers](https://img.shields.io/github/watchers/NofussComputing/execution_environment?color=000000&label=Watchers&logo=github&style=plastic) +
+ +This project is hosted on [gitlab](https://gitlab.com/nofusscomputing/projects/ansible/execution_environment) and has a read-only copy hosted on [Github](https://github.com/NofussComputing/execution_environment). + +---- + +**Stable Branch** + +![Gitlab build status - stable](https://img.shields.io/badge/dynamic/json?color=ff782e&label=Build&query=0.status&url=https%3A%2F%2Fgitlab.com%2Fapi%2Fv4%2Fprojects%2F45741845%2Fpipelines%3Fref%3Dmaster&logo=gitlab&style=plastic) ![branch release version](https://img.shields.io/badge/dynamic/yaml?color=ff782e&logo=gitlab&style=plastic&label=Release&query=%24.commitizen.version&url=https%3A//gitlab.com/nofusscomputing/projects/ansible/execution_environment%2F-%2Fraw%2Fmaster%2F.cz.yaml) + +---- + +**Development Branch** + +![Gitlab build status - development](https://img.shields.io/badge/dynamic/json?color=ff782e&label=Build&query=0.status&url=https%3A%2F%2Fgitlab.com%2Fapi%2Fv4%2Fprojects%2F45741845%2Fpipelines%3Fref%3Ddevelopment&logo=gitlab&style=plastic) ![branch release version](https://img.shields.io/badge/dynamic/yaml?color=ff782e&logo=gitlab&style=plastic&label=Release&query=%24.commitizen.version&url=https%3A//gitlab.com/nofusscomputing/projects/ansible/execution_environment-%2Fraw%2Fdevelopment%2F.cz.yaml) + +---- +
+ +
+ +links: + +- [Issues](https://gitlab.com/nofusscomputing/projects/ansible/execution_environment/-/issues) + +- [Merge Requests (Pull Requests)](https://gitlab.com/nofusscomputing/projects/ansible/execution_environment/-/merge_requests) + +## Documentation + + +**TO DO:** + +point docs to gitlab-ci for docker build + + +## Contributing +All contributions for this project must conducted from [Gitlab](https://gitlab.com/nofusscomputing/projects/ansible/execution_environment). + +For further details on contributing please refer to the [contribution guide](CONTRIBUTING.md). + + +## Other + +This repo is release under this [license](LICENSE) diff --git a/ansible.cfg b/ansible.cfg new file mode 100644 index 0000000..047d6f8 --- /dev/null +++ b/ansible.cfg @@ -0,0 +1,4 @@ +[defaults] +collections_path=/etc/ansible/collections +roles_path=/etc/ansible/roles +log_path=/ansible.log diff --git a/dockerfile b/dockerfile new file mode 100644 index 0000000..62b190e --- /dev/null +++ b/dockerfile @@ -0,0 +1,82 @@ +FROM --platform=$BUILDPLATFORM python:3.11-bullseye as fetch-ansible-roles + + +ENV LC_ALL en_US.UTF-8 + + +RUN export DEBIAN_FRONTEND=noninteractive \ + && dpkg-reconfigure debconf -f noninteractive + + +RUN apt update \ + && apt install --reinstall -yq \ + git || true + + +RUN git clone -b development --depth 1 https://gitlab.com/nofusscomputing/projects/ansible-roles.git /tmp/ansible-roles + + + +FROM --platform=$TARGETPLATFORM python:3.11-bullseye + +# Ansible chucks a wobbler without. see: https://github.com/ansible/ansible/issues/78283 +ENV LC_ALL en_US.UTF-8 + + +COPY --from=fetch-ansible-roles /tmp/ansible-roles/roles /etc/ansible/roles + +# Ref: https://github.com/opencontainers/image-spec/blob/d86384efdb8c30770a92415c100f57a9bffbb64e/annotations.md +LABEL \ + # org.opencontainers.image.authors="{contributor url}" \ + org.opencontainers.image.vendor="No Fuss Computing" \ + # org.opencontainers.image.url="{dockerhub url}" \ + # org.opencontainers.image.documentation="{docs url}" \ + # org.opencontainers.image.source="{repo url}" \ + # org.opencontainers.image.revision="{git commit sha at time of build}" \ + org.opencontainers.image.title="No Fuss Computings Ansible Execution Environment" \ + org.opencontainers.image.description="An ansible execution environment for awx/tower and CI/CD pipelines" \ + org.opencontainers.image.vendor="No Fuss Computing" + # org.opencontainers.image.version="{git tag}" + + + +# This Black Magic exists as libc-bin was being a turd and returning errors when trying to install git, ssh. +# see: https://askubuntu.com/questions/1339558/cant-build-dockerfile-for-arm64-due-to-libc-bin-segmentation-fault +# see: https://github.com/dcycle/prepare-docker-buildx/blob/09057fe4879e31ee780b9e69b87f41327ca8cd8e/example/Dockerfile#L8-L10 +RUN export DEBIAN_FRONTEND=noninteractive \ + && apt update \ + && apt --fix-broken install \ + && apt install -y libc-bin locales-all \ + && apt update \ + && apt install --reinstall --no-install-recommends -yq \ + openssh-client \ + git || true \ + && dpkg --purge --force-all libc-bin \ + && apt-get install --no-install-recommends -y \ + openssh-client \ + git \ + # End of Black Magic + && rm -rf /var/lib/apt/lists/* \ + && mkdir -p /etc/ansible/roles \ + && mkdir -p /etc/ansible/collections \ + && mkdir -p /workdir \ + && apt list --installed + + +WORKDIR /workdir + + +COPY ansible.cfg /etc/ansible/ansible.cfg + + +COPY requirements.txt /tmp/requirements.txt + + +RUN pip install --upgrade pip + +RUN pip install --index-url https://gitlab.com/api/v4/projects/45741845/packages/pypi/simple -r /tmp/requirements.txt + + +RUN ansible-galaxy collection install \ + awx.awx \ + kubernetes.core \ No newline at end of file diff --git a/dockerfile-build_cache b/dockerfile-build_cache new file mode 100644 index 0000000..53c99ca --- /dev/null +++ b/dockerfile-build_cache @@ -0,0 +1,74 @@ +FROM --platform=$TARGETPLATFORM python:3.11-bullseye as wheelbuild + +ARG CI_JOB_TOKEN +ARG CI_API_V4_URL +ARG CI_PROJECT_ID + + +ENV LC_ALL en_US.UTF-8 +ENV PATH /usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/root/.cargo/bin::~/.cargo/bin + +RUN export DEBIAN_FRONTEND=noninteractive \ + && dpkg-reconfigure debconf -f noninteractive + +RUN apt update \ + && apt install --reinstall -yq \ + git \ + curl \ + rustc cargo || true + + +RUN mkdir -p /tmp/python_modules /tmp/python_builds + + +RUN rustc --version \ + && cargo --version + +RUN export DEBIAN_FRONTEND=noninteractive \ + && apt update \ + && apt --fix-broken install \ + && apt install -y libc-bin locales-all \ + && apt update \ + && apt install --reinstall -yq \ + openssh-client \ + git || true \ + && dpkg --purge --force-all libc-bin \ + && apt-get install -y \ + openssh-client \ + git + + +RUN export DEBIAN_FRONTEND=noninteractive \ + && apt update \ + && apt install --no-install-recommends -yq libc-bin locales-all \ + && apt-get install --reinstall -yq \ + build-essential \ + libssl-dev \ + libffi-dev \ + python3-dev \ + cargo \ + pkg-config || true + + +RUN pip install --upgrade pip + +RUN pip install --upgrade \ + setuptools \ + wheel \ + setuptools-rust \ + twine + +COPY requirements.txt /tmp/requirements.txt + +RUN cd /tmp/python_modules \ + && pip download --dest . --check-build-dependencies \ + -r /tmp/requirements.txt + + +RUN cd /tmp/python_modules \ + # && export PATH=$PATH:~/.cargo/bin \ + && echo "[DEBUG] PATH=$PATH" \ + && pip wheel --wheel-dir /tmp/python_builds --find-links . *.whl + + +RUN TWINE_PASSWORD=${CI_JOB_TOKEN} TWINE_USERNAME=gitlab-ci-token python -m twine upload --verbose --skip-existing --repository-url ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi /tmp/python_builds/* diff --git a/gitlab-ci b/gitlab-ci new file mode 160000 index 0000000..18a2808 --- /dev/null +++ b/gitlab-ci @@ -0,0 +1 @@ +Subproject commit 18a280878799fe077efa0ed5b11bceedd53eb5c8 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..aee9e30 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +ansible-core==2.14.5 +ansible-lint==6.15.0