mirror of
https://github.com/YuzuZensai/netbird-kubernetes-operator.git
synced 2026-09-13 10:49:15 +00:00
Refactor Dockerfile to build Go binary outside of Docker (#218)
This change moves building the Go binary out of the Dockerfile, and also fixes some issues in the makefile. These things will speed up build times and avoid rebuilding when not needed. Additionally it will make getting version data easier to use as part of the user agent. Signed-off-by: Philip Laine <philip.laine@gmail.com>
This commit is contained in:
@@ -25,11 +25,7 @@ jobs:
|
||||
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c #v6.4.0
|
||||
with:
|
||||
go-version-file: go.mod
|
||||
- name: Verify manifests are generated
|
||||
run: |
|
||||
make manifests
|
||||
git diff --exit-code
|
||||
- name: Verify code is generated
|
||||
- name: Verify everything has been generated.
|
||||
run: |
|
||||
make generate
|
||||
git diff --exit-code
|
||||
|
||||
@@ -9,41 +9,3 @@ jobs:
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2
|
||||
- name: Lint Helm Chart
|
||||
run: helm lint ./helm/kubernetes-operator
|
||||
test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Clone the code
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c #v6.4.0
|
||||
with:
|
||||
go-version-file: go.mod
|
||||
- name: Install the latest version of kind
|
||||
run: |
|
||||
curl -Lo ./kind https://kind.sigs.k8s.io/dl/latest/kind-linux-amd64
|
||||
chmod +x ./kind
|
||||
sudo mv ./kind /usr/local/bin/kind
|
||||
- name: Verify kind installation
|
||||
run: kind version
|
||||
- name: Create kind cluster
|
||||
run: kind create cluster
|
||||
- name: Prepare operator
|
||||
run: |
|
||||
make docker-build IMG=netbirdio/kubernetes-operator:debug
|
||||
kind load docker-image netbirdio/kubernetes-operator:debug
|
||||
- name: Install cert-manager via Helm
|
||||
run: |
|
||||
helm repo add jetstack https://charts.jetstack.io
|
||||
helm repo update
|
||||
helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --set installCRDs=true
|
||||
- name: Wait for cert-manager to be ready
|
||||
run: |
|
||||
kubectl wait --namespace cert-manager --for=condition=available --timeout=300s deployment/cert-manager
|
||||
kubectl wait --namespace cert-manager --for=condition=available --timeout=300s deployment/cert-manager-cainjector
|
||||
kubectl wait --namespace cert-manager --for=condition=available --timeout=300s deployment/cert-manager-webhook
|
||||
- name: Install Helm chart for project
|
||||
run: |
|
||||
helm install test-chart --create-namespace --namespace netbird --set 'operator.image.tag=debug' ./helm/kubernetes-operator
|
||||
- name: Check Helm release status
|
||||
run: |
|
||||
helm status test-chart --namespace netbird
|
||||
|
||||
@@ -13,35 +13,29 @@ jobs:
|
||||
packages: write
|
||||
id-token: write
|
||||
steps:
|
||||
- name: Docker meta
|
||||
id: meta
|
||||
uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf #v6.0.0
|
||||
- name: Clone the code
|
||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd #v6.0.2
|
||||
- name: Setup Go
|
||||
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c #v6.4.0
|
||||
with:
|
||||
images: |
|
||||
netbirdio/kubernetes-operator
|
||||
tags: |
|
||||
type=ref,event=pr
|
||||
type=ref,event=branch
|
||||
type=semver,pattern={{version}}
|
||||
go-version-file: go.mod
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd #v4.0.0
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 #v4.1.0
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USER }}
|
||||
password: ${{ secrets.DOCKER_TOKEN }}
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a #v4.0.0
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd #v4.0.0
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f #v7.1.0
|
||||
with:
|
||||
platforms: linux/amd64,linux/arm64
|
||||
push: true
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: |
|
||||
"org.opencontainers.image.created={{.Date}}"
|
||||
"org.opencontainers.image.title={{.ProjectName}}"
|
||||
"org.opencontainers.image.version={{.Version}}"
|
||||
"org.opencontainers.image.revision={{.FullCommit}}"
|
||||
"org.opencontainers.image.version={{.Version}}"
|
||||
"maintainer=dev@netbird.io"
|
||||
- name: Build image
|
||||
id: build
|
||||
run: |
|
||||
if [[ "${{ github.ref_type }}" == "tag" ]]; then
|
||||
IMG_TAG="${GITHUB_REF_NAME#v}"
|
||||
else
|
||||
IMG_TAG="${GITHUB_SHA::7}"
|
||||
fi
|
||||
IMG=$(make build-image-multiarch) || exit 1
|
||||
echo "IMG=${IMG}" >> $GITHUB_OUTPUT
|
||||
- name: Push image
|
||||
run: |
|
||||
docker push ${{ steps.build.outputs.IMG }}
|
||||
|
||||
Reference in New Issue
Block a user