Add github actions CI flow
This commit is contained in:
parent
1ac4f7fe42
commit
0773c6e9f3
2
.github/workflows/.editorconfig
vendored
Normal file
2
.github/workflows/.editorconfig
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
[*.yml]
|
||||||
|
indent_size = 2
|
77
.github/workflows/ci.yml
vendored
Normal file
77
.github/workflows/ci.yml
vendored
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
name: CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: Build
|
||||||
|
runs-on: ubuntu-16.04
|
||||||
|
env:
|
||||||
|
GOFLAGS: -mod=readonly
|
||||||
|
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
image: postgres:10.8
|
||||||
|
ports:
|
||||||
|
- 5432
|
||||||
|
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
|
||||||
|
|
||||||
|
etcd:
|
||||||
|
image: gcr.io/etcd-development/etcd:v3.2.9
|
||||||
|
ports:
|
||||||
|
- 2379
|
||||||
|
env:
|
||||||
|
ETCD_LISTEN_CLIENT_URLS: http://0.0.0.0:2379
|
||||||
|
ETCD_ADVERTISE_CLIENT_URLS: http://0.0.0.0:2379
|
||||||
|
options: --health-cmd "ETCDCTL_API=3 etcdctl --endpoints http://localhost:2379 endpoint health" --health-interval 10s --health-timeout 5s --health-retries 5
|
||||||
|
|
||||||
|
keystone:
|
||||||
|
image: openio/openstack-keystone:pike
|
||||||
|
ports:
|
||||||
|
- 5000
|
||||||
|
- 35357
|
||||||
|
options: --health-cmd "curl --fail http://localhost:5000/v3" --health-interval 10s --health-timeout 5s --health-retries 5
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Set up Go
|
||||||
|
uses: actions/setup-go@v1
|
||||||
|
with:
|
||||||
|
go-version: 1.13
|
||||||
|
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v1
|
||||||
|
|
||||||
|
- name: Setup MySQL database
|
||||||
|
run: mysql -u root -proot -e 'CREATE DATABASE dex;'
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: make testall
|
||||||
|
env:
|
||||||
|
DEX_MYSQL_DATABASE: dex
|
||||||
|
DEX_MYSQL_USER: root
|
||||||
|
DEX_MYSQL_PASSWORD: root
|
||||||
|
DEX_MYSQL_HOST: 127.0.0.1
|
||||||
|
DEX_MYSQL_PORT: 3306
|
||||||
|
DEX_POSTGRES_DATABASE: postgres
|
||||||
|
DEX_POSTGRES_USER: postgres
|
||||||
|
DEX_POSTGRES_PASSWORD: postgres
|
||||||
|
DEX_POSTGRES_HOST: localhost
|
||||||
|
DEX_POSTGRES_PORT: ${{ job.services.postgres.ports[5432] }}
|
||||||
|
DEX_ETCD_ENDPOINTS: http://localhost:${{ job.services.etcd.ports[2379] }}
|
||||||
|
# TODO: enable
|
||||||
|
DEX_LDAP_TESTS: 0
|
||||||
|
DEX_KEYSTONE_URL: http://localhost:${{ job.services.keystone.ports[5000] }}
|
||||||
|
DEX_KEYSTONE_ADMIN_URL: http://localhost:${{ job.services.keystone.ports[35357] }}
|
||||||
|
DEX_KEYSTONE_ADMIN_USER: demo
|
||||||
|
DEX_KEYSTONE_ADMIN_PASS: DEMO_PASS
|
||||||
|
|
||||||
|
#- name: Run Kubernetes tests
|
||||||
|
# run: ./scripts/test-k8s.sh
|
||||||
|
|
||||||
|
# Ensure proto generation doesn't depend on external packages.
|
||||||
|
- name: Verify proto
|
||||||
|
run: make verify-proto
|
@ -4,6 +4,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
"strconv"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -220,12 +221,24 @@ func TestPostgres(t *testing.T) {
|
|||||||
if host == "" {
|
if host == "" {
|
||||||
t.Skipf("test environment variable %q not set, skipping", testPostgresEnv)
|
t.Skipf("test environment variable %q not set, skipping", testPostgresEnv)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
port := uint64(5432)
|
||||||
|
if rawPort := os.Getenv("DEX_POSTGRES_PORT"); rawPort != "" {
|
||||||
|
var err error
|
||||||
|
|
||||||
|
port, err = strconv.ParseUint(rawPort, 10, 32)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("invalid postgres port %q: %s", rawPort, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
p := &Postgres{
|
p := &Postgres{
|
||||||
NetworkDB: NetworkDB{
|
NetworkDB: NetworkDB{
|
||||||
Database: getenv("DEX_POSTGRES_DATABASE", "postgres"),
|
Database: getenv("DEX_POSTGRES_DATABASE", "postgres"),
|
||||||
User: getenv("DEX_POSTGRES_USER", "postgres"),
|
User: getenv("DEX_POSTGRES_USER", "postgres"),
|
||||||
Password: getenv("DEX_POSTGRES_PASSWORD", "postgres"),
|
Password: getenv("DEX_POSTGRES_PASSWORD", "postgres"),
|
||||||
Host: host,
|
Host: host,
|
||||||
|
Port: uint16(port),
|
||||||
ConnectionTimeout: 5,
|
ConnectionTimeout: 5,
|
||||||
},
|
},
|
||||||
SSL: SSL{
|
SSL: SSL{
|
||||||
@ -242,12 +255,24 @@ func TestMySQL(t *testing.T) {
|
|||||||
if host == "" {
|
if host == "" {
|
||||||
t.Skipf("test environment variable %q not set, skipping", testMySQLEnv)
|
t.Skipf("test environment variable %q not set, skipping", testMySQLEnv)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
port := uint64(3306)
|
||||||
|
if rawPort := os.Getenv("DEX_MYSQL_PORT"); rawPort != "" {
|
||||||
|
var err error
|
||||||
|
|
||||||
|
port, err = strconv.ParseUint(rawPort, 10, 32)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("invalid mysql port %q: %s", rawPort, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
s := &MySQL{
|
s := &MySQL{
|
||||||
NetworkDB: NetworkDB{
|
NetworkDB: NetworkDB{
|
||||||
Database: getenv("DEX_MYSQL_DATABASE", "mysql"),
|
Database: getenv("DEX_MYSQL_DATABASE", "mysql"),
|
||||||
User: getenv("DEX_MYSQL_USER", "mysql"),
|
User: getenv("DEX_MYSQL_USER", "mysql"),
|
||||||
Password: getenv("DEX_MYSQL_PASSWORD", ""),
|
Password: getenv("DEX_MYSQL_PASSWORD", ""),
|
||||||
Host: host,
|
Host: host,
|
||||||
|
Port: uint16(port),
|
||||||
ConnectionTimeout: 5,
|
ConnectionTimeout: 5,
|
||||||
},
|
},
|
||||||
SSL: SSL{
|
SSL: SSL{
|
||||||
|
@ -4,6 +4,7 @@ package sql
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
|
"strconv"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -12,12 +13,24 @@ func TestPostgresTunables(t *testing.T) {
|
|||||||
if host == "" {
|
if host == "" {
|
||||||
t.Skipf("test environment variable %q not set, skipping", testPostgresEnv)
|
t.Skipf("test environment variable %q not set, skipping", testPostgresEnv)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
port := uint64(5432)
|
||||||
|
if rawPort := os.Getenv("DEX_POSTGRES_PORT"); rawPort != "" {
|
||||||
|
var err error
|
||||||
|
|
||||||
|
port, err = strconv.ParseUint(rawPort, 10, 32)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("invalid postgres port %q: %s", rawPort, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
baseCfg := &Postgres{
|
baseCfg := &Postgres{
|
||||||
NetworkDB: NetworkDB{
|
NetworkDB: NetworkDB{
|
||||||
Database: getenv("DEX_POSTGRES_DATABASE", "postgres"),
|
Database: getenv("DEX_POSTGRES_DATABASE", "postgres"),
|
||||||
User: getenv("DEX_POSTGRES_USER", "postgres"),
|
User: getenv("DEX_POSTGRES_USER", "postgres"),
|
||||||
Password: getenv("DEX_POSTGRES_PASSWORD", "postgres"),
|
Password: getenv("DEX_POSTGRES_PASSWORD", "postgres"),
|
||||||
Host: host,
|
Host: host,
|
||||||
|
Port: uint16(port),
|
||||||
},
|
},
|
||||||
SSL: SSL{
|
SSL: SSL{
|
||||||
Mode: pgSSLDisable, // Postgres container doesn't support SSL.
|
Mode: pgSSLDisable, // Postgres container doesn't support SSL.
|
||||||
|
Reference in New Issue
Block a user