Skip to content

Commit

Permalink
add github action and scripts to facilitate build process
Browse files Browse the repository at this point in the history
  • Loading branch information
kinarashah authored and github-actions[bot] committed Nov 22, 2024
1 parent db94b0e commit 424d3fc
Show file tree
Hide file tree
Showing 8 changed files with 192 additions and 1 deletion.
30 changes: 30 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Dapper CI on PR
run-name: CI on ${{ github.event_name }}

on:
pull_request:
push:
branches:
- '*'

jobs:
validate:
runs-on: ubuntu-latest
container:
image: rancher/dapper:v0.6.0
permissions:
contents: read
steps:
- name: Fix the not-a-git-repository issue
run: |
apk -U add git
git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Checkout code
uses: actions/checkout@v4

- name: build with Dapper
run: dapper ci

- name: LS the bin
run: ls -lR output/bin
64 changes: 64 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
name: Release When Tagged
run-name: Release ${{ github.ref_name }}

on:
push:
tags: '*'

jobs:
validate:
runs-on: ubuntu-latest
container:
image: rancher/dapper:v0.6.0
permissions:
contents: read
steps:
- name: Check For Alpha / RC in Release
if: contains(github.ref_name, 'rc') || contains(github.ref_name, 'alpha')
uses: actions/github-script@v7
with:
script: |
core.setFailed('No RCs or Alphas are released in this repo. Skipping release...')
- name: Fix the not-a-git-repository issue
run: |
apk -U add git
git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Checkout code
uses: actions/checkout@v4

- name: Setup Go
uses: actions/setup-go@v5
with:
go-version-file: go.mod

- name: build with Dapper
run: dapper ci

- name: Archive production artifacts
uses: actions/upload-artifact@v4
with:
name: kubernetes-build
path: output/bin
if-no-files-found: error
overwrite: true

create-release:
runs-on: ubuntu-latest
needs:
- validate
permissions:
contents: write # needed for creating the GH release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Download assets
uses: actions/download-artifact@v4

- name: Create GH Release
run: |
gh release create ${{ github.ref_name }} --verify-tag --generate-notes kubernetes-build/*
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,8 @@ __*
# This is where the result of the go build goes
/output*/
/_output*/
/_output
/_output/
Dockerfile.dapper?*

# Emacs save files
*~
Expand Down
19 changes: 19 additions & 0 deletions Dockerfile.dapper
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
FROM registry.suse.com/bci/golang:1.22

ARG DAPPER_HOST_ARCH
ARG DEBIAN_FRONTEND=noninteractive
ENV HOST_ARCH=${DAPPER_HOST_ARCH} ARCH=${DAPPER_HOST_ARCH}

RUN zypper install -y -f docker rsync awk
COPY --from=docker/buildx-bin:0.10.2 /buildx /usr/libexec/docker/cli-plugins/docker-buildx

ENV DAPPER_SOURCE /go/src/github.com/rancher/kubernetes/
ENV DAPPER_RUN_ARGS --privileged -v /var/lib/docker
ENV DAPPER_OUTPUT ./output/bin
ENV DAPPER_DOCKER_SOCKET true
ENV DAPPER_ENV TAG REPO GOOS CROSS DRONE_TAG
ENV HOME ${DAPPER_SOURCE}
WORKDIR ${DAPPER_SOURCE}
ENTRYPOINT ["./scripts/entry"]
CMD ["ci"]

39 changes: 39 additions & 0 deletions scripts/build
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/bin/bash
set -e

source $(dirname $0)/version

cd $(dirname $0)/..

OS_ARCH_LINUX="arm64 amd64"
KUBE_BUILD_PLATFORMS="linux/arm64 linux/amd64"
K8S_BASE="k8s.io/component-base"

mkdir -p output/bin
if [ -n "$VERSION" ]; then
TAG=$VERSION
fi

buildDate=$(date -u '+%Y-%m-%dT%H:%M:%SZ')
GOLDFLAGS="
-X ${K8S_BASE}/version.gitVersion=${TAG}
-X ${K8S_BASE}/version.gitCommit=${COMMIT}
-X ${K8S_BASE}/version.gitTreeState=${GIT_TREE_STATE}
-X ${K8S_BASE}/version.buildDate=${buildDate}
"

build/run.sh make kubelet KUBE_BUILD_PLATFORMS="${KUBE_BUILD_PLATFORMS}"

for ARCH in ${OS_ARCH_LINUX}; do
mv _output/dockerized/bin/linux/$ARCH/kubelet .
if [ $ARCH = "amd64" ]; then
./kubelet --version
fi
tar -cvzf output/bin/kubelet-$TAG-$ARCH.tar.gz kubelet && rm kubelet
done

sha256sum output/bin/* > output/bin/sha256sum.txt

rm -rf _output/

echo Built ${TAG}
7 changes: 7 additions & 0 deletions scripts/ci
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/bin/bash
set -e

cd $(dirname $0)

./build

11 changes: 11 additions & 0 deletions scripts/entry
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/bin/bash
set -e

mkdir -p bin dist
if [ -e ./scripts/$1 ]; then
./scripts/"$@"
else
exec "$@"
fi

chown -R $DAPPER_UID:$DAPPER_GID .
20 changes: 20 additions & 0 deletions scripts/version
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#!/bin/bash

if [ -n "$(git status --porcelain --untracked-files=no)" ]; then
DIRTY="-dirty"
fi

COMMIT=$(git rev-parse HEAD)
GIT_TAG=${DRONE_TAG:-$(git tag -l --contains HEAD | head -n 1)}

if [[ -z "$DIRTY" && -n "$GIT_TAG" ]]; then
VERSION=$GIT_TAG
GIT_TREE_STATE=clean
else
VERSION="${COMMIT}${DIRTY}"
GIT_TREE_STATE=dirty
fi

if [ -z "$ARCH" ]; then
ARCH=amd64
fi

0 comments on commit 424d3fc

Please sign in to comment.