Skip to content

Commit 0e2239d

Browse files
committed
feat: add ci support
Signed-off-by: carlory <baofa.fan@daocloud.io>
1 parent ead4b79 commit 0e2239d

1 file changed

Lines changed: 98 additions & 0 deletions

File tree

.github/workflows/aws.yaml

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
name: Build and Push AWS Karpenter Provider Image
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
branches:
7+
- main
8+
- release-*
9+
10+
jobs:
11+
build:
12+
runs-on: ubuntu-latest
13+
14+
env:
15+
KO_DOCKER_REPO: docker.io/inftyai/aws-karpenter
16+
17+
steps:
18+
- name: Checkout forked karpenter
19+
uses: actions/checkout@v4
20+
21+
- name: Set up Go 1.24
22+
uses: actions/setup-go@v5
23+
with:
24+
go-version: "1.24"
25+
26+
- name: Generate commit info and image tag
27+
id: tag
28+
run: |
29+
BRANCH="${GITHUB_REF##*/}"
30+
COMMIT=$(git rev-parse HEAD)
31+
TIMESTAMP=$(git show -s --format=%ct $COMMIT)
32+
VERSION_DATE=$(date -u -d "@$TIMESTAMP" +'%Y%m%d%H%M%S')
33+
PSEUDO_VERSION="v0.0.0-${VERSION_DATE}-${COMMIT:0:12}"
34+
35+
if [[ "$BRANCH" == "main" ]]; then
36+
TAG="latest"
37+
IMAGE_TAG="latest"
38+
elif [[ "$BRANCH" == release-* ]]; then
39+
TAG="${BRANCH#release-}" # e.g. v0.36.2
40+
IMAGE_TAG="${TAG#v}" # e.g. 0.36.2
41+
else
42+
TAG="fork-${PSEUDO_VERSION}"
43+
IMAGE_TAG="${TAG}" # keep full tag
44+
fi
45+
46+
echo "commit=$COMMIT" >> $GITHUB_OUTPUT
47+
echo "version=$PSEUDO_VERSION" >> $GITHUB_OUTPUT
48+
echo "tag=$TAG" >> $GITHUB_OUTPUT
49+
echo "image_tag=$IMAGE_TAG" >> $GITHUB_OUTPUT
50+
echo "✅ Using image tag: $IMAGE_TAG"
51+
52+
- name: Clone karpenter-provider-aws
53+
run: |
54+
git clone https://github.com/aws/karpenter-provider-aws.git aws-provider
55+
cd aws-provider
56+
57+
TAG="${{ steps.tag.outputs.tag }}"
58+
if [[ "$TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
59+
echo "🔄 Attempting to checkout provider tag: $TAG"
60+
if git rev-parse "refs/tags/$TAG" >/dev/null 2>&1; then
61+
git checkout "tags/$TAG" -b "build-from-tag-$TAG"
62+
else
63+
echo "❌ Tag '$TAG' not found in karpenter-provider-aws repo."
64+
exit 1
65+
fi
66+
else
67+
echo "🔄 Checking out provider branch: main"
68+
git checkout main
69+
fi
70+
71+
- name: Replace karpenter module with forked commit version
72+
run: |
73+
cd aws-provider
74+
go mod edit -replace sigs.k8s.io/karpenter=github.com/InftyAI/karpenter@${{ steps.tag.outputs.version }}
75+
go mod tidy
76+
77+
- name: Install build tools via make toolchain
78+
run: |
79+
cd aws-provider
80+
make toolchain
81+
82+
- name: Login to DockerHub
83+
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 #v3
84+
with:
85+
username: ${{ secrets.DOCKERHUB_USERNAME }}
86+
password: ${{ secrets.DOCKERHUB_TOKEN }}
87+
88+
- name: Build and push image using ko
89+
run: |
90+
cd aws-provider
91+
ko build --bare \
92+
--tags ${{ steps.tag.outputs.image_tag }} \
93+
github.com/aws/karpenter-provider-aws/cmd/controller
94+
95+
- name: Show pushed image
96+
run: |
97+
echo "✅ Image pushed to:"
98+
echo "docker.io/carlory/aws-karpenter/controller:${{ steps.tag.outputs.image_tag }}"

0 commit comments

Comments
 (0)