Skip to content

Commit

Permalink
Add github actions to build multi arch images
Browse files Browse the repository at this point in the history
  • Loading branch information
enyachoke committed Mar 19, 2023
1 parent 392b1c7 commit 13001c2
Show file tree
Hide file tree
Showing 26 changed files with 525 additions and 59 deletions.
51 changes: 51 additions & 0 deletions .github/workflows/build-consumerui.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Build consumerui

on:
push:
branches:
- "master"
release:
types: [published, edited]

jobs:
docker:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v3
-
name: Set up QEMU
uses: docker/setup-qemu-action@v2
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
-
name: Login to Container Registry
uses: docker/login-action@v2
if: github.event_name != 'pull_request'
with:
registry: ${{ secrets.REGISTRY }}
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
-
name: Set Version
run: echo "VERSION=$(tail -1 consumerui/versions.txt)" >> $GITHUB_ENV
-
name: Docker metadata
id: consumerui_meta
uses: docker/metadata-action@v4
with:
images: ${{ secrets.REGISTRY }}/${{ secrets.REGISTRY_USERNAME }}/consumerui
tags: |
type=raw,value=latest,enable={{is_default_branch}}
type=raw,value=${{env.VERSION}},enable=${{ github.event_name == 'release' && github.event.action == 'published' }}
-
name: Build and push consumerui
uses: docker/build-push-action@v4
with:
context: ./consumerui
platforms: linux/amd64,linux/arm64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.consumerui_meta.outputs.tags }}
91 changes: 91 additions & 0 deletions .github/workflows/build-deploy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
name: Build deploy utils

on:
push:
branches:
- "master"
release:
types: [published, edited]

jobs:
docker:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v3
-
name: Set up QEMU
uses: docker/setup-qemu-action@v2
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
-
name: Login to Container Registry
uses: docker/login-action@v2
with:
registry: ${{ secrets.REGISTRY }}
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
-
name: Set Version
run: echo "VERSION=$(tail -1 deploy/versions.txt)" >> $GITHUB_ENV

-
name: Docker webhook metadata
id: webhook_tls_getter
uses: docker/metadata-action@v4
with:
images: ${{ secrets.REGISTRY }}/${{ secrets.REGISTRY_USERNAME }}/webhook-tls-getter
tags: |
type=raw,value=latest,enable={{is_default_branch}}
type=raw,value=${{env.VERSION}},enable=${{ github.event_name == 'release' && github.event.action == 'published' }}
-
name: Build and push webhook-tls-getter
uses: docker/build-push-action@v4
with:
context: ./deploy
file: ./deploy/Dockerfile
platforms: linux/amd64,linux/arm64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.webhook_tls_getter.outputs.tags }}

-
name: Docker delete-kubeplus-resources metadata
id: delete_kubeplus_resources
uses: docker/metadata-action@v4
with:
images: ${{ secrets.REGISTRY }}/${{ secrets.REGISTRY_USERNAME }}/delete-kubeplus-resources
tags: |
type=raw,value=latest,enable={{is_default_branch}}
type=raw,value=${{env.VERSION}},enable=${{ github.event_name == 'release' && github.event.action == 'published' }}
-
name: Build and push delete-kubeplus-resources
uses: docker/build-push-action@v4
with:
context: ./deploy
file: ./deploy/Dockerfile.cleanup
platforms: linux/amd64,linux/arm64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.delete_kubeplus_resources.outputs.tags }}

-
name: Docker kubeconfiggenerator metadata
id: kubeconfiggenerator
uses: docker/metadata-action@v4
with:
images: ${{ secrets.REGISTRY }}/${{ secrets.REGISTRY_USERNAME }}/kubeconfiggenerator
tags: |
type=raw,value=latest,enable={{is_default_branch}}
type=raw,value=${{env.VERSION}},enable=${{ github.event_name == 'release' && github.event.action == 'published' }}
-
name: Build and push kubeconfiggenerator
uses: docker/build-push-action@v4
with:
context: ./deploy
file: ./deploy/Dockerfile.kubeconfiggenerator
platforms: linux/amd64,linux/arm64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.kubeconfiggenerator.outputs.tags }}
51 changes: 51 additions & 0 deletions .github/workflows/build-mutating-webhook.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Build mutating-webhook

on:
push:
branches:
- "master"
release:
types: [published, edited]

jobs:
docker:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v3
-
name: Set up QEMU
uses: docker/setup-qemu-action@v2
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
-
name: Login to Container Registry
uses: docker/login-action@v2
with:
registry: ${{ secrets.REGISTRY }}
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
-
name: Set Version
run: echo "VERSION=$(tail -1 mutating-webhook/versions.txt)" >> $GITHUB_ENV
-
name: Docker webhook metadata
id: pac_mutating_admission_webhook
uses: docker/metadata-action@v4
with:
images: ${{ secrets.REGISTRY }}/${{ secrets.REGISTRY_USERNAME }}/pac-mutating-admission-webhook
tags: |
type=raw,value=latest,enable={{is_default_branch}}
type=raw,value=${{env.VERSION}},enable=${{ github.event_name == 'release' && github.event.action == 'published' }}
-
name: Build and push mutating-webhook
uses: docker/build-push-action@v4
with:
context: .
file: mutating-webhook/Dockerfile
platforms: linux/amd64,linux/arm64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.pac_mutating_admission_webhook.outputs.tags }}
52 changes: 52 additions & 0 deletions .github/workflows/build-platform-helmer.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Build helmer

on:
push:
branches:
- "master"
release:
types: [published, edited]

jobs:
docker:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v3
-
name: Set up QEMU
uses: docker/setup-qemu-action@v2
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
-
name: Login to Container Registry
uses: docker/login-action@v2
with:
registry: ${{ secrets.REGISTRY }}
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}
-
name: Set Helmer Version
run: echo "HELMER_VERSION=$(tail -1 platform-operator/helm-pod/versions.txt)" >> $GITHUB_ENV

-
name: Docker helm-pod metadata
id: helm_pod
uses: docker/metadata-action@v4
with:
images: ${{ secrets.REGISTRY }}/${{ secrets.REGISTRY_USERNAME }}/helm-pod
tags: |
type=raw,value=latest,enable={{is_default_branch}}
type=raw,value=${{env.HELMER_VERSION}},enable=${{ github.event_name == 'release' && github.event.action == 'published' }}
-
name: Build and push helm pod
uses: docker/build-push-action@v4
with:
context: .
file: platform-operator/helm-pod/Dockerfile
platforms: linux/amd64,linux/arm64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.helm_pod.outputs.tags }}
52 changes: 52 additions & 0 deletions .github/workflows/build-platform-operator.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Build platform-operator

on:
push:
branches:
- "master"
release:
types: [published, edited]

jobs:
docker:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v3
-
name: Set up QEMU
uses: docker/setup-qemu-action@v2
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
-
name: Login to Container Registry
uses: docker/login-action@v2
with:
registry: ${{ secrets.REGISTRY }}
username: ${{ secrets.REGISTRY_USERNAME }}
password: ${{ secrets.REGISTRY_PASSWORD }}

-
name: Set platform-operator Version
run: echo "OPERATOR_VERSION=$(tail -1 platform-operator/versions.txt)" >> $GITHUB_ENV
-
name: Docker platform-operator metadata
id: platform_operator
uses: docker/metadata-action@v4
with:
images: ${{ secrets.REGISTRY }}/${{ secrets.REGISTRY_USERNAME }}/platform-operator
tags: |
type=raw,value=latest,enable={{is_default_branch}}
type=raw,value=${{env.OPERATOR_VERSION}},enable=${{ github.event_name == 'release' && github.event.action == 'published' }}
-
name: Build and push platform-operator
uses: docker/build-push-action@v4
with:
context: ./platform-operator
file: platform-operator/artifacts/deployment/Dockerfile
platforms: linux/amd64,linux/arm64
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.platform_operator.outputs.tags }}
5 changes: 4 additions & 1 deletion consumerui/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@ FROM ubuntu:20.04

RUN apt-get update -y && DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata && apt-get install -y python3-pip python-setuptools curl wget tar sudo apt-transport-https ca-certificates socat python-yaml vim graphviz

RUN curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg && echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list && apt-get update -y && apt-get install -y kubectl && cp /usr/bin/python3.8 /usr/bin/python
RUN arch=$(arch | sed s/aarch64/arm64/ | sed s/x86_64/amd64/) && \
curl -LO https://dl.k8s.io/release/v1.26.0/bin/linux/${arch}/kubectl && \
install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl && \
cp /usr/bin/python3.8 /usr/bin/python

RUN wget https://github.com/cloud-ark/kubeplus/raw/master/kubeplus-kubectl-plugins.tar.gz && gunzip kubeplus-kubectl-plugins.tar.gz && tar -xvf kubeplus-kubectl-plugins.tar && cp -r /plugins/* bin/

Expand Down
2 changes: 1 addition & 1 deletion consumerui/build-artifact.sh
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ fi
if [ "$artifacttype" = "versioned" ]; then
version=`tail -1 versions.txt`
echo "Building version $version"
docker build --no-cache -t gcr.io/cloudark-kubeplus/consumerui:$version .
docker build --no-cache -t gcr.io/cloudark-kubeplus/consumerui:$version .
docker push gcr.io/cloudark-kubeplus/consumerui:$version
fi

Expand Down
4 changes: 2 additions & 2 deletions deploy/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
FROM ubuntu:20.04
RUN apt-get update && apt-get install -y openssl jq python3 python3-pip && pip3 install pyyaml
RUN apt-get update && apt-get install -y openssl curl jq python3 python3-pip && pip3 install pyyaml
ADD webhook-create-self-signed-ca-cert.sh /
COPY kubectl /root/
RUN arch=$(arch | sed s/aarch64/arm64/ | sed s/x86_64/amd64/) && cd /root/ && curl -LO "https://dl.k8s.io/release/v1.26.0/bin/linux/${arch}/kubectl"
COPY kubeplus-non-pod-resources.yaml /root/.
COPY mutatingwebhook.yaml /root/.
#COPY webhook-patch-ca-bundle-new.sh /root/.
Expand Down
4 changes: 2 additions & 2 deletions deploy/Dockerfile.cleanup
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM ubuntu:20.04
ADD delete-kubeplus-components.sh /root/.
COPY kubectl /root/
RUN apt-get update && apt-get install -y openssl jq python3 python3-pip && pip3 install pyyaml
RUN apt-get update && apt-get install -y openssl curl jq python3 python3-pip && pip3 install pyyaml
RUN arch=$(arch | sed s/aarch64/arm64/ | sed s/x86_64/amd64/) && cd /root/ && curl -LO "https://dl.k8s.io/release/v1.26.0/bin/linux/${arch}/kubectl"
RUN cp /root/kubectl bin/. && chmod +x /root/kubectl && chmod +x bin/kubectl
ENTRYPOINT ["/root/delete-kubeplus-components.sh"]
17 changes: 8 additions & 9 deletions deploy/Dockerfile.kubeconfiggenerator
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
FROM ubuntu:20.04
RUN apt-get update && apt-get install -y openssl jq python3 python3-pip wget && pip3 install pyyaml
COPY kubectl /root/
COPY helm /root/
RUN apt-get update && apt-get install -y curl wget openssl jq python3 python3-pip && pip3 install pyyaml Flask
RUN arch=$(arch | sed s/aarch64/arm64/ | sed s/x86_64/amd64/) && \
wget "https://get.helm.sh/helm-v3.11.1-linux-${arch}.tar.gz" && \
tar xvf "helm-v3.11.1-linux-${arch}.tar.gz" && \
mv "linux-${arch}/helm" /root/ && rm "helm-v3.11.1-linux-${arch}.tar.gz" && \
rm -rf "linux-${arch}"/
RUN arch=$(arch | sed s/aarch64/arm64/ | sed s/x86_64/amd64/) && cd /root/ && curl -LO "https://dl.k8s.io/release/v1.26.0/bin/linux/${arch}/kubectl"
COPY kubeconfiggenerator.py /root/.
COPY kubeconfiggenerator.sh /root/.
ADD requirements.txt /root/requirements.txt
RUN cd /root; pip install -r requirements.txt
RUN cp /root/kubectl bin/. && chmod +x /root/kubectl && chmod +x bin/kubectl && chmod +x /root/kubeconfiggenerator.sh && cp /root/helm bin/. && chmod +x /root/helm && chmod +x bin/helm

#ENTRYPOINT ["/root/kubeconfiggenerator.sh"]
RUN cp /root/kubectl bin/. && chmod +x /root/kubectl && chmod +x bin/kubectl && cp /root/helm bin/. && chmod +x /root/helm && chmod +x bin/helm

EXPOSE 5005
CMD ["python3", "/root/kubeconfiggenerator.py"]
Expand Down
4 changes: 2 additions & 2 deletions deploy/build-artifact-clean.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ fi
artifacttype=$1

if [ "$artifacttype" = "latest" ]; then
docker build -t gcr.io/cloudark-kubeplus/delete-kubeplus-resources:latest -f Dockerfile.cleanup .
docker build -t gcr.io/cloudark-kubeplus/delete-kubeplus-resources:latest -f ./Dockerfile.cleanup .
fi

if [ "$artifacttype" = "versioned" ]; then
version=`tail -1 versions.txt`
echo "Building version $version"
docker build -t gcr.io/cloudark-kubeplus/delete-kubeplus-resources:$version -f Dockerfile.cleanup .
docker build -t gcr.io/cloudark-kubeplus/delete-kubeplus-resources:$version -f ./Dockerfile.cleanup .
docker push gcr.io/cloudark-kubeplus/delete-kubeplus-resources:$version
fi

Expand Down
Loading

0 comments on commit 13001c2

Please sign in to comment.