forked from zalando/spilo
-
Notifications
You must be signed in to change notification settings - Fork 0
146 lines (128 loc) · 4.42 KB
/
spilo_pgversion_15.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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
name: Build and publish v15 image to dockerhub
on:
push:
branches:
- 'master'
tags:
- '*'
env:
PGVERSION: "15"
PGOLDVERSIONS: "10 11 12 13 14"
IMAGE_NAME: ${{ github.repository }}
TAG: ${{ github.sha }}
jobs:
test_pre_build:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- name: Set up packages
run: sudo apt-get install -y shellcheck
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.7
- name: Install flake8 and docker-compose
run: python -m pip install flake8 docker-compose==1.17.1
- name: Run shellcheck
run: find postgres-appliance -name '*.sh' -print0 | xargs -0 shellcheck
- name: Run flake8
run: find postgres-appliance -name '*.py' -print0 | xargs -0 python -m flake8
- name: Build spilo docker image
run: cd postgres-appliance && docker build --build-arg PGOLDVERSIONS="${{ env.PGOLDVERSIONS }}" --build-arg PGVERSION="${{ env.PGVERSION }}" -t spilo .
- name: Test spilo docker image
run: bash postgres-appliance/tests/test_spilo.sh
- name: Test USE_OLD_LOCALES
run: bash -x postgres-appliance/tests/locales_test/test_locales.sh
if: github.event_name == 'push'
publish:
needs: test_pre_build
name: Build and push Spilo image for postgress 15
runs-on: ubuntu-latest
permissions:
contents: 'read'
packages: 'write'
defaults:
run:
shell: bash
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.7
- name: Install flake8 and docker-compose
run: python -m pip install flake8 docker-compose==1.17.1
- name: Derive spilo image name
id: image
working-directory: postgres-appliance
run: |
IMAGE="${{ env.IMAGE_NAME }}-${{ env.PGVERSION }}:${{ env.TAG }}"
echo "NAME=$IMAGE" >> $GITHUB_OUTPUT
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Login to Dockerhub
if: github.event_name != 'pull_request'
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USER }}
password: ${{ secrets.DOCKERHUB_PASS }}
- name: Build and export to local docker for testing
uses: docker/build-push-action@v3
with:
context: "postgres-appliance/"
load: true
tags: ${{ steps.image.outputs.NAME }}
build-args: |
PGVERSION=${{ env.PGVERSION }}
PGOLDVERSIONS=${{ env.PGOLDVERSIONS }}
# Test complete build
- name: Test spilo docker image
env:
SPILO_TEST_IMAGE: "${{ steps.image.outputs.NAME }}"
PGVERSION: ${{ env.PGVERSION }}
run: |
bash postgres-appliance/tests/test_spilo.sh
- name: Build and push to dockerhub
uses: docker/build-push-action@v3
with:
context: "postgres-appliance/"
push: true
tags: ${{ steps.image.outputs.NAME }}
build-args: |
PGVERSION=${{ env.PGVERSION }}
PGOLDVERSIONS=${{ env.PGOLDVERSIONS }}
kubernetes-installation-test:
needs: publish
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- name: restore spilo image name
id: image
working-directory: postgres-appliance
run: |
IMAGE="docker.io/${{ env.IMAGE_NAME }}-${{ env.PGVERSION }}:${{ env.TAG }}"
echo "NAME=$IMAGE" >> $GITHUB_OUTPUT
- name: Create Kind Cluster
uses: helm/kind-action@v1.1.0
- name: Install envsubst #used for simpler k8s testing
run: |
sudo apt update
sudo apt install gettext-base
- name: Install Spilo
env:
SPILO_TEST_IMAGE: "${{ steps.image.outputs.NAME }}"
run: envsubst < kubernetes/spilo_kubernetes.yaml | kubectl apply -f -
# Send a Notification to the notification channel
- name: Workspace Notification
uses: DTherHtun/google-chat-action@v0.9
if: always()
with:
project: ${{ github.repository }}
commit: "${{ github.event.head_commit.message }}" # ${{ steps.meta.outputs.tags }} ${{ steps.meta-frontend.outputs.tags }}
branch: ${{ github.ref }}
status: ${{ job.status }}
actionid: ${{ github.repository }}/runs/${{ github.run_id }}
webhook: "${{ secrets.GOOGLE_NOTIFICATION_WEBHOOK }}"