Skip to content

Commit d8307b6

Browse files
committed
Migrate to GitHub Actions (#245)
1 parent 5edadfe commit d8307b6

File tree

7 files changed

+167
-190
lines changed

7 files changed

+167
-190
lines changed

.github/workflows/pipeline.yaml

Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
name: Pipeline
2+
3+
on:
4+
push:
5+
paths:
6+
- "src/**"
7+
- ".github/workflows/**"
8+
pull_request:
9+
paths:
10+
- "src/**"
11+
- ".github/workflows/**"
12+
13+
env:
14+
version: 6.1.${{github.run_number}}
15+
imageRepository: "emberstack/kubernetes-reflector"
16+
DOCKER_CLI_EXPERIMENTAL: "enabled"
17+
18+
19+
jobs:
20+
ci:
21+
name: CI
22+
runs-on: ubuntu-latest
23+
steps:
24+
25+
- name: tools - helm - install
26+
uses: azure/setup-helm@v1
27+
28+
- name: tools - docker - login
29+
uses: docker/login-action@v1
30+
with:
31+
username: ${{ secrets.ES_DOCKERHUB_USERNAME }}
32+
password: ${{ secrets.ES_DOCKERHUB_PAT }}
33+
34+
- name: checkout
35+
uses: actions/checkout@v2
36+
37+
- name: artifacts - prepare directories
38+
run: |
39+
mkdir -p .artifacts/helm
40+
mkdir -p .artifacts/kubectl
41+
42+
- name: helm - import README
43+
run: cp README.md src/helm/reflector/README.md
44+
45+
- name: helm - package chart
46+
run: helm package --destination .artifacts/helm --version ${{env.version}} --app-version ${{env.version}} src/helm/reflector
47+
48+
- name: helm - template chart
49+
run: helm template --namespace kube-system reflector .artifacts/helm/reflector-${{env.version}}.tgz > .artifacts/kubectl/reflector-${{env.version}}.yaml
50+
51+
- name: "artifacts - upload - helm chart"
52+
uses: actions/upload-artifact@v2
53+
with:
54+
name: helm
55+
path: .artifacts/helm
56+
57+
- name: "artifacts - upload - kubectl manifests"
58+
uses: actions/upload-artifact@v2
59+
with:
60+
name: kubectl
61+
path: .artifacts/kubectl
62+
63+
- name: "docker - build and publish"
64+
run: |
65+
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
66+
docker buildx create --name builder --driver docker-container --use
67+
docker buildx inspect --bootstrap
68+
docker buildx build --push --platform linux/amd64 -t ${{env.imageRepository}}:build-${{env.version}}-amd64 -f src/ES.Kubernetes.Reflector/Dockerfile src/
69+
docker buildx build --push --platform linux/arm -t ${{env.imageRepository}}:build-${{env.version}}-arm32v7 -f src/ES.Kubernetes.Reflector/Dockerfile src/
70+
docker buildx build --push --platform linux/arm64 -t ${{env.imageRepository}}:build-${{env.version}}-arm64v8 -f src/ES.Kubernetes.Reflector/Dockerfile src/
71+
docker pull ${{env.imageRepository}}:build-${{env.version}}-amd64
72+
docker pull ${{env.imageRepository}}:build-${{env.version}}-arm32v7
73+
docker pull ${{env.imageRepository}}:build-${{env.version}}-arm64v8
74+
docker manifest create ${{env.imageRepository}}:build-${{env.version}} ${{env.imageRepository}}:build-${{env.version}}-amd64 ${{env.imageRepository}}:build-${{env.version}}-arm32v7 ${{env.imageRepository}}:build-${{env.version}}-arm64v8
75+
docker manifest inspect ${{env.imageRepository}}:build-${{env.version}}
76+
docker manifest push ${{env.imageRepository}}:build-${{env.version}}
77+
78+
cd:
79+
name: CD
80+
needs: ci
81+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
82+
runs-on: ubuntu-latest
83+
steps:
84+
- name: tools - helm - install
85+
uses: azure/setup-helm@v1
86+
87+
- name: tools - docker - login
88+
uses: docker/login-action@v1
89+
with:
90+
username: ${{ secrets.ES_DOCKERHUB_USERNAME }}
91+
password: ${{ secrets.ES_DOCKERHUB_PAT }}
92+
93+
- name: artifacts - download - helm chart
94+
uses: actions/download-artifact@v2
95+
with:
96+
name: helm
97+
path: .artifacts/helm
98+
99+
- name: artifacts - download - kubectl manifests
100+
uses: actions/download-artifact@v2
101+
with:
102+
name: kubectl
103+
path: .artifacts/kubectl
104+
105+
- name: "docker - tag and push"
106+
run: |
107+
docker pull ${{env.imageRepository}}:build-${{env.version}}-amd64
108+
docker pull ${{env.imageRepository}}:build-${{env.version}}-arm32v7
109+
docker pull ${{env.imageRepository}}:build-${{env.version}}-arm64v8
110+
docker manifest create ${{env.imageRepository}}:${{env.version}} ${{env.imageRepository}}:build-${{env.version}}-amd64 ${{env.imageRepository}}:build-${{env.version}}-arm32v7 ${{env.imageRepository}}:build-${{env.version}}-arm64v8
111+
docker manifest create ${{env.imageRepository}}:latest ${{env.imageRepository}}:build-${{env.version}}-amd64 ${{env.imageRepository}}:build-${{env.version}}-arm32v7 ${{env.imageRepository}}:build-${{env.version}}-arm64v8
112+
docker manifest push ${{env.imageRepository}}:${{env.version}}
113+
docker manifest push ${{env.imageRepository}}:latest
114+
docker manifest push ${{env.imageRepository}}:${{env.version}}
115+
docker manifest push ${{env.imageRepository}}:latest
116+
docker tag ${{env.imageRepository}}:build-${{env.version}}-amd64 ${{env.imageRepository}}:${{env.version}}-amd64
117+
docker tag ${{env.imageRepository}}:build-${{env.version}}-arm32v7 ${{env.imageRepository}}:${{env.version}}-arm32v7
118+
docker tag ${{env.imageRepository}}:build-${{env.version}}-arm64v8 ${{env.imageRepository}}:${{env.version}}-arm64v8
119+
docker push ${{env.imageRepository}}:${{env.version}}-amd64
120+
docker push ${{env.imageRepository}}:${{env.version}}-arm32v7
121+
docker push ${{env.imageRepository}}:${{env.version}}-arm64v8
122+
123+
- name: github - checkout - helm-charts
124+
uses: actions/checkout@v2
125+
with:
126+
repository: emberstack/helm-charts
127+
token: ${{ secrets.ES_GITHUB_PAT }}
128+
path: helm-charts
129+
130+
131+
- name: github - publish - chart
132+
run: |
133+
mkdir -p helm-charts/charts
134+
cp .artifacts/helm/reflector-${{env.version}}.tgz helm-charts/charts
135+
136+
cd helm-charts
137+
rm -f index.yaml
138+
helm repo index ./
139+
140+
git config user.name "Romeo Dumitrescu"
141+
git config user.email "5931333+winromulus@users.noreply.github.com"
142+
git add .
143+
git status
144+
git commit -m "Added reflector-${{env.version}}.tgz"
145+
git push
146+
147+
- name: github - release - set manifest name
148+
run: |
149+
mkdir -p github
150+
cp .artifacts/kubectl/reflector-$(Build.BuildNumber).yaml github/reflector.yaml
151+
152+
- name: github - create release
153+
uses: softprops/action-gh-release@v1
154+
with:
155+
repository: emberstack/kubernetes-reflector
156+
tag_name: v${{env.version}}
157+
body: The release process is automated.
158+
token: ${{ secrets.ES_GITHUB_PAT }}
159+
files: |
160+
github/reflector.yaml
161+

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Reflector
22
Reflector is a Kubernetes addon designed to monitor changes to resources (secrets and configmaps) and reflect changes to mirror resources in the same or other namespaces.
33

4-
[![Build Status](https://dev.azure.com/emberstack/OpenSource/_apis/build/status/kubernetes-reflector?branchName=main)](https://dev.azure.com/emberstack/OpenSource/_apis/build/status/kubernetes-reflector?branchName=main)
4+
[![Pipeline](https://github.com/emberstack/kubernetes-reflector/actions/workflows/pipeline.yaml/badge.svg)](https://github.com/emberstack/kubernetes-reflector/actions/workflows/pipeline.yaml)
55
[![Release](https://img.shields.io/github/release/emberstack/kubernetes-reflector.svg?style=flat-square)](https://github.com/emberstack/kubernetes-reflector/releases/latest)
66
[![Docker Image](https://img.shields.io/docker/image-size/emberstack/kubernetes-reflector/latest?style=flat-square)](https://hub.docker.com/r/emberstack/kubernetes-reflector)
77
[![Docker Pulls](https://img.shields.io/docker/pulls/emberstack/kubernetes-reflector?style=flat-square)](https://hub.docker.com/r/emberstack/kubernetes-reflector)

azure-pipelines.yaml

Lines changed: 0 additions & 171 deletions
This file was deleted.

src/ES.Kubernetes.Reflector/Core/Mirroring/Constants/Annotations.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,5 @@ public static class Reflection
1616
public static string MetaAutoReflects => $"{Prefix}/auto-reflects";
1717
public static string MetaReflectedVersion => $"{Prefix}/reflected-version";
1818
public static string MetaReflectedAt => $"{Prefix}/reflected-at";
19-
20-
2119
}
2220
}

src/ES.Kubernetes.Reflector/Core/Watchers/WatcherBackgroundService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
3636
var watchList = watcher.WatchAsync<TResource, TResourceList>();
3737

3838
await foreach (var (type, item) in watchList
39-
.WithCancellation(stoppingToken))
39+
.WithCancellation(stoppingToken))
4040
await Mediator.Publish(new WatcherEvent
4141
{
4242
Item = item,

src/ES.Kubernetes.Reflector/ES.Kubernetes.Reflector.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010

1111
<ItemGroup>
1212
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="7.2.0" />
13-
<PackageReference Include="KubernetesClient" Version="6.0.25" />
13+
<PackageReference Include="KubernetesClient" Version="6.0.26" />
1414
<PackageReference Include="MediatR.Extensions.Microsoft.DependencyInjection" Version="9.0.0" />
15-
<PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="6.0.0" />
15+
<PackageReference Include="Microsoft.AspNetCore.JsonPatch" Version="6.0.1" />
1616
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.14.0" />
1717
<PackageReference Include="Serilog.Extensions.Hosting" Version="4.2.0" />
1818
<PackageReference Include="Serilog.Extensions.Logging" Version="3.1.0" />

0 commit comments

Comments
 (0)