integration: re-add docker-compose.yml
overloading the outer docker-compose.yml for both dev and test started to feel more confusing than just keeping them separate. namely, it's impossible to un-set 'build:' in an override file, so I split that out into a docker-compose.override.yml file, symlinked under hack/overrides/ to keep ./hack/dc working, but then having the tests *not* use it, even though they use the docker-compose.yml right next to it, and even though it's normally respected by 'docker-compose' commands. Signed-off-by: Alex Suraci <suraci.alex@gmail.com>
This commit is contained in:
parent
43d37e27a7
commit
d76b5923eb
|
@ -10,6 +10,7 @@ web/public/elm.min.js
|
|||
web/public/bundle.js
|
||||
web/public/*.bundle.js
|
||||
web/public/main.css
|
||||
docker-compose.override.yml
|
||||
*.coverprofile
|
||||
*.coverprofile.*
|
||||
*.test
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
./hack/overrides/dev.yml
|
|
@ -4,7 +4,7 @@ services:
|
|||
db:
|
||||
image: postgres:${POSTGRES_TAG:-latest}
|
||||
shm_size: 1gb
|
||||
ports: [5432]
|
||||
ports: [6543:5432]
|
||||
environment:
|
||||
POSTGRES_DB: concourse
|
||||
POSTGRES_USER: dev
|
||||
|
@ -15,8 +15,10 @@ services:
|
|||
image: concourse/concourse:local
|
||||
command: web
|
||||
depends_on: [db]
|
||||
ports: [8080]
|
||||
volumes: ["./hack/keys:/concourse-keys"]
|
||||
ports: [8080:8080]
|
||||
volumes:
|
||||
- .:/src
|
||||
- "./hack/keys:/concourse-keys"
|
||||
environment:
|
||||
CONCOURSE_SESSION_SIGNING_KEY: /concourse-keys/session_signing_key
|
||||
CONCOURSE_TSA_AUTHORIZED_KEYS: /concourse-keys/authorized_worker_keys
|
||||
|
@ -40,6 +42,9 @@ services:
|
|||
command: worker
|
||||
privileged: true
|
||||
depends_on: [web]
|
||||
ports:
|
||||
- 7777:7777
|
||||
- 7788:7788
|
||||
volumes: ["./hack/keys:/concourse-keys"]
|
||||
stop_signal: SIGUSR2
|
||||
environment:
|
||||
|
@ -49,6 +54,9 @@ services:
|
|||
CONCOURSE_LOG_LEVEL: debug
|
||||
CONCOURSE_TSA_HOST: web:2222
|
||||
|
||||
CONCOURSE_BIND_IP: 0.0.0.0
|
||||
CONCOURSE_BAGGAGECLAIM_BIND_IP: 0.0.0.0
|
||||
|
||||
# avoid using loopbacks
|
||||
CONCOURSE_BAGGAGECLAIM_DRIVER: overlay
|
||||
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
version: '3'
|
||||
|
||||
services:
|
||||
db:
|
||||
ports: [6543:5432]
|
||||
|
||||
web:
|
||||
ports: [8080:8080]
|
||||
volumes:
|
||||
- .:/src
|
||||
|
||||
worker:
|
||||
ports:
|
||||
- 7777:7777
|
||||
- 7788:7788
|
||||
environment:
|
||||
CONCOURSE_BIND_IP: 0.0.0.0
|
||||
CONCOURSE_BAGGAGECLAIM_BIND_IP: 0.0.0.0
|
|
@ -3,7 +3,7 @@ version: '3'
|
|||
services:
|
||||
web:
|
||||
volumes:
|
||||
- ./hack/vault/certs:/vault-certs
|
||||
- ../hack/vault/certs:/vault-certs
|
||||
environment:
|
||||
CONCOURSE_VAULT_URL: https://vault:8200
|
||||
CONCOURSE_VAULT_AUTH_BACKEND: cert
|
||||
|
@ -16,8 +16,8 @@ services:
|
|||
cap_add: [IPC_LOCK]
|
||||
ports: [8200]
|
||||
volumes:
|
||||
- ./hack/vault/certs:/vault/certs
|
||||
- ./hack/vault/config:/vault/config
|
||||
- ../hack/vault/certs:/vault/certs
|
||||
- ../hack/vault/config:/vault/config
|
||||
command: server
|
||||
environment:
|
||||
# for running the 'vault' CLI
|
||||
|
|
|
@ -14,7 +14,7 @@ import (
|
|||
func TestVault(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
dc := dctest.Init(t, "../../docker-compose.yml", "overrides/vault.yml")
|
||||
dc := dctest.Init(t, "../docker-compose.yml", "overrides/vault.yml")
|
||||
require.NoError(t, dc.Run("up", "-d"))
|
||||
|
||||
vault := vaulttest.Init(t, dc)
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
version: '3'
|
||||
|
||||
services:
|
||||
db:
|
||||
image: ${TEST_POSTGRES_IMAGE:-postgres}
|
||||
shm_size: 1gb
|
||||
ports: [5432]
|
||||
environment:
|
||||
POSTGRES_DB: concourse
|
||||
POSTGRES_USER: dev
|
||||
POSTGRES_PASSWORD: dev
|
||||
|
||||
web:
|
||||
image: ${TEST_CONCOURSE_DEV_IMAGE:-concourse/concourse:local}
|
||||
command: web
|
||||
depends_on: [db]
|
||||
ports: [8080]
|
||||
volumes:
|
||||
- ..:/src
|
||||
- ../hack/keys:/concourse-keys
|
||||
environment:
|
||||
CONCOURSE_SESSION_SIGNING_KEY: /concourse-keys/session_signing_key
|
||||
CONCOURSE_TSA_AUTHORIZED_KEYS: /concourse-keys/authorized_worker_keys
|
||||
CONCOURSE_TSA_HOST_KEY: /concourse-keys/tsa_host_key
|
||||
|
||||
CONCOURSE_LOG_LEVEL: debug
|
||||
CONCOURSE_POSTGRES_HOST: db
|
||||
CONCOURSE_POSTGRES_USER: dev
|
||||
CONCOURSE_POSTGRES_PASSWORD: dev
|
||||
CONCOURSE_POSTGRES_DATABASE: concourse
|
||||
CONCOURSE_EXTERNAL_URL: http://localhost:8080
|
||||
CONCOURSE_ADD_LOCAL_USER: test:test,guest:guest
|
||||
CONCOURSE_MAIN_TEAM_LOCAL_USER: test
|
||||
CONCOURSE_CLUSTER_NAME: test
|
||||
CONCOURSE_ENABLE_PIPELINE_INSTANCES: "true"
|
||||
CONCOURSE_ENABLE_ACROSS_STEP: "true"
|
||||
|
||||
worker:
|
||||
image: ${TEST_CONCOURSE_DEV_IMAGE:-concourse/concourse:local}
|
||||
command: worker
|
||||
privileged: true
|
||||
depends_on: [web]
|
||||
ports: [7777, 7788]
|
||||
volumes: ["../hack/keys:/concourse-keys"]
|
||||
stop_signal: SIGUSR2
|
||||
environment:
|
||||
CONCOURSE_TSA_PUBLIC_KEY: /concourse-keys/tsa_host_key.pub
|
||||
CONCOURSE_TSA_WORKER_PRIVATE_KEY: /concourse-keys/worker_key
|
||||
|
||||
CONCOURSE_LOG_LEVEL: debug
|
||||
CONCOURSE_TSA_HOST: web:2222
|
||||
|
||||
# avoid using loopbacks
|
||||
CONCOURSE_BAGGAGECLAIM_DRIVER: overlay
|
||||
|
||||
# work with docker-compose's dns
|
||||
CONCOURSE_GARDEN_DNS_PROXY_ENABLE: "true"
|
|
@ -19,9 +19,11 @@ type Cmd struct {
|
|||
cmdtest.Cmd
|
||||
}
|
||||
|
||||
func Init(t *testing.T, files ...string) Cmd {
|
||||
func Init(t *testing.T, composeFile string, overrides ...string) Cmd {
|
||||
name := filepath.Base(t.Name())
|
||||
|
||||
files := append([]string{composeFile}, overrides...)
|
||||
|
||||
dc := cmdtest.Cmd{
|
||||
Path: "docker-compose",
|
||||
Env: []string{
|
||||
|
|
|
@ -12,87 +12,41 @@ import (
|
|||
func TestDowngrade(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
dc := dctest.Init(t, "../../docker-compose.yml")
|
||||
devDC := dctest.Init(t, "../docker-compose.yml")
|
||||
|
||||
t.Run("deploy dev", func(t *testing.T) {
|
||||
require.NoError(t, dc.Run("up", "-d"))
|
||||
require.NoError(t, devDC.Run("up", "-d"))
|
||||
})
|
||||
|
||||
fly := flytest.Init(t, dc)
|
||||
fly := flytest.Init(t, devDC)
|
||||
setupUpgradeDowngrade(t, fly)
|
||||
|
||||
latestDC := dctest.Init(t, "../../docker-compose.yml", "overrides/latest.yml")
|
||||
latestDC := dctest.Init(t, "../docker-compose.yml", "overrides/latest.yml")
|
||||
|
||||
latest, err := latestDC.Output("run", "web", "migrate", "--supported-db-version")
|
||||
require.NoError(t, err)
|
||||
latest = strings.TrimRight(latest, "\n")
|
||||
|
||||
t.Run("down migrations", func(t *testing.T) {
|
||||
t.Run("migrate down to latest from clean deploy", func(t *testing.T) {
|
||||
// just to see what it was before
|
||||
err := dc.Run("run", "web", "migrate", "--current-db-version")
|
||||
err := devDC.Run("run", "web", "migrate", "--current-db-version")
|
||||
require.NoError(t, err)
|
||||
|
||||
err = dc.Run("run", "web", "migrate", "--migrate-db-to-version", latest)
|
||||
latest, err := latestDC.Output("run", "web", "migrate", "--supported-db-version")
|
||||
require.NoError(t, err)
|
||||
latest = strings.TrimRight(latest, "\n")
|
||||
|
||||
err = devDC.Run("run", "web", "migrate", "--migrate-db-to-version", latest)
|
||||
require.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("downgrade to latest", func(t *testing.T) {
|
||||
t.Run("deploy latest", func(t *testing.T) {
|
||||
require.NoError(t, latestDC.Run("up", "-d"))
|
||||
})
|
||||
|
||||
fly = flytest.Init(t, latestDC)
|
||||
verifyUpgradeDowngrade(t, fly)
|
||||
|
||||
t.Run("upgrading after downgrade", func(t *testing.T) {
|
||||
require.NoError(t, dc.Run("up", "-d"))
|
||||
t.Run("migrate up to dev and deploy dev", func(t *testing.T) {
|
||||
require.NoError(t, devDC.Run("up", "-d"))
|
||||
})
|
||||
|
||||
fly = flytest.Init(t, dc)
|
||||
fly = flytest.Init(t, devDC)
|
||||
verifyUpgradeDowngrade(t, fly)
|
||||
}
|
||||
|
||||
func setupUpgradeDowngrade(t *testing.T, fly flytest.Cmd) {
|
||||
t.Run("set up test pipeline", func(t *testing.T) {
|
||||
err := fly.Run("set-pipeline", "-p", "test", "-c", "pipelines/smoke-pipeline.yml", "-n")
|
||||
require.NoError(t, err)
|
||||
|
||||
err = fly.Run("unpause-pipeline", "-p", "test")
|
||||
require.NoError(t, err)
|
||||
|
||||
err = fly.Run("trigger-job", "-j", "test/say-hello", "-w")
|
||||
require.NoError(t, err)
|
||||
})
|
||||
}
|
||||
|
||||
func verifyUpgradeDowngrade(t *testing.T, fly flytest.Cmd) {
|
||||
t.Run("pipeline and build still exists", func(t *testing.T) {
|
||||
err := fly.Run("get-pipeline", "-p", "test")
|
||||
require.NoError(t, err)
|
||||
|
||||
out, err := fly.Output("watch", "-j", "test/say-hello")
|
||||
require.NoError(t, err)
|
||||
require.Contains(t, out, "Hello, world!")
|
||||
})
|
||||
|
||||
t.Run("can still run pipeline builds", func(t *testing.T) {
|
||||
err := fly.Run("trigger-job", "-j", "test/say-hello", "-w")
|
||||
require.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("can still run checks", func(t *testing.T) {
|
||||
err := fly.Run("check-resource", "-r", "test/mockery")
|
||||
require.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("can still reach the internet", func(t *testing.T) {
|
||||
out, err := fly.Output("trigger-job", "-j", "test/use-the-internet", "-w")
|
||||
require.NoError(t, err)
|
||||
require.Contains(t, out, "Example Domain")
|
||||
})
|
||||
|
||||
t.Run("can still run one-off builds", func(t *testing.T) {
|
||||
out, err := fly.Output("execute", "-c", "tasks/hello.yml")
|
||||
require.NoError(t, err)
|
||||
require.Contains(t, out, "hello")
|
||||
})
|
||||
}
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
package ops_test
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/concourse/concourse/integration/internal/flytest"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func setupUpgradeDowngrade(t *testing.T, fly flytest.Cmd) {
|
||||
t.Run("set up test pipeline", func(t *testing.T) {
|
||||
err := fly.Run("set-pipeline", "-p", "test", "-c", "pipelines/smoke-pipeline.yml", "-n")
|
||||
require.NoError(t, err)
|
||||
|
||||
err = fly.Run("unpause-pipeline", "-p", "test")
|
||||
require.NoError(t, err)
|
||||
|
||||
err = fly.Run("trigger-job", "-j", "test/say-hello", "-w")
|
||||
require.NoError(t, err)
|
||||
})
|
||||
}
|
||||
|
||||
func verifyUpgradeDowngrade(t *testing.T, fly flytest.Cmd) {
|
||||
t.Run("pipeline and build still exists", func(t *testing.T) {
|
||||
err := fly.Run("get-pipeline", "-p", "test")
|
||||
require.NoError(t, err)
|
||||
|
||||
out, err := fly.Output("watch", "-j", "test/say-hello")
|
||||
require.NoError(t, err)
|
||||
require.Contains(t, out, "Hello, world!")
|
||||
})
|
||||
|
||||
t.Run("can still run pipeline builds", func(t *testing.T) {
|
||||
err := fly.Run("trigger-job", "-j", "test/say-hello", "-w")
|
||||
require.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("can still run checks", func(t *testing.T) {
|
||||
err := fly.Run("check-resource", "-r", "test/mockery")
|
||||
require.NoError(t, err)
|
||||
})
|
||||
|
||||
t.Run("can still reach the internet", func(t *testing.T) {
|
||||
out, err := fly.Output("trigger-job", "-j", "test/use-the-internet", "-w")
|
||||
require.NoError(t, err)
|
||||
require.Contains(t, out, "Example Domain")
|
||||
})
|
||||
|
||||
t.Run("can still run one-off builds", func(t *testing.T) {
|
||||
out, err := fly.Output("execute", "-c", "tasks/hello.yml")
|
||||
require.NoError(t, err)
|
||||
require.Contains(t, out, "hello")
|
||||
})
|
||||
}
|
|
@ -11,21 +11,21 @@ import (
|
|||
func TestUpgrade(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
dc := dctest.Init(t, "../../docker-compose.yml", "overrides/latest.yml")
|
||||
latestDC := dctest.Init(t, "../docker-compose.yml", "overrides/latest.yml")
|
||||
|
||||
t.Run("deploy latest", func(t *testing.T) {
|
||||
require.NoError(t, dc.Run("up", "-d"))
|
||||
require.NoError(t, latestDC.Run("up", "-d"))
|
||||
})
|
||||
|
||||
fly := flytest.Init(t, dc)
|
||||
fly := flytest.Init(t, latestDC)
|
||||
setupUpgradeDowngrade(t, fly)
|
||||
|
||||
dc = dctest.Init(t)
|
||||
devDC := dctest.Init(t, "../docker-compose.yml")
|
||||
|
||||
t.Run("upgrade to dev", func(t *testing.T) {
|
||||
require.NoError(t, dc.Run("up", "-d"))
|
||||
require.NoError(t, devDC.Run("up", "-d"))
|
||||
})
|
||||
|
||||
fly = flytest.Init(t, dc)
|
||||
fly = flytest.Init(t, devDC)
|
||||
verifyUpgradeDowngrade(t, fly)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue