From a15ff55b3e24a8a5bd9f75f121bbd5fd5b8a1351 Mon Sep 17 00:00:00 2001 From: Odilon Sousa Date: Wed, 17 Apr 2024 16:14:05 -0300 Subject: [PATCH] Add Container Image release workflow --- .github/workflows/container-release.yml | 44 +++++++++++++++++++++++++ .github/workflows/main.yml | 19 +++++++++-- Dockerfile => Containerfile | 4 ++- MANIFEST.in | 2 +- 4 files changed, 64 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/container-release.yml rename Dockerfile => Containerfile (94%) diff --git a/.github/workflows/container-release.yml b/.github/workflows/container-release.yml new file mode 100644 index 00000000..62b75e63 --- /dev/null +++ b/.github/workflows/container-release.yml @@ -0,0 +1,44 @@ +name: Container release + +on: + push: + branches: + - master + schedule: + - cron: '5 5 * * 0' + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + build-and-push-image: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + strategy: + fail-fast: false + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + file: Containerfile + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} \ No newline at end of file diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4acd2e99..08dc257f 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -6,6 +6,8 @@ env: COLORTERM: 'yes' TERM: 'xterm-256color' PYTEST_ADDOPTS: '--color=yes' + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} jobs: build: @@ -42,9 +44,20 @@ jobs: container: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - - name: Run container tests - run: docker build --build-arg REPO=${GITHUB_REPOSITORY} --build-arg VERSION=${GITHUB_REF} -t quay.io/foreman/obal:$(echo ${GITHUB_REF} | tr '/' '_') . + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + - name: Build container + uses: docker/build-push-action@v5 + with: + file: Containerfile + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + build-args: | + REPO=${{ github.repository }} + VERSION=${{ github.ref }} lint: runs-on: ubuntu-latest diff --git a/Dockerfile b/Containerfile similarity index 94% rename from Dockerfile rename to Containerfile index a0538180..115518cd 100644 --- a/Dockerfile +++ b/Containerfile @@ -15,7 +15,9 @@ ARG REPO=theforeman/obal.git RUN dnf config-manager --add-repo https://downloads.kitenet.net/git-annex/linux/current/rpms/git-annex.repo && \ pip3 install --upgrade pip && \ pip3 install git+https://github.com/${REPO}@${VERSION} && \ - obal setup + obal setup && \ + dnf clean all + RUN mkdir -p /opt/packaging WORKDIR /opt/packaging diff --git a/MANIFEST.in b/MANIFEST.in index 290f328e..eadc7bf4 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -4,4 +4,4 @@ include LICENSE include .coveragerc include .pylintrc recursive-include rules *.py -exclude Dockerfile +exclude Containerfile