-
-
Notifications
You must be signed in to change notification settings - Fork 8
130 lines (112 loc) · 3.99 KB
/
publish-kubernetes-schemas.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
---
name: Publish Kubernetes schemas
on:
workflow_dispatch: {}
schedule:
- cron: 0 0 * * *
push:
branches:
- main
paths:
- ./github/workflows/publish-kubernetes-schemas.yaml
jobs:
publish-manifests:
name: Publish manifests
runs-on: ["arc-runner-set-home-cluster"]
steps:
- name: Setup tools
shell: bash
run: |
sudo apt-get -qq update && \
sudo apt-get -qq install --no-install-recommends -y curl
- name: Setup Kube tools
uses: yokawasa/[email protected]
with:
setup-tools: |
kubectl
- name: Setup Flux
uses: fluxcd/flux2/[email protected]
- name: Setup Python
uses: actions/[email protected]
with:
python-version: 3.x
- name: Login to GitHub Container Registry
uses: docker/[email protected]
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Write kubeconfig
id: kubeconfig
uses: timheuer/[email protected]
with:
encodedString: ${{ secrets.KUBECONFIG }}
fileName: kubeconfig
- name: Download and run crd-extractor
env:
KUBECONFIG: ${{ steps.kubeconfig.outputs.filePath }}
shell: bash
run: |
mkdir -p /home/runner/crds
curl -fsSL -o $GITHUB_WORKSPACE/crd-extractor.sh \
https://raw.githubusercontent.com/datreeio/CRDs-catalog/main/Utilities/crd-extractor.sh
chmod +x $GITHUB_WORKSPACE/crd-extractor.sh
bash $GITHUB_WORKSPACE/crd-extractor.sh
- name: Generate tag
id: generate-tag
shell: bash
run: echo "tag=ghcr.io/${{ github.repository_owner }}/kubernetes-schemas-oci:$(git rev-parse --short HEAD)" >> "${GITHUB_OUTPUT}"
- name: Publish manifests
shell: bash
run: |
flux push artifact oci://${{ steps.generate-tag.outputs.tag }} \
--path="/home/runner/.datree/crdSchemas" \
--source="${{ github.repositoryUrl }}" \
--revision="${{ github.ref_name }}@sha1:$(git rev-parse HEAD)"
- name: Tag manifests
shell: bash
run: flux tag artifact oci://${{ steps.generate-tag.outputs.tag }} --tag main
publish-web:
name: Publish web
runs-on: ubuntu-latest
needs: [publish-manifests]
steps:
- name: Setup Flux
uses: fluxcd/flux2/[email protected]
- name: Setup QEMU
uses: docker/[email protected]
- name: Set up Docker Buildx
id: buildx
uses: docker/[email protected]
- name: Login to GitHub Container Registry
uses: docker/[email protected]
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Pull manifests
shell: bash
run: |
mkdir -p /home/runner/crdSchemas
flux pull artifact oci://ghcr.io/${{ github.repository_owner }}/kubernetes-schemas-oci:$(git rev-parse --short HEAD) --output /home/runner/crdSchemas
- name: Write nginx-unprivileged Dockerfile
run: |
cat <<EOF > /home/runner/crdSchemas/Dockerfile
FROM docker.io/nginxinc/nginx-unprivileged:latest
COPY --chown=nginx:nginx --chmod=755 . /usr/share/nginx/html
USER nginx
EOF
- name: Publish web container
uses: docker/[email protected]
with:
context: /home/runner/crdSchemas
platforms: linux/amd64,linux/arm64
file: /home/runner/crdSchemas/Dockerfile
push: true
tags: |
ghcr.io/${{ github.repository_owner }}/kubernetes-schemas-web:latest
cache-from: type=gha
cache-to: type=gha,mode=max
labels:
org.opencontainers.image.source="${{ github.repositoryUrl }}"
org.opencontainers.image.authors="Budiman JOJO <[email protected]>"