-
Notifications
You must be signed in to change notification settings - Fork 77
158 lines (148 loc) · 4.98 KB
/
extension_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
152
153
154
155
156
157
158
name: PGMQ Extension
defaults:
run:
shell: bash
working-directory: ./pgmq-extension
on:
pull_request:
branches:
- main
paths:
- "pgmq-extension/**"
- ".github/workflows/extension_ci.yml"
push:
branches:
- main
paths:
- "pgmq-extension/**"
- ".github/workflows/extension_ci.yml"
release:
types:
- created
jobs:
test:
name: Test 🐘 ${{ matrix.pg }} with pg_partman ${{ matrix.partman }}
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
pg: [12, 13, 14, 15, 16, 17]
partman: [4.7.3, 5.1.0]
exclude:
# pg_partman does not support pg < 14
- pg: 12
partman: 5.1.0
- pg: 13
partman: 5.1.0
container: pgxn/pgxn-tools
steps:
- run: pg-start ${{ matrix.pg }}
working-directory: ./
- uses: actions/checkout@v4
- run: pgxn install 'pg_partman=${{ matrix.partman }}'
- run: pg-build-test
publish:
name: trunk publish
runs-on: ubuntu-22.04
strategy:
matrix:
# add 17 when trunk supports it
pg-version: [14, 15, 16]
steps:
- uses: actions/checkout@v4
- name: Install Rust stable toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
- uses: Swatinem/rust-cache@v2
with:
prefix-key: "pgmq-extension-test"
workspaces: |
pgmq/pgmq-extension
- name: Install stoml and pg-trunk
shell: bash
run: |
set -xe
wget https://github.com/freshautomations/stoml/releases/download/v0.7.1/stoml_linux_amd64 &> /dev/null
mv stoml_linux_amd64 stoml
chmod +x stoml
sudo mv stoml /usr/local/bin/
cargo install pg-trunk
- name: Make trunk
run: make Trunk.toml
- name: trunk build
run: trunk build --pg-version ${{ matrix.pg-version }}
- name: trunk publish
# only publish release events
if: github.event_name == 'release'
env:
TRUNK_API_TOKEN: ${{ secrets.TRUNK_AUTH_TOKEN }}
run: |
pgmq_ver=$(stoml Trunk.toml extension.version)
pgmq_descr=$(stoml Trunk.toml extension.description)
pgmq_repo=$(stoml Trunk.toml extension.repository)
trunk publish pgmq --version ${pgmq_ver} --description "A lightweight message queue. Like AWS SQS and RSMQ, on Postgres." --homepage "https://github.com/tembo-io/pgmq" --repository "https://github.com/tembo-io/pgmq" --license "PostgreSQL" --category featured --category orchestration
build_and_push:
name: Build and push images
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
pg: [14, 15, 16, 17]
outputs:
short_sha: ${{ steps.versions.outputs.SHORT_SHA }}
steps:
- name: Check out the repo
uses: actions/checkout@v4
- name: Install stoml
shell: bash
run: |
set -xe
sudo apt-get update && sudo apt-get install -y wget
wget https://github.com/freshautomations/stoml/releases/download/v0.7.1/stoml_linux_amd64 &> /dev/null
mv stoml_linux_amd64 stoml
chmod +x stoml
sudo mv stoml /usr/local/bin/
- name: Set version strings
id: versions
run: |
echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
echo "TAG_VER=$(grep 'default_version' pgmq.control | cut -d "'" -f 2)" >> $GITHUB_OUTPUT
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Quay
uses: docker/login-action@v2
with:
registry: quay.io/tembo
username: ${{ secrets.QUAY_USER_TEMBO }}
password: ${{ secrets.QUAY_PASSWORD_TEMBO }}
- name: Generate dockerfile from template file
working-directory: ./
run: ./images/pgmq-pg/replace-pg-version.sh ${{ matrix.pg }} ./images/pgmq-pg/Dockerfile.in ./images/pgmq-pg/Dockerfile
- name: Build and push -- Commit
# push commit build when not a release
if: github.event_name != 'release'
uses: docker/build-push-action@v5
with:
working-directory: ./
file: ./images/pgmq-pg/Dockerfile
context: .
platforms: linux/amd64, linux/arm64
push: true
tags: |
quay.io/tembo/pg${{matrix.pg}}-pgmq:v${{ steps.versions.outputs.SHORT_SHA }}
- name: Build and push -- Releases
# only publish release events
if: github.event_name == 'release'
uses: docker/build-push-action@v5
with:
working-directory: ./
file: ./images/pgmq-pg/Dockerfile
context: .
platforms: linux/amd64, linux/arm64
push: true
tags: |
quay.io/tembo/pg${{matrix.pg}}-pgmq:v${{ steps.versions.outputs.TAG_VER }}
quay.io/tembo/pg${{matrix.pg}}-pgmq:latest