diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index 03dab02a..dc5b7fed 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -1,8 +1,7 @@ name: Docker Image CI on: push: - branches: - - main + tags: ['v[0-9].[0-9]+.[0-9]+'] pull_request: jobs: @@ -12,34 +11,40 @@ jobs: - name: Check out code uses: actions/checkout@v3 - name: Build the Docker images - if: github.ref == 'refs/heads/main' && github.event_name == 'push' + if: startsWith(github.ref, 'refs/tags') run: | - docker build --no-cache -t quay.io/krkn-chaos/krkn containers/ + docker build --no-cache -t quay.io/krkn-chaos/krkn containers/ --build-arg TAG=${GITHUB_REF#refs/tags/} docker tag quay.io/krkn-chaos/krkn quay.io/redhat-chaos/krkn + docker tag quay.io/krkn-chaos/krkn quay.io/redhat-chaos/krkn:${GITHUB_REF#refs/tags/} + - name: Test Build the Docker images if: ${{ github.event_name == 'pull_request' }} run: | docker build --no-cache -t quay.io/krkn-chaos/krkn containers/ --build-arg PR_NUMBER=${{ github.event.pull_request.number }} - name: Login in quay - if: github.ref == 'refs/heads/main' && github.event_name == 'push' + if: startsWith(github.ref, 'refs/tags') run: docker login quay.io -u ${QUAY_USER} -p ${QUAY_TOKEN} env: QUAY_USER: ${{ secrets.QUAY_USERNAME }} QUAY_TOKEN: ${{ secrets.QUAY_PASSWORD }} - name: Push the KrknChaos Docker images - if: github.ref == 'refs/heads/main' && github.event_name == 'push' - run: docker push quay.io/krkn-chaos/krkn + if: startsWith(github.ref, 'refs/tags') + run: | + docker push quay.io/krkn-chaos/krkn + docker push quay.io/krkn-chaos/krkn:${GITHUB_REF#refs/tags/} - name: Login in to redhat-chaos quay - if: github.ref == 'refs/heads/main' && github.event_name == 'push' + if: startsWith(github.ref, 'refs/tags/v') run: docker login quay.io -u ${QUAY_USER} -p ${QUAY_TOKEN} env: QUAY_USER: ${{ secrets.QUAY_USER_1 }} QUAY_TOKEN: ${{ secrets.QUAY_TOKEN_1 }} - name: Push the RedHat Chaos Docker images - if: github.ref == 'refs/heads/main' && github.event_name == 'push' - run: docker push quay.io/redhat-chaos/krkn + if: startsWith(github.ref, 'refs/tags') + run: | + docker push quay.io/redhat-chaos/krkn + docker push quay.io/redhat-chaos/krkn:${GITHUB_REF#refs/tags/} - name: Rebuild krkn-hub - if: github.ref == 'refs/heads/main' && github.event_name == 'push' + if: startsWith(github.ref, 'refs/tags') uses: redhat-chaos/actions/krkn-hub@main with: QUAY_USER: ${{ secrets.QUAY_USERNAME }} diff --git a/containers/Dockerfile b/containers/Dockerfile index 98915a33..994ded82 100644 --- a/containers/Dockerfile +++ b/containers/Dockerfile @@ -1,6 +1,6 @@ # oc build FROM golang:1.22.4 AS oc-build -RUN apt-get update && apt-get install -y libkrb5-dev +RUN apt-get update && apt-get install -y --no-install-recommends libkrb5-dev WORKDIR /tmp RUN git clone --branch release-4.18 https://github.com/openshift/oc.git WORKDIR /tmp/oc @@ -13,6 +13,7 @@ RUN make GO_REQUIRED_MIN_VERSION:= oc FROM fedora:40 ARG PR_NUMBER +ARG TAG RUN groupadd -g 1001 krkn && useradd -m -u 1001 -g krkn krkn RUN dnf update -y @@ -27,7 +28,9 @@ RUN curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/s cp kubectl /usr/bin/kubectl && chmod +x /usr/bin/kubectl # This overwrites any existing configuration in /etc/yum.repos.d/kubernetes.repo -RUN dnf update && dnf install -y git python39 jq yq gettext wget which +RUN dnf update && dnf install -y --setopt=install_weak_deps=False \ + git python39 jq yq gettext wget which &&\ + dnf clean all # Install azure cli RUN rpm --import https://packages.microsoft.com/keys/microsoft.asc && dnf install -y https://packages.microsoft.com/config/rhel/9.0/packages-microsoft-prod.rpm && dnf install -y azure-cli @@ -40,10 +43,12 @@ RUN git clone https://github.com/krkn-chaos/krkn.git /home/krkn/kraken && \ mkdir -p /home/krkn/.kube WORKDIR /home/krkn/kraken -# if is an event on main the variable $PR_NUMBER has no value so the latest tag is checked out else -# if is a PR event the PR itself will be checked out -RUN if [ -z "$PR_NUMBER" ]; then git checkout $KRKN_VERSION;\ - else git fetch origin pull/${PR_NUMBER}/head:pr-${PR_NUMBER} && git checkout pr-${PR_NUMBER}; fi + +# default behaviour will be to build main +# if it is a PR trigger the PR itself will be checked out +RUN if [ -n "$PR_NUMBER" ]; then git fetch origin pull/${PR_NUMBER}/head:pr-${PR_NUMBER} && git checkout pr-${PR_NUMBER};fi +# if it is a TAG trigger checkout the tag +RUN if [ -n "$TAG" ]; then git checkout "$TAG";fi RUN python3.9 -m ensurepip RUN pip3.9 install -r requirements.txt