From 39e39987881c1ccd0605d34ad9021363835c9e19 Mon Sep 17 00:00:00 2001 From: Luke Repko Date: Wed, 7 Aug 2024 14:27:47 -0500 Subject: [PATCH] feat: begin to add custom ceilometer image --- .github/workflows/release-ceilometer.yaml | 81 ++++++++++++++++++++++ Containerfiles/CeilometerRXT-Containerfile | 25 +++++++ 2 files changed, 106 insertions(+) create mode 100644 .github/workflows/release-ceilometer.yaml create mode 100644 Containerfiles/CeilometerRXT-Containerfile diff --git a/.github/workflows/release-ceilometer.yaml b/.github/workflows/release-ceilometer.yaml new file mode 100644 index 00000000..b705c7f4 --- /dev/null +++ b/.github/workflows/release-ceilometer.yaml @@ -0,0 +1,81 @@ +# +name: Create and publish a Ceilometer image + +on: + push: + paths: + - '.github/workflows/release-ceilometer.yaml' + - 'Containerfiles/CeilometerRXT-Containerfile' + branches: + - development + - main + workflow_dispatch: + inputs: + imageTag: + description: 'Set tag for the image' + required: true + default: '2024.1-ubuntu_jammy' + type: choice + options: + - 2024.1-ubuntu_jammy + buildVersion: + description: 'Set version to build' + required: true + default: 'stable/2024.1' + type: choice + options: + - stable/2024.1 + - master + +# Defines two custom environment variables for the workflow. These are used for the Container registry domain, and a name for the Docker image that this workflow builds. +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + DEF_TAG_NAME: 2024.1-ubuntu_jammy + DEF_BUILD_VERSION: stable/2024.1 + +# There is a single job in this workflow. It's configured to run on the latest available version of Ubuntu. +jobs: + build-and-push-image: + runs-on: ubuntu-latest + # Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job. + permissions: + contents: read + packages: write + steps: + - name: Checkout repository + uses: actions/checkout@v4 + # Uses the `docker/login-action` action to log in to the Container registry registry using the account and password that will publish the packages. Once published, the packages are scoped to the account defined here. + - name: Log in to the Container registry + uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + # ghcr only allows lowercase repository names + - name: lowercase repo name + run: | + echo "IMAGE_NAME=${GITHUB_REPOSITORY,,}" >>${GITHUB_ENV} + # This step uses [docker/metadata-action](https://github.com/docker/metadata-action#about) to extract tags and labels that will be applied to the specified image. The `id` "meta" allows the output of this step to be referenced in a subsequent step. The `images` value provides the base name for the tags and labels. + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + # This step uses the `docker/build-push-action` action to build the image, based on your repository's `Dockerfile`. If the build succeeds, it pushes the image to GitHub Packages. + # It uses the `context` parameter to define the build's context as the set of files located in the specified path. For more information, see "[Usage](https://github.com/docker/build-push-action#usage)" in the README of the `docker/build-push-action` repository. + # It uses the `tags` and `labels` parameters to tag and label the image with the output from the "meta" step. + - name: Dynamically set MY_DATE environment variable + run: echo "MY_DATE=$(date +%s)" >> $GITHUB_ENV + - name: Build and push Docker image + uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4 + with: + context: . + file: Containerfiles/CeilometerRXT-Containerfile + push: true + tags: | + ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}/ceilometer:${{ github.event.inputs.imageTag || env.DEF_TAG_NAME }} + ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}/ceilometer:${{ github.event.inputs.imageTag || env.DEF_TAG_NAME }}-${{ env.MY_DATE }} + labels: ${{ steps.meta.outputs.labels }} + build-args: | + VERSION=${{ github.event.inputs.buildVersion || env.DEF_BUILD_VERSION}} diff --git a/Containerfiles/CeilometerRXT-Containerfile b/Containerfiles/CeilometerRXT-Containerfile new file mode 100644 index 00000000..822a7804 --- /dev/null +++ b/Containerfiles/CeilometerRXT-Containerfile @@ -0,0 +1,25 @@ +FROM ubuntu:22.04 +ARG VERSION="" +ENV CEILOMETER_VERSION ${VERSION:-master} +ENV DEBIAN_FRONTEND=noninteractive +RUN apt update && \ + apt install -y software-properties-common && \ + add-apt-repository ppa:deadsnakes/ppa -y +RUN apt update && \ + apt install -y \ + python3.10 \ + python3.10-dev \ + git \ + wget \ + curl \ + apache2 \ + locales \ + libapache2-mod-wsgi-py3 \ + libffi-dev +RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10 && \ + pip install \ + "ceilometer @ git+https://opendev.org/openstack/ceilometer.git@${CEILOMETER_VERSION}" +RUN ln -s /usr/bin/python3 /usr/bin/python && \ + adduser ceilometer --disabled-password && \ + sed -i 's@^ErrorLog.*@ErrorLog /dev/stderr@' /etc/apache2/apache2.conf && \ + apt clean && rm -rf /var/lib/apt/lists/*