Skip to content

Commit 2140507

Browse files
authored
Merge pull request lib#1054 from michaelshobbs/feature/gh-actions
implement gh actions workflow
2 parents 9e747ca + e10fdd5 commit 2140507

25 files changed

+426
-326
lines changed

.github/workflows/test.yml

Lines changed: 211 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,211 @@
1+
name: Test
2+
3+
on:
4+
pull_request:
5+
branches: [ master ]
6+
7+
jobs:
8+
test:
9+
runs-on: ubuntu-latest
10+
strategy:
11+
fail-fast: false
12+
matrix:
13+
postgres:
14+
- '13'
15+
- '12'
16+
- '11'
17+
- '10'
18+
- '9.6'
19+
go:
20+
- '1.17'
21+
- '1.16'
22+
- '1.15'
23+
- '1.14'
24+
steps:
25+
- name: setup postgres pre-reqs
26+
run: |
27+
mkdir init
28+
cat <<CONF > init/root.crt
29+
-----BEGIN CERTIFICATE-----
30+
MIIEBjCCAu6gAwIBAgIJAPizR+OD14YnMA0GCSqGSIb3DQEBCwUAMF4xCzAJBgNV
31+
BAYTAlVTMQ8wDQYDVQQIDAZOZXZhZGExEjAQBgNVBAcMCUxhcyBWZWdhczEaMBgG
32+
A1UECgwRZ2l0aHViLmNvbS9saWIvcHExDjAMBgNVBAMMBXBxIENBMB4XDTIxMDkw
33+
MjAxNTUwMloXDTMxMDkwMzAxNTUwMlowXjELMAkGA1UEBhMCVVMxDzANBgNVBAgM
34+
Bk5ldmFkYTESMBAGA1UEBwwJTGFzIFZlZ2FzMRowGAYDVQQKDBFnaXRodWIuY29t
35+
L2xpYi9wcTEOMAwGA1UEAwwFcHEgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
36+
ggEKAoIBAQDb9d6sjdU6GdibGrXRMOHREH3MRUS8T4TFqGgPEGVDP/V5bAZlBSGP
37+
AN0o9DTyVLcbQpBt8zMTw9KeIzIIe5NIVkSmA16lw/YckGhOM+kZIkiDuE6qt5Ia
38+
OQCRMdXkZ8ejG/JUu+rHU8FJZL8DE+jyYherzdjkeVAQ7JfzxAwW2Dl7T/47g337
39+
Pwmf17AEb8ibSqmXyUN7R5NhJQs+hvaYdNagzdx91E1H+qlyBvmiNeasUQljLvZ+
40+
Y8wAuU79neA+d09O4PBiYwV17rSP6SZCeGE3oLZviL/0KM9Xig88oB+2FmvQ6Zxa
41+
L7SoBlqS+5pBZwpH7eee/wCIKAnJtMAJAgMBAAGjgcYwgcMwDwYDVR0TAQH/BAUw
42+
AwEB/zAdBgNVHQ4EFgQUfIXEczahbcM2cFrwclJF7GbdajkwgZAGA1UdIwSBiDCB
43+
hYAUfIXEczahbcM2cFrwclJF7GbdajmhYqRgMF4xCzAJBgNVBAYTAlVTMQ8wDQYD
44+
VQQIDAZOZXZhZGExEjAQBgNVBAcMCUxhcyBWZWdhczEaMBgGA1UECgwRZ2l0aHVi
45+
LmNvbS9saWIvcHExDjAMBgNVBAMMBXBxIENBggkA+LNH44PXhicwDQYJKoZIhvcN
46+
AQELBQADggEBABFyGgSz2mHVJqYgX1Y+7P+MfKt83cV2uYDGYvXrLG2OGiCilVul
47+
oTBG+8omIMSHOsQZvWMpA5H0tnnlQHrKpKpUyKkSL+Wv5GL0UtBmHX7mVRiaK2l4
48+
q2BjRaQUitp/FH4NSdXtVrMME5T1JBBZHsQkNL3cNRzRKwY/Vj5UGEDxDS7lILUC
49+
e01L4oaK0iKQn4beALU+TvKoAHdPvoxpPpnhkF5ss9HmdcvRktJrKZemDJZswZ7/
50+
+omx8ZPIYYUH5VJJYYE88S7guAt+ZaKIUlel/t6xPbo2ZySFSg9u1uB99n+jTo3L
51+
1rAxFnN3FCX2jBqgP29xMVmisaN5k04UmyI=
52+
-----END CERTIFICATE-----
53+
CONF
54+
cat <<CONF > init/server.crt
55+
-----BEGIN CERTIFICATE-----
56+
MIIDqzCCApOgAwIBAgIJAPiewLrOyYipMA0GCSqGSIb3DQEBCwUAMF4xCzAJBgNV
57+
BAYTAlVTMQ8wDQYDVQQIDAZOZXZhZGExEjAQBgNVBAcMCUxhcyBWZWdhczEaMBgG
58+
A1UECgwRZ2l0aHViLmNvbS9saWIvcHExDjAMBgNVBAMMBXBxIENBMB4XDTIxMDkw
59+
MjAxNTUwMloXDTMxMDkwMzAxNTUwMlowTjELMAkGA1UEBhMCVVMxDzANBgNVBAgM
60+
Bk5ldmFkYTESMBAGA1UEBwwJTGFzIFZlZ2FzMRowGAYDVQQKDBFnaXRodWIuY29t
61+
L2xpYi9wcTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKf6H4UzmANN
62+
QiQJe92Mf3ETMYmpZKNNO9DPEHyNLIkag+XwMrBTdcCK0mLvsNCYpXuBN6703KCd
63+
WAFOeMmj7gOsWtvjt5Xm6bRHLgegekXzcG/jDwq/wyzeDzr/YkITuIlG44Lf9lhY
64+
FLwiHlHOWHnwrZaEh6aU//02aQkzyX5INeXl/3TZm2G2eIH6AOxOKOU27MUsyVSQ
65+
5DE+SDKGcRP4bElueeQWvxAXNMZYb7sVSDdfHI3zr32K4k/tC8x0fZJ5XN/dvl4t
66+
4N4MrYlmDO5XOrb/gQH1H4iu6+5EMDfZYab4fkThnNFdfFqu4/8Scv7KZ8mWqpKM
67+
fGAjEPctQi0CAwEAAaN8MHowHQYDVR0OBBYEFENExPbmDyFB2AJUdbMvVyhlNPD5
68+
MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgWgMBMGA1UdEQQMMAqCCHBvc3RncmVzMCwG
69+
CWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTANBgkq
70+
hkiG9w0BAQsFAAOCAQEAMRVbV8RiEsmp9HAtnVCZmRXMIbgPGrqjeSwk586s4K8v
71+
BSqNCqxv6s5GfCRmDYiqSqeuCVDtUJS1HsTmbxVV7Ke71WMo+xHR1ICGKOa8WGCb
72+
TGsuicG5QZXWaxeMOg4s0qpKmKko0d1aErdVsanU5dkrVS7D6729Ffnzu4lwApk6
73+
invAB67p8u7sojwqRq5ce0vRaG+YFylTrWomF9kauEb8gKbQ9Xc7QfX+h+UH/mq9
74+
Nvdj8LOHp6/82bZdnsYUOtV4lS1IA/qzeXpqBphxqfWabD1yLtkyJyImZKq8uIPp
75+
0CG4jhObPdWcCkXD6bg3QK3mhwlC79OtFgxWmldCRQ==
76+
-----END CERTIFICATE-----
77+
CONF
78+
cat <<CONF > init/server.key
79+
-----BEGIN PRIVATE KEY-----
80+
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCn+h+FM5gDTUIk
81+
CXvdjH9xEzGJqWSjTTvQzxB8jSyJGoPl8DKwU3XAitJi77DQmKV7gTeu9NygnVgB
82+
TnjJo+4DrFrb47eV5um0Ry4HoHpF83Bv4w8Kv8Ms3g86/2JCE7iJRuOC3/ZYWBS8
83+
Ih5Rzlh58K2WhIemlP/9NmkJM8l+SDXl5f902ZthtniB+gDsTijlNuzFLMlUkOQx
84+
PkgyhnET+GxJbnnkFr8QFzTGWG+7FUg3XxyN8699iuJP7QvMdH2SeVzf3b5eLeDe
85+
DK2JZgzuVzq2/4EB9R+IruvuRDA32WGm+H5E4ZzRXXxaruP/EnL+ymfJlqqSjHxg
86+
IxD3LUItAgMBAAECggEAOE2naQ9tIZYw2EFxikZApVcooJrtx6ropMnzHbx4NBB2
87+
K4mChAXFj184u77ZxmGT/jzGvFcI6LE0wWNbK0NOUV7hKZk/fPhkV3AQZrAMrAu4
88+
IVi7PwAd3JkmA8F8XuebUDA5rDGDsgL8GD9baFJA58abeLs9eMGyuF4XgOUh4bip
89+
hgHa76O2rcDWNY5HZqqRslw75FzlYkB0PCts/UJxSswj70kTTihyOhDlrm2TnyxI
90+
ne54UbGRrpfs9wiheSGLjDG81qZToBHQDwoAnjjZhu1VCaBISuGbgZrxyyRyqdnn
91+
xPW+KczMv04XyvF7v6Pz+bUEppalLXGiXnH5UtWvZQKBgQDTPCdMpNE/hwlq4nAw
92+
Kf42zIBWfbnMLVWYoeDiAOhtl9XAUAXn76xe6Rvo0qeAo67yejdbJfRq3HvGyw+q
93+
4PS8r9gXYmLYIPQxSoLL5+rFoBCN3qFippfjLB1j32mp7+15KjRj8FF2r6xIN8fu
94+
XatSRsaqmvCWYLDRv/rbHnxwkwKBgQDLkyfFLF7BtwtPWKdqrwOM7ip1UKh+oDBS
95+
vkCQ08aEFRBU7T3jChsx5GbaW6zmsSBwBwcrHclpSkz7n3aq19DDWObJR2p80Fma
96+
rsXeIcvtEpkvT3pVX268P5d+XGs1kxgFunqTysG9yChW+xzcs5MdKBzuMPPn7rL8
97+
MKAzdar6PwKBgEypkzW8x3h/4Moa3k6MnwdyVs2NGaZheaRIc95yJ+jGZzxBjrMr
98+
h+p2PbvU4BfO0AqOkpKRBtDVrlJqlggVVp04UHvEKE16QEW3Xhr0037f5cInX3j3
99+
Lz6yXwRFLAsR2aTUzWjL6jTh8uvO2s/GzQuyRh3a16Ar/WBShY+K0+zjAoGATnLT
100+
xZjWnyHRmu8X/PWakamJ9RFzDPDgDlLAgM8LVgTj+UY/LgnL9wsEU6s2UuP5ExKy
101+
QXxGDGwUhHar/SQTj+Pnc7Mwpw6HKSOmnnY5po8fNusSwml3O9XppEkrC0c236Y/
102+
7EobJO5IFVTJh4cv7vFxTJzSsRL8KFD4uzvh+nMCgYEAqY8NBYtIgNJA2B6C6hHF
103+
+bG7v46434ZHFfGTmMQwzE4taVg7YRnzYESAlvK4bAP5ZXR90n7GRGFhrXzoMZ38
104+
r0bw/q9rV+ReGda7/Bjf7ciCKiq0RODcHtf4IaskjPXCoQRGJtgCPLhWPfld6g9v
105+
/HTvO96xv9e3eG/PKSPog94=
106+
-----END PRIVATE KEY-----
107+
CONF
108+
cat <<CONF > init/hba.sh
109+
cat <<EOF > /var/lib/postgresql/data/pg_hba.conf
110+
local all all trust
111+
host all postgres all trust
112+
hostnossl all pqgossltest all reject
113+
hostnossl all pqgosslcert all reject
114+
hostssl all pqgossltest all trust
115+
hostssl all pqgosslcert all cert
116+
host all all all trust
117+
EOF
118+
CONF
119+
sudo chown 999:999 ./init/*
120+
sudo chmod 600 ./init/*
121+
122+
- name: start postgres
123+
run: |
124+
docker run -d \
125+
--name pg \
126+
-p 5432:5432 \
127+
-v $(pwd)/init:/init \
128+
-e POSTGRES_PASSWORD=unused \
129+
-e POSTGRES_USER=postgres \
130+
postgres:${{ matrix.postgres }} \
131+
-c ssl=on \
132+
-c ssl_ca_file=/init/root.crt \
133+
-c ssl_cert_file=/init/server.crt \
134+
-c ssl_key_file=/init/server.key
135+
136+
- name: configure postgres
137+
run: |
138+
n=0
139+
until [ "$n" -ge 10 ]
140+
do
141+
docker exec pg pg_isready -h localhost && break
142+
n=$((n+1))
143+
echo waiting for postgres to be ready...
144+
sleep 1
145+
done
146+
docker exec pg bash /init/hba.sh
147+
n=0
148+
until [ "$n" -ge 10 ]
149+
do
150+
docker exec pg su postgres -c '/usr/lib/postgresql/${{ matrix.postgres }}/bin/pg_ctl reload' && break
151+
n=$((n+1))
152+
echo waiting for postgres to reload...
153+
sleep 1
154+
done
155+
156+
- name: setup hosts
157+
run: echo '127.0.0.1 postgres' | sudo tee -a /etc/hosts
158+
159+
- name: create db/roles
160+
run: |
161+
n=0
162+
until [ "$n" -ge 10 ]
163+
do
164+
docker exec pg pg_isready -h localhost && break
165+
n=$((n+1))
166+
echo waiting for postgres to be ready...
167+
sleep 1
168+
done
169+
docker exec pg createdb -h localhost -U postgres pqgotest
170+
docker exec pg createuser -h localhost -U postgres -DRS pqgossltest
171+
docker exec pg createuser -h localhost -U postgres -DRS pqgosslcert
172+
173+
- name: check out code into the Go module directory
174+
uses: actions/checkout@v2
175+
176+
- name: set up go
177+
uses: actions/setup-go@v2
178+
with:
179+
go-version: ${{ matrix.go }}
180+
id: go
181+
182+
- name: set key perms
183+
run: sudo chmod 600 certs/postgresql.key
184+
185+
- name: run tests
186+
env:
187+
PGUSER: postgres
188+
PGHOST: localhost
189+
PGPORT: 5432
190+
PQGOSSLTESTS: 1
191+
PQSSLCERTTEST_PATH: certs
192+
run: |
193+
PQTEST_BINARY_PARAMETERS=no go test -race -v ./...
194+
PQTEST_BINARY_PARAMETERS=yes go test -race -v ./...
195+
196+
- name: install goimports
197+
run: go get golang.org/x/tools/cmd/goimports
198+
199+
- name: install staticcheck
200+
run: |
201+
wget https://github.com/dominikh/go-tools/releases/latest/download/staticcheck_linux_amd64.tar.gz -O - | tar -xz staticcheck
202+
203+
- name: run goimports
204+
run: |
205+
goimports -d -e . | awk '{ print } END { exit NR == 0 ? 0 : 1 }'
206+
207+
- name: run staticcheck
208+
run: ./staticcheck/staticcheck -go 1.13 ./...
209+
210+
- name: build
211+
run: go build -v .

.travis.sh

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

.travis.yml

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

auth/kerberos/krb_unix.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
//go:build !windows
12
// +build !windows
23

34
package kerberos

auth/kerberos/krb_windows.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
//go:build windows
12
// +build windows
23

34
package kerberos

certs/Makefile

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
.PHONY: all root-ssl server-ssl client-ssl
2+
3+
# Rebuilds self-signed root/server/client certs/keys in a consistent way
4+
all: root-ssl server-ssl client-ssl
5+
rm -f .srl
6+
7+
root-ssl:
8+
openssl req -new -sha256 -nodes -newkey rsa:2048 \
9+
-config ./certs/root.cnf \
10+
-keyout /tmp/root.key \
11+
-out /tmp/root.csr
12+
openssl x509 -req -days 3653 -sha256 \
13+
-in /tmp/root.csr \
14+
-extfile /etc/ssl/openssl.cnf -extensions v3_ca \
15+
-signkey /tmp/root.key \
16+
-out ./certs/root.crt
17+
18+
server-ssl:
19+
openssl req -new -sha256 -nodes -newkey rsa:2048 \
20+
-config ./certs/server.cnf \
21+
-keyout ./certs/server.key \
22+
-out /tmp/server.csr
23+
openssl x509 -req -days 3653 -sha256 \
24+
-extfile ./certs/server.cnf -extensions req_ext \
25+
-CA ./certs/root.crt -CAkey /tmp/root.key -CAcreateserial \
26+
-in /tmp/server.csr \
27+
-out ./certs/server.crt
28+
29+
client-ssl:
30+
openssl req -new -sha256 -nodes -newkey rsa:2048 \
31+
-config ./certs/postgresql.cnf \
32+
-keyout ./certs/postgresql.key \
33+
-out /tmp/postgresql.csr
34+
openssl x509 -req -days 3653 -sha256 \
35+
-CA ./certs/root.crt -CAkey /tmp/root.key -CAcreateserial \
36+
-in /tmp/postgresql.csr \
37+
-out ./certs/postgresql.crt

certs/postgresql.cnf

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[req]
2+
distinguished_name = req_distinguished_name
3+
prompt = no
4+
5+
[req_distinguished_name]
6+
C = US
7+
ST = Nevada
8+
L = Las Vegas
9+
O = github.com/lib/pq
10+
CN = pqgosslcert

0 commit comments

Comments
 (0)