-
Notifications
You must be signed in to change notification settings - Fork 2
151 lines (131 loc) · 4.39 KB
/
ci.yml
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
name: CI
on:
pull_request:
branches:
- "*"
push:
branches:
- master
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
concurrency:
group: '${{ github.head_ref || github.ref }}'
cancel-in-progress: true
jobs:
build:
name: Build
runs-on: ubuntu-24.04
steps:
- name: Set up Go 1.23
uses: actions/setup-go@v1
with:
go-version: '1.23'
id: go
- uses: actions/checkout@v2
- name: Set up QEMU
id: qemu
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Prepare Host
run: |
sudo apt-get -qq update || true
sudo apt-get install -y bzr
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.21.1/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
# - name: Run checks
# run: |
# make ci
- name: Log in to the GitHub Container registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Publish to the GitHub Container registry
id: publish-to-ghcr
env:
REGISTRY: ghcr.io/${{ github.repository_owner }}
APPSCODE_ENV: prod
run: |
make version >> $GITHUB_ENV
make push
kubernetes:
name: Kubernetes
runs-on: ubuntu-24.04
needs: build
strategy:
matrix:
k8s: [v1.25.8]
steps:
- uses: actions/checkout@v2
- name: Create Kubernetes ${{ matrix.k8s }} cluster
id: kind
uses: engineerd/[email protected]
with:
version: v0.25.0
config: hack/kubernetes/kind.yaml
image: kindest/node:${{ matrix.k8s }}
- name: Prepare cluster for testing
id: local-path
run: |
echo "waiting for nodes to be ready ..."
kubectl wait --for=condition=Ready nodes --all --timeout=5m
kubectl get nodes
echo
kubectl version
echo
echo "install helm 3"
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
- name: Check out installer
run: |
cd ..
git clone https://github.com/open-viz/installer.git
cd installer
git checkout master
- name: Run e2e tests
env:
REGISTRY: ghcr.io/${{ github.repository_owner }}
TEST_CREDENTIALS: ${{ secrets.TEST_CREDENTIALS }}
GOOGLE_SERVICE_ACCOUNT_JSON_KEY: ${{ secrets.GOOGLE_SERVICE_ACCOUNT_JSON_KEY }}
run: |
echo "preparing test credentials"
mkdir -p hack/config
echo -n "$TEST_CREDENTIALS" > hack/config/.env
echo >> hack/config/.env
echo "GOOGLE_SERVICE_ACCOUNT_JSON_KEY=$(echo $GOOGLE_SERVICE_ACCOUNT_JSON_KEY)" >> hack/config/.env
make install || ( kubectl describe deployment -n openviz grafana-tools; kubectl logs -n openviz deployment/grafana-tools; exit 1; )
echo
make e2e-tests
cleanup:
name: Cleanup
runs-on: ubuntu-24.04
if: ${{ always() }}
needs: [build, kubernetes]
steps:
- uses: actions/checkout@v2
- name: Install gh-tools
run: |
curl -fsSL -O https://github.com/appscodelabs/gh-tools/releases/download/v0.2.14/gh-tools-linux-amd64
chmod +x gh-tools-linux-amd64
sudo mv gh-tools-linux-amd64 /usr/local/bin/gh-tools
- name: Set tags as GITHUB_ENV
env:
REGISTRY: ghcr.io/${{ github.repository_owner }}
run: |
make version >> $GITHUB_ENV
- name: Delete CI Docker images
env:
GH_TOOLS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
echo "deleting ghcr.io/${{ github.repository_owner }}/grafana-tools:${{ env.TAG_PROD }}"
gh-tools delete-package \
--org=${{ github.repository_owner }} \
--pkg=grafana-tools \
--tag=${{ env.TAG_PROD }} || true
echo "deleting ghcr.io/${{ github.repository_owner }}/grafana-tools:${{ env.TAG_DBG }}"
gh-tools delete-package \
--org=${{ github.repository_owner }} \
--pkg=grafana-tools \
--tag=${{ env.TAG_DBG }} || true