mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2026-04-15 01:41:56 +00:00
Integration tests
This commit is contained in:
@@ -1,83 +0,0 @@
|
||||
// +build integration
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"os"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/laszlocph/drone-oss-08/cncd/pipeline/pipeline"
|
||||
"github.com/laszlocph/drone-oss-08/cncd/pipeline/pipeline/backend/docker"
|
||||
"github.com/laszlocph/drone-oss-08/cncd/pipeline/pipeline/backend/kubernetes"
|
||||
"github.com/laszlocph/drone-oss-08/cncd/pipeline/pipeline/interrupt"
|
||||
)
|
||||
|
||||
func TestExec(t *testing.T) {
|
||||
reader, err := os.Open("../samples/sample_1/pipeline.json")
|
||||
if err != nil {
|
||||
t.Errorf("Could not read pipeline %f", err)
|
||||
}
|
||||
defer reader.Close()
|
||||
|
||||
config, err := pipeline.Parse(reader)
|
||||
if err != nil {
|
||||
t.Errorf("Could not parse pipeline %f", err)
|
||||
}
|
||||
|
||||
engine, err := docker.NewEnv()
|
||||
if err != nil {
|
||||
t.Errorf("Could not start Docker engine %f", err)
|
||||
}
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), time.Hour)
|
||||
defer cancel()
|
||||
ctx = interrupt.WithContext(ctx)
|
||||
|
||||
err = pipeline.New(config,
|
||||
pipeline.WithContext(ctx),
|
||||
pipeline.WithLogger(defaultLogger),
|
||||
pipeline.WithTracer(defaultTracer),
|
||||
pipeline.WithEngine(engine),
|
||||
).Run()
|
||||
|
||||
if err != nil {
|
||||
t.Errorf("Pipeline exited with error %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestKubeExec(t *testing.T) {
|
||||
// reader, err := os.Open("../samples/sample_1/pipeline.json")
|
||||
reader, err := os.Open("../samples/sample_7_redis/pipeline.json")
|
||||
if err != nil {
|
||||
t.Errorf("Could not read pipeline %f", err)
|
||||
}
|
||||
defer reader.Close()
|
||||
|
||||
config, err := pipeline.Parse(reader)
|
||||
if err != nil {
|
||||
t.Errorf("Could not parse pipeline %f", err)
|
||||
}
|
||||
|
||||
// os.Setenv("KUBECONFIG", "/etc/rancher/k3s/k3s.yaml")
|
||||
engine, err := kubernetes.New("default", "example-nfs", "100Mi")
|
||||
if err != nil {
|
||||
t.Errorf("Could not start Kubernetes engine %f", err)
|
||||
}
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), time.Hour)
|
||||
defer cancel()
|
||||
ctx = interrupt.WithContext(ctx)
|
||||
|
||||
err = pipeline.New(config,
|
||||
pipeline.WithContext(ctx),
|
||||
pipeline.WithLogger(defaultLogger),
|
||||
pipeline.WithTracer(defaultTracer),
|
||||
pipeline.WithEngine(engine),
|
||||
).Run()
|
||||
|
||||
if err != nil {
|
||||
t.Errorf("Pipeline exited with error %v", err)
|
||||
}
|
||||
}
|
||||
BIN
cncd/pipeline/pipec/pipec
Executable file
BIN
cncd/pipeline/pipec/pipec
Executable file
Binary file not shown.
17
cncd/pipeline/pipeline/fixtures/01_single_step/.env
Normal file
17
cncd/pipeline/pipeline/fixtures/01_single_step/.env
Normal file
@@ -0,0 +1,17 @@
|
||||
CI_REPO=drone/envsubst
|
||||
CI_REPO_NAME=drone/envsubst
|
||||
CI_REPO_LINK=https://github.com/drone/envsubst
|
||||
CI_REPO_REMOTE=https://github.com/drone/envsubst.git
|
||||
CI_REPO_PRIVATE=false
|
||||
CI_BUILD_NUMBER=6
|
||||
CI_BUILD_CREATED=1486119586
|
||||
CI_BUILD_STARTED=1486119585
|
||||
CI_BUILD_EVENT=push
|
||||
CI_BUILD_LINK=
|
||||
CI_COMMIT_SHA=d0876d3176965f9552a611cbd56e24a9264355e6
|
||||
CI_COMMIT_REF=refs/heads/master
|
||||
CI_COMMIT_REFSPEC=
|
||||
CI_COMMIT_BRANCH=master
|
||||
CI_COMMIT_MESSAGE="added a few more test cases for escaping behavior"
|
||||
CI_COMMIT_AUTHOR=bradrydzewski
|
||||
CI_COMMIT_AUTHOR_NAME=bradrydzewski
|
||||
9
cncd/pipeline/pipeline/fixtures/01_single_step/compile
Executable file
9
cncd/pipeline/pipeline/fixtures/01_single_step/compile
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
script_dir="$( cd "$(dirname "$0")" ; pwd -P )"
|
||||
|
||||
cd $script_dir/../../../pipec/
|
||||
go build
|
||||
|
||||
cd $script_dir
|
||||
../../../pipec/pipec compile
|
||||
168
cncd/pipeline/pipeline/fixtures/01_single_step/pipeline.json
Normal file
168
cncd/pipeline/pipeline/fixtures/01_single_step/pipeline.json
Normal file
@@ -0,0 +1,168 @@
|
||||
{
|
||||
"pipeline": [
|
||||
{
|
||||
"name": "pipeline_clone",
|
||||
"alias": "clone",
|
||||
"steps": [
|
||||
{
|
||||
"name": "pipeline_clone",
|
||||
"alias": "clone",
|
||||
"image": "plugins/git:latest",
|
||||
"working_dir": "/go/src/github.com/drone/envsubst",
|
||||
"environment": {
|
||||
"CI": "drone",
|
||||
"CI_BUILD_CREATED": "1486119586",
|
||||
"CI_BUILD_EVENT": "push",
|
||||
"CI_BUILD_NUMBER": "6",
|
||||
"CI_BUILD_STARTED": "1486119585",
|
||||
"CI_COMMIT_AUTHOR": "bradrydzewski",
|
||||
"CI_COMMIT_AUTHOR_NAME": "bradrydzewski",
|
||||
"CI_COMMIT_BRANCH": "master",
|
||||
"CI_COMMIT_MESSAGE": "added a few more test cases for escaping behavior",
|
||||
"CI_COMMIT_REF": "refs/heads/master",
|
||||
"CI_COMMIT_SHA": "d0876d3176965f9552a611cbd56e24a9264355e6",
|
||||
"CI_REMOTE_URL": "https://github.com/drone/envsubst.git",
|
||||
"CI_REPO": "drone/envsubst",
|
||||
"CI_REPO_LINK": "https://github.com/drone/envsubst",
|
||||
"CI_REPO_NAME": "drone/envsubst",
|
||||
"CI_REPO_REMOTE": "https://github.com/drone/envsubst.git",
|
||||
"CI_SYSTEM": "pipec",
|
||||
"CI_SYSTEM_ARCH": "linux/amd64",
|
||||
"CI_SYSTEM_LINK": "https://github.com/cncd/pipec",
|
||||
"CI_SYSTEM_NAME": "pipec",
|
||||
"CI_WORKSPACE": "/go/src/github.com/drone/envsubst",
|
||||
"DRONE": "true",
|
||||
"DRONE_ARCH": "linux/amd64",
|
||||
"DRONE_BRANCH": "master",
|
||||
"DRONE_BUILD_CREATED": "1486119586",
|
||||
"DRONE_BUILD_EVENT": "push",
|
||||
"DRONE_BUILD_LINK": "https://github.com/cncd/pipec/drone/envsubst/6",
|
||||
"DRONE_BUILD_NUMBER": "6",
|
||||
"DRONE_BUILD_STARTED": "1486119585",
|
||||
"DRONE_COMMIT": "d0876d3176965f9552a611cbd56e24a9264355e6",
|
||||
"DRONE_COMMIT_AUTHOR": "bradrydzewski",
|
||||
"DRONE_COMMIT_BRANCH": "master",
|
||||
"DRONE_COMMIT_MESSAGE": "added a few more test cases for escaping behavior",
|
||||
"DRONE_COMMIT_REF": "refs/heads/master",
|
||||
"DRONE_COMMIT_SHA": "d0876d3176965f9552a611cbd56e24a9264355e6",
|
||||
"DRONE_JOB_STARTED": "1486119585",
|
||||
"DRONE_REMOTE_URL": "https://github.com/drone/envsubst.git",
|
||||
"DRONE_REPO": "drone/envsubst",
|
||||
"DRONE_REPO_LINK": "https://github.com/drone/envsubst",
|
||||
"DRONE_REPO_NAME": "envsubst",
|
||||
"DRONE_REPO_OWNER": "drone",
|
||||
"DRONE_REPO_SCM": "git",
|
||||
"DRONE_WORKSPACE": "/go/src/github.com/drone/envsubst",
|
||||
"PLUGIN_DEPTH": "0"
|
||||
},
|
||||
"volumes": [
|
||||
"pipeline_default:/go"
|
||||
],
|
||||
"networks": [
|
||||
{
|
||||
"name": "pipeline_default",
|
||||
"aliases": [
|
||||
"clone"
|
||||
]
|
||||
}
|
||||
],
|
||||
"on_success": true,
|
||||
"auth_config": {}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "pipeline_stage_0",
|
||||
"alias": "build",
|
||||
"steps": [
|
||||
{
|
||||
"name": "pipeline_step_0",
|
||||
"alias": "build",
|
||||
"image": "golang:1.11",
|
||||
"working_dir": "/go/src/github.com/drone/envsubst",
|
||||
"environment": {
|
||||
"CI": "drone",
|
||||
"CI_BUILD_CREATED": "1486119586",
|
||||
"CI_BUILD_EVENT": "push",
|
||||
"CI_BUILD_NUMBER": "6",
|
||||
"CI_BUILD_STARTED": "1486119585",
|
||||
"CI_COMMIT_AUTHOR": "bradrydzewski",
|
||||
"CI_COMMIT_AUTHOR_NAME": "bradrydzewski",
|
||||
"CI_COMMIT_BRANCH": "master",
|
||||
"CI_COMMIT_MESSAGE": "added a few more test cases for escaping behavior",
|
||||
"CI_COMMIT_REF": "refs/heads/master",
|
||||
"CI_COMMIT_SHA": "d0876d3176965f9552a611cbd56e24a9264355e6",
|
||||
"CI_REMOTE_URL": "https://github.com/drone/envsubst.git",
|
||||
"CI_REPO": "drone/envsubst",
|
||||
"CI_REPO_LINK": "https://github.com/drone/envsubst",
|
||||
"CI_REPO_NAME": "drone/envsubst",
|
||||
"CI_REPO_REMOTE": "https://github.com/drone/envsubst.git",
|
||||
"CI_SCRIPT": "CmlmIFsgLW4gIiRDSV9ORVRSQ19NQUNISU5FIiBdOyB0aGVuCmNhdCA8PEVPRiA+ICRIT01FLy5uZXRyYwptYWNoaW5lICRDSV9ORVRSQ19NQUNISU5FCmxvZ2luICRDSV9ORVRSQ19VU0VSTkFNRQpwYXNzd29yZCAkQ0lfTkVUUkNfUEFTU1dPUkQKRU9GCmNobW9kIDA2MDAgJEhPTUUvLm5ldHJjCmZpCnVuc2V0IENJX05FVFJDX1VTRVJOQU1FCnVuc2V0IENJX05FVFJDX1BBU1NXT1JECnVuc2V0IENJX1NDUklQVAp1bnNldCBEUk9ORV9ORVRSQ19VU0VSTkFNRQp1bnNldCBEUk9ORV9ORVRSQ19QQVNTV09SRAoKZWNobyArICJnbyBnZXQgLXQgLi8uLi4iCmdvIGdldCAtdCAuLy4uLgoKZWNobyArICJnbyBidWlsZCIKZ28gYnVpbGQKCmVjaG8gKyAiZ28gdGVzdCAtdiIKZ28gdGVzdCAtdgoK",
|
||||
"CI_SYSTEM": "pipec",
|
||||
"CI_SYSTEM_ARCH": "linux/amd64",
|
||||
"CI_SYSTEM_LINK": "https://github.com/cncd/pipec",
|
||||
"CI_SYSTEM_NAME": "pipec",
|
||||
"CI_WORKSPACE": "/go/src/github.com/drone/envsubst",
|
||||
"DRONE": "true",
|
||||
"DRONE_ARCH": "linux/amd64",
|
||||
"DRONE_BRANCH": "master",
|
||||
"DRONE_BUILD_CREATED": "1486119586",
|
||||
"DRONE_BUILD_EVENT": "push",
|
||||
"DRONE_BUILD_LINK": "https://github.com/cncd/pipec/drone/envsubst/6",
|
||||
"DRONE_BUILD_NUMBER": "6",
|
||||
"DRONE_BUILD_STARTED": "1486119585",
|
||||
"DRONE_COMMIT": "d0876d3176965f9552a611cbd56e24a9264355e6",
|
||||
"DRONE_COMMIT_AUTHOR": "bradrydzewski",
|
||||
"DRONE_COMMIT_BRANCH": "master",
|
||||
"DRONE_COMMIT_MESSAGE": "added a few more test cases for escaping behavior",
|
||||
"DRONE_COMMIT_REF": "refs/heads/master",
|
||||
"DRONE_COMMIT_SHA": "d0876d3176965f9552a611cbd56e24a9264355e6",
|
||||
"DRONE_JOB_STARTED": "1486119585",
|
||||
"DRONE_REMOTE_URL": "https://github.com/drone/envsubst.git",
|
||||
"DRONE_REPO": "drone/envsubst",
|
||||
"DRONE_REPO_LINK": "https://github.com/drone/envsubst",
|
||||
"DRONE_REPO_NAME": "envsubst",
|
||||
"DRONE_REPO_OWNER": "drone",
|
||||
"DRONE_REPO_SCM": "git",
|
||||
"DRONE_WORKSPACE": "/go/src/github.com/drone/envsubst",
|
||||
"HOME": "/root",
|
||||
"SHELL": "/bin/sh"
|
||||
},
|
||||
"entrypoint": [
|
||||
"/bin/sh",
|
||||
"-c"
|
||||
],
|
||||
"command": [
|
||||
"echo $CI_SCRIPT | base64 -d | /bin/sh -e"
|
||||
],
|
||||
"volumes": [
|
||||
"pipeline_default:/go"
|
||||
],
|
||||
"networks": [
|
||||
{
|
||||
"name": "pipeline_default",
|
||||
"aliases": [
|
||||
"build"
|
||||
]
|
||||
}
|
||||
],
|
||||
"on_success": true,
|
||||
"auth_config": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"networks": [
|
||||
{
|
||||
"name": "pipeline_default",
|
||||
"driver": "bridge"
|
||||
}
|
||||
],
|
||||
"volumes": [
|
||||
{
|
||||
"name": "pipeline_default",
|
||||
"driver": "local"
|
||||
}
|
||||
],
|
||||
"secrets": null
|
||||
}
|
||||
11
cncd/pipeline/pipeline/fixtures/01_single_step/pipeline.yml
Normal file
11
cncd/pipeline/pipeline/fixtures/01_single_step/pipeline.yml
Normal file
@@ -0,0 +1,11 @@
|
||||
workspace:
|
||||
base: /go
|
||||
path: src/github.com/drone/envsubst
|
||||
|
||||
pipeline:
|
||||
build:
|
||||
image: golang:1.11
|
||||
commands:
|
||||
- go get -t ./...
|
||||
- go build
|
||||
- go test -v
|
||||
17
cncd/pipeline/pipeline/fixtures/02_services/.env
Normal file
17
cncd/pipeline/pipeline/fixtures/02_services/.env
Normal file
@@ -0,0 +1,17 @@
|
||||
CI_REPO=drone/envsubst
|
||||
CI_REPO_NAME=drone/envsubst
|
||||
CI_REPO_LINK=https://github.com/drone/envsubst
|
||||
CI_REPO_REMOTE=https://github.com/drone/envsubst.git
|
||||
CI_REPO_PRIVATE=false
|
||||
CI_BUILD_NUMBER=6
|
||||
CI_BUILD_CREATED=1486119586
|
||||
CI_BUILD_STARTED=1486119585
|
||||
CI_BUILD_EVENT=push
|
||||
CI_BUILD_LINK=
|
||||
CI_COMMIT_SHA=d0876d3176965f9552a611cbd56e24a9264355e6
|
||||
CI_COMMIT_REF=refs/heads/master
|
||||
CI_COMMIT_REFSPEC=
|
||||
CI_COMMIT_BRANCH=master
|
||||
CI_COMMIT_MESSAGE="added a few more test cases for escaping behavior"
|
||||
CI_COMMIT_AUTHOR=bradrydzewski
|
||||
CI_COMMIT_AUTHOR_NAME=bradrydzewski
|
||||
9
cncd/pipeline/pipeline/fixtures/02_services/compile
Executable file
9
cncd/pipeline/pipeline/fixtures/02_services/compile
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
script_dir="$( cd "$(dirname "$0")" ; pwd -P )"
|
||||
|
||||
cd $script_dir/../../../pipec/
|
||||
go build
|
||||
|
||||
cd $script_dir
|
||||
../../../pipec/pipec compile
|
||||
302
cncd/pipeline/pipeline/fixtures/02_services/pipeline.json
Normal file
302
cncd/pipeline/pipeline/fixtures/02_services/pipeline.json
Normal file
@@ -0,0 +1,302 @@
|
||||
{
|
||||
"pipeline": [
|
||||
{
|
||||
"name": "pipeline_clone",
|
||||
"alias": "clone",
|
||||
"steps": [
|
||||
{
|
||||
"name": "pipeline_clone",
|
||||
"alias": "clone",
|
||||
"image": "plugins/git:latest",
|
||||
"working_dir": "/pipeline/src",
|
||||
"environment": {
|
||||
"CI": "drone",
|
||||
"CI_BUILD_CREATED": "1486119586",
|
||||
"CI_BUILD_EVENT": "push",
|
||||
"CI_BUILD_NUMBER": "6",
|
||||
"CI_BUILD_STARTED": "1486119585",
|
||||
"CI_COMMIT_AUTHOR": "bradrydzewski",
|
||||
"CI_COMMIT_AUTHOR_NAME": "bradrydzewski",
|
||||
"CI_COMMIT_BRANCH": "master",
|
||||
"CI_COMMIT_MESSAGE": "added a few more test cases for escaping behavior",
|
||||
"CI_COMMIT_REF": "refs/heads/master",
|
||||
"CI_COMMIT_SHA": "d0876d3176965f9552a611cbd56e24a9264355e6",
|
||||
"CI_REMOTE_URL": "https://github.com/drone/envsubst.git",
|
||||
"CI_REPO": "drone/envsubst",
|
||||
"CI_REPO_LINK": "https://github.com/drone/envsubst",
|
||||
"CI_REPO_NAME": "drone/envsubst",
|
||||
"CI_REPO_REMOTE": "https://github.com/drone/envsubst.git",
|
||||
"CI_SYSTEM": "pipec",
|
||||
"CI_SYSTEM_ARCH": "linux/amd64",
|
||||
"CI_SYSTEM_LINK": "https://github.com/cncd/pipec",
|
||||
"CI_SYSTEM_NAME": "pipec",
|
||||
"CI_WORKSPACE": "/pipeline/src",
|
||||
"DRONE": "true",
|
||||
"DRONE_ARCH": "linux/amd64",
|
||||
"DRONE_BRANCH": "master",
|
||||
"DRONE_BUILD_CREATED": "1486119586",
|
||||
"DRONE_BUILD_EVENT": "push",
|
||||
"DRONE_BUILD_LINK": "https://github.com/cncd/pipec/drone/envsubst/6",
|
||||
"DRONE_BUILD_NUMBER": "6",
|
||||
"DRONE_BUILD_STARTED": "1486119585",
|
||||
"DRONE_COMMIT": "d0876d3176965f9552a611cbd56e24a9264355e6",
|
||||
"DRONE_COMMIT_AUTHOR": "bradrydzewski",
|
||||
"DRONE_COMMIT_BRANCH": "master",
|
||||
"DRONE_COMMIT_MESSAGE": "added a few more test cases for escaping behavior",
|
||||
"DRONE_COMMIT_REF": "refs/heads/master",
|
||||
"DRONE_COMMIT_SHA": "d0876d3176965f9552a611cbd56e24a9264355e6",
|
||||
"DRONE_JOB_STARTED": "1486119585",
|
||||
"DRONE_REMOTE_URL": "https://github.com/drone/envsubst.git",
|
||||
"DRONE_REPO": "drone/envsubst",
|
||||
"DRONE_REPO_LINK": "https://github.com/drone/envsubst",
|
||||
"DRONE_REPO_NAME": "envsubst",
|
||||
"DRONE_REPO_OWNER": "drone",
|
||||
"DRONE_REPO_SCM": "git",
|
||||
"DRONE_WORKSPACE": "/pipeline/src",
|
||||
"PLUGIN_DEPTH": "0"
|
||||
},
|
||||
"volumes": [
|
||||
"pipeline_default:/pipeline"
|
||||
],
|
||||
"networks": [
|
||||
{
|
||||
"name": "pipeline_default",
|
||||
"aliases": [
|
||||
"clone"
|
||||
]
|
||||
}
|
||||
],
|
||||
"on_success": true,
|
||||
"auth_config": {}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "pipeline_services",
|
||||
"alias": "services",
|
||||
"steps": [
|
||||
{
|
||||
"name": "pipeline_services_0",
|
||||
"alias": "redis1",
|
||||
"image": "redis:3.0",
|
||||
"detach": true,
|
||||
"environment": {
|
||||
"CI": "drone",
|
||||
"CI_BUILD_CREATED": "1486119586",
|
||||
"CI_BUILD_EVENT": "push",
|
||||
"CI_BUILD_NUMBER": "6",
|
||||
"CI_BUILD_STARTED": "1486119585",
|
||||
"CI_COMMIT_AUTHOR": "bradrydzewski",
|
||||
"CI_COMMIT_AUTHOR_NAME": "bradrydzewski",
|
||||
"CI_COMMIT_BRANCH": "master",
|
||||
"CI_COMMIT_MESSAGE": "added a few more test cases for escaping behavior",
|
||||
"CI_COMMIT_REF": "refs/heads/master",
|
||||
"CI_COMMIT_SHA": "d0876d3176965f9552a611cbd56e24a9264355e6",
|
||||
"CI_REMOTE_URL": "https://github.com/drone/envsubst.git",
|
||||
"CI_REPO": "drone/envsubst",
|
||||
"CI_REPO_LINK": "https://github.com/drone/envsubst",
|
||||
"CI_REPO_NAME": "drone/envsubst",
|
||||
"CI_REPO_REMOTE": "https://github.com/drone/envsubst.git",
|
||||
"CI_SYSTEM": "pipec",
|
||||
"CI_SYSTEM_ARCH": "linux/amd64",
|
||||
"CI_SYSTEM_LINK": "https://github.com/cncd/pipec",
|
||||
"CI_SYSTEM_NAME": "pipec",
|
||||
"CI_WORKSPACE": "/pipeline/src",
|
||||
"DRONE": "true",
|
||||
"DRONE_ARCH": "linux/amd64",
|
||||
"DRONE_BRANCH": "master",
|
||||
"DRONE_BUILD_CREATED": "1486119586",
|
||||
"DRONE_BUILD_EVENT": "push",
|
||||
"DRONE_BUILD_LINK": "https://github.com/cncd/pipec/drone/envsubst/6",
|
||||
"DRONE_BUILD_NUMBER": "6",
|
||||
"DRONE_BUILD_STARTED": "1486119585",
|
||||
"DRONE_COMMIT": "d0876d3176965f9552a611cbd56e24a9264355e6",
|
||||
"DRONE_COMMIT_AUTHOR": "bradrydzewski",
|
||||
"DRONE_COMMIT_BRANCH": "master",
|
||||
"DRONE_COMMIT_MESSAGE": "added a few more test cases for escaping behavior",
|
||||
"DRONE_COMMIT_REF": "refs/heads/master",
|
||||
"DRONE_COMMIT_SHA": "d0876d3176965f9552a611cbd56e24a9264355e6",
|
||||
"DRONE_JOB_STARTED": "1486119585",
|
||||
"DRONE_REMOTE_URL": "https://github.com/drone/envsubst.git",
|
||||
"DRONE_REPO": "drone/envsubst",
|
||||
"DRONE_REPO_LINK": "https://github.com/drone/envsubst",
|
||||
"DRONE_REPO_NAME": "envsubst",
|
||||
"DRONE_REPO_OWNER": "drone",
|
||||
"DRONE_REPO_SCM": "git",
|
||||
"DRONE_WORKSPACE": "/pipeline/src"
|
||||
},
|
||||
"volumes": [
|
||||
"pipeline_default:/pipeline"
|
||||
],
|
||||
"networks": [
|
||||
{
|
||||
"name": "pipeline_default",
|
||||
"aliases": [
|
||||
"redis1"
|
||||
]
|
||||
}
|
||||
],
|
||||
"on_success": true,
|
||||
"auth_config": {}
|
||||
},
|
||||
{
|
||||
"name": "pipeline_services_1",
|
||||
"alias": "redis2",
|
||||
"image": "redis:3.0",
|
||||
"detach": true,
|
||||
"environment": {
|
||||
"CI": "drone",
|
||||
"CI_BUILD_CREATED": "1486119586",
|
||||
"CI_BUILD_EVENT": "push",
|
||||
"CI_BUILD_NUMBER": "6",
|
||||
"CI_BUILD_STARTED": "1486119585",
|
||||
"CI_COMMIT_AUTHOR": "bradrydzewski",
|
||||
"CI_COMMIT_AUTHOR_NAME": "bradrydzewski",
|
||||
"CI_COMMIT_BRANCH": "master",
|
||||
"CI_COMMIT_MESSAGE": "added a few more test cases for escaping behavior",
|
||||
"CI_COMMIT_REF": "refs/heads/master",
|
||||
"CI_COMMIT_SHA": "d0876d3176965f9552a611cbd56e24a9264355e6",
|
||||
"CI_REMOTE_URL": "https://github.com/drone/envsubst.git",
|
||||
"CI_REPO": "drone/envsubst",
|
||||
"CI_REPO_LINK": "https://github.com/drone/envsubst",
|
||||
"CI_REPO_NAME": "drone/envsubst",
|
||||
"CI_REPO_REMOTE": "https://github.com/drone/envsubst.git",
|
||||
"CI_SYSTEM": "pipec",
|
||||
"CI_SYSTEM_ARCH": "linux/amd64",
|
||||
"CI_SYSTEM_LINK": "https://github.com/cncd/pipec",
|
||||
"CI_SYSTEM_NAME": "pipec",
|
||||
"CI_WORKSPACE": "/pipeline/src",
|
||||
"DRONE": "true",
|
||||
"DRONE_ARCH": "linux/amd64",
|
||||
"DRONE_BRANCH": "master",
|
||||
"DRONE_BUILD_CREATED": "1486119586",
|
||||
"DRONE_BUILD_EVENT": "push",
|
||||
"DRONE_BUILD_LINK": "https://github.com/cncd/pipec/drone/envsubst/6",
|
||||
"DRONE_BUILD_NUMBER": "6",
|
||||
"DRONE_BUILD_STARTED": "1486119585",
|
||||
"DRONE_COMMIT": "d0876d3176965f9552a611cbd56e24a9264355e6",
|
||||
"DRONE_COMMIT_AUTHOR": "bradrydzewski",
|
||||
"DRONE_COMMIT_BRANCH": "master",
|
||||
"DRONE_COMMIT_MESSAGE": "added a few more test cases for escaping behavior",
|
||||
"DRONE_COMMIT_REF": "refs/heads/master",
|
||||
"DRONE_COMMIT_SHA": "d0876d3176965f9552a611cbd56e24a9264355e6",
|
||||
"DRONE_JOB_STARTED": "1486119585",
|
||||
"DRONE_REMOTE_URL": "https://github.com/drone/envsubst.git",
|
||||
"DRONE_REPO": "drone/envsubst",
|
||||
"DRONE_REPO_LINK": "https://github.com/drone/envsubst",
|
||||
"DRONE_REPO_NAME": "envsubst",
|
||||
"DRONE_REPO_OWNER": "drone",
|
||||
"DRONE_REPO_SCM": "git",
|
||||
"DRONE_WORKSPACE": "/pipeline/src"
|
||||
},
|
||||
"volumes": [
|
||||
"pipeline_default:/pipeline"
|
||||
],
|
||||
"networks": [
|
||||
{
|
||||
"name": "pipeline_default",
|
||||
"aliases": [
|
||||
"redis2"
|
||||
]
|
||||
}
|
||||
],
|
||||
"on_success": true,
|
||||
"auth_config": {}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "pipeline_stage_0",
|
||||
"alias": "build",
|
||||
"steps": [
|
||||
{
|
||||
"name": "pipeline_step_0",
|
||||
"alias": "build",
|
||||
"image": "redis:3.0",
|
||||
"working_dir": "/pipeline/src",
|
||||
"environment": {
|
||||
"CI": "drone",
|
||||
"CI_BUILD_CREATED": "1486119586",
|
||||
"CI_BUILD_EVENT": "push",
|
||||
"CI_BUILD_NUMBER": "6",
|
||||
"CI_BUILD_STARTED": "1486119585",
|
||||
"CI_COMMIT_AUTHOR": "bradrydzewski",
|
||||
"CI_COMMIT_AUTHOR_NAME": "bradrydzewski",
|
||||
"CI_COMMIT_BRANCH": "master",
|
||||
"CI_COMMIT_MESSAGE": "added a few more test cases for escaping behavior",
|
||||
"CI_COMMIT_REF": "refs/heads/master",
|
||||
"CI_COMMIT_SHA": "d0876d3176965f9552a611cbd56e24a9264355e6",
|
||||
"CI_REMOTE_URL": "https://github.com/drone/envsubst.git",
|
||||
"CI_REPO": "drone/envsubst",
|
||||
"CI_REPO_LINK": "https://github.com/drone/envsubst",
|
||||
"CI_REPO_NAME": "drone/envsubst",
|
||||
"CI_REPO_REMOTE": "https://github.com/drone/envsubst.git",
|
||||
"CI_SCRIPT": "CmlmIFsgLW4gIiRDSV9ORVRSQ19NQUNISU5FIiBdOyB0aGVuCmNhdCA8PEVPRiA+ICRIT01FLy5uZXRyYwptYWNoaW5lICRDSV9ORVRSQ19NQUNISU5FCmxvZ2luICRDSV9ORVRSQ19VU0VSTkFNRQpwYXNzd29yZCAkQ0lfTkVUUkNfUEFTU1dPUkQKRU9GCmNobW9kIDA2MDAgJEhPTUUvLm5ldHJjCmZpCnVuc2V0IENJX05FVFJDX1VTRVJOQU1FCnVuc2V0IENJX05FVFJDX1BBU1NXT1JECnVuc2V0IENJX1NDUklQVAp1bnNldCBEUk9ORV9ORVRSQ19VU0VSTkFNRQp1bnNldCBEUk9ORV9ORVRSQ19QQVNTV09SRAoKZWNobyArICJzbGVlcCAxIgpzbGVlcCAxCgplY2hvICsgInJlZGlzLWNsaSAtaCByZWRpczEgcGluZyIKcmVkaXMtY2xpIC1oIHJlZGlzMSBwaW5nCgplY2hvICsgInJlZGlzLWNsaSAtaCByZWRpczIgcGluZyIKcmVkaXMtY2xpIC1oIHJlZGlzMiBwaW5nCgplY2hvICsgInJlZGlzLWNsaSAtaCByZWRpczEgc2V0IEhFTExPIGhlbGxvIgpyZWRpcy1jbGkgLWggcmVkaXMxIHNldCBIRUxMTyBoZWxsbwoKZWNobyArICJyZWRpcy1jbGkgLWggcmVkaXMyIHNldCBIRUxMTyBob2xhIgpyZWRpcy1jbGkgLWggcmVkaXMyIHNldCBIRUxMTyBob2xhCgplY2hvICsgInJlZGlzLWNsaSAtaCByZWRpczEgZ2V0IEhFTExPIgpyZWRpcy1jbGkgLWggcmVkaXMxIGdldCBIRUxMTwoKZWNobyArICJyZWRpcy1jbGkgLWggcmVkaXMyIGdldCBIRUxMTyIKcmVkaXMtY2xpIC1oIHJlZGlzMiBnZXQgSEVMTE8KCg==",
|
||||
"CI_SYSTEM": "pipec",
|
||||
"CI_SYSTEM_ARCH": "linux/amd64",
|
||||
"CI_SYSTEM_LINK": "https://github.com/cncd/pipec",
|
||||
"CI_SYSTEM_NAME": "pipec",
|
||||
"CI_WORKSPACE": "/pipeline/src",
|
||||
"DRONE": "true",
|
||||
"DRONE_ARCH": "linux/amd64",
|
||||
"DRONE_BRANCH": "master",
|
||||
"DRONE_BUILD_CREATED": "1486119586",
|
||||
"DRONE_BUILD_EVENT": "push",
|
||||
"DRONE_BUILD_LINK": "https://github.com/cncd/pipec/drone/envsubst/6",
|
||||
"DRONE_BUILD_NUMBER": "6",
|
||||
"DRONE_BUILD_STARTED": "1486119585",
|
||||
"DRONE_COMMIT": "d0876d3176965f9552a611cbd56e24a9264355e6",
|
||||
"DRONE_COMMIT_AUTHOR": "bradrydzewski",
|
||||
"DRONE_COMMIT_BRANCH": "master",
|
||||
"DRONE_COMMIT_MESSAGE": "added a few more test cases for escaping behavior",
|
||||
"DRONE_COMMIT_REF": "refs/heads/master",
|
||||
"DRONE_COMMIT_SHA": "d0876d3176965f9552a611cbd56e24a9264355e6",
|
||||
"DRONE_JOB_STARTED": "1486119585",
|
||||
"DRONE_REMOTE_URL": "https://github.com/drone/envsubst.git",
|
||||
"DRONE_REPO": "drone/envsubst",
|
||||
"DRONE_REPO_LINK": "https://github.com/drone/envsubst",
|
||||
"DRONE_REPO_NAME": "envsubst",
|
||||
"DRONE_REPO_OWNER": "drone",
|
||||
"DRONE_REPO_SCM": "git",
|
||||
"DRONE_WORKSPACE": "/pipeline/src",
|
||||
"HOME": "/root",
|
||||
"SHELL": "/bin/sh"
|
||||
},
|
||||
"entrypoint": [
|
||||
"/bin/sh",
|
||||
"-c"
|
||||
],
|
||||
"command": [
|
||||
"echo $CI_SCRIPT | base64 -d | /bin/sh -e"
|
||||
],
|
||||
"volumes": [
|
||||
"pipeline_default:/pipeline"
|
||||
],
|
||||
"networks": [
|
||||
{
|
||||
"name": "pipeline_default",
|
||||
"aliases": [
|
||||
"build"
|
||||
]
|
||||
}
|
||||
],
|
||||
"on_success": true,
|
||||
"auth_config": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"networks": [
|
||||
{
|
||||
"name": "pipeline_default",
|
||||
"driver": "bridge"
|
||||
}
|
||||
],
|
||||
"volumes": [
|
||||
{
|
||||
"name": "pipeline_default",
|
||||
"driver": "local"
|
||||
}
|
||||
],
|
||||
"secrets": null
|
||||
}
|
||||
17
cncd/pipeline/pipeline/fixtures/02_services/pipeline.yml
Normal file
17
cncd/pipeline/pipeline/fixtures/02_services/pipeline.yml
Normal file
@@ -0,0 +1,17 @@
|
||||
pipeline:
|
||||
build:
|
||||
image: redis:3.0
|
||||
commands:
|
||||
- sleep 1 # redis needs a second to init
|
||||
- redis-cli -h redis1 ping
|
||||
- redis-cli -h redis2 ping
|
||||
- redis-cli -h redis1 set HELLO hello
|
||||
- redis-cli -h redis2 set HELLO hola
|
||||
- redis-cli -h redis1 get HELLO
|
||||
- redis-cli -h redis2 get HELLO
|
||||
|
||||
services:
|
||||
redis1:
|
||||
image: redis:3.0
|
||||
redis2:
|
||||
image: redis:3.0
|
||||
112
cncd/pipeline/pipeline/pipeline_test.go
Normal file
112
cncd/pipeline/pipeline/pipeline_test.go
Normal file
@@ -0,0 +1,112 @@
|
||||
// +build integration
|
||||
|
||||
package pipeline
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"strconv"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/laszlocph/drone-oss-08/cncd/pipeline/pipeline/backend"
|
||||
"github.com/laszlocph/drone-oss-08/cncd/pipeline/pipeline/backend/docker"
|
||||
"github.com/laszlocph/drone-oss-08/cncd/pipeline/pipeline/backend/kubernetes"
|
||||
"github.com/laszlocph/drone-oss-08/cncd/pipeline/pipeline/interrupt"
|
||||
"github.com/laszlocph/drone-oss-08/cncd/pipeline/pipeline/multipart"
|
||||
)
|
||||
|
||||
func Test_Docker_01_single_step(t *testing.T) {
|
||||
run(t, "fixtures/01_single_step/pipeline.json", true)
|
||||
}
|
||||
|
||||
func Test_Kubernetes_01_single_step(t *testing.T) {
|
||||
run(t, "fixtures/01_single_step/pipeline.json", false)
|
||||
}
|
||||
|
||||
func Test_Docker_02_services(t *testing.T) {
|
||||
run(t, "fixtures/02_services/pipeline.json", true)
|
||||
}
|
||||
|
||||
func Test_Kubernetes_02_services(t *testing.T) {
|
||||
run(t, "fixtures/02_services/pipeline.json", false)
|
||||
}
|
||||
|
||||
func run(t *testing.T, fixture string, dockerEngine bool) {
|
||||
reader, err := os.Open(fixture)
|
||||
if err != nil {
|
||||
t.Errorf("Could not read pipeline %f", err)
|
||||
}
|
||||
defer reader.Close()
|
||||
|
||||
config, err := Parse(reader)
|
||||
if err != nil {
|
||||
t.Errorf("Could not parse pipeline %f", err)
|
||||
}
|
||||
|
||||
var defaultTracer = TraceFunc(func(state *State) error {
|
||||
if state.Process.Exited {
|
||||
if state.Process.ExitCode != 0 {
|
||||
t.Errorf("proc %q exited with status %d\n", state.Pipeline.Step.Name, state.Process.ExitCode)
|
||||
} else {
|
||||
fmt.Printf("proc %q exited with status %d\n", state.Pipeline.Step.Name, state.Process.ExitCode)
|
||||
}
|
||||
} else {
|
||||
fmt.Printf("proc %q started\n", state.Pipeline.Step.Name)
|
||||
state.Pipeline.Step.Environment["CI_BUILD_STATUS"] = "success"
|
||||
state.Pipeline.Step.Environment["CI_BUILD_FINISHED"] = strconv.FormatInt(time.Now().Unix(), 10)
|
||||
if state.Pipeline.Error != nil {
|
||||
state.Pipeline.Step.Environment["CI_BUILD_STATUS"] = "failure"
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), time.Hour)
|
||||
defer cancel()
|
||||
ctx = interrupt.WithContext(ctx)
|
||||
|
||||
if dockerEngine {
|
||||
dockerEngine, err := docker.NewEnv()
|
||||
if err != nil {
|
||||
t.Errorf("Could not start Docker engine %f", err)
|
||||
}
|
||||
err = New(config,
|
||||
WithContext(ctx),
|
||||
WithLogger(defaultLogger),
|
||||
WithTracer(defaultTracer),
|
||||
WithEngine(dockerEngine),
|
||||
).Run()
|
||||
|
||||
if err != nil {
|
||||
t.Errorf("Pipeline exited with error %v", err)
|
||||
}
|
||||
} else {
|
||||
// os.Setenv("KUBECONFIG", "/etc/rancher/k3s/k3s.yaml")
|
||||
kubernetesEngine, err := kubernetes.New("default", "example-nfs", "100Mi")
|
||||
if err != nil {
|
||||
t.Errorf("Could not start Kubernetes engine %f", err)
|
||||
}
|
||||
err = New(config,
|
||||
WithContext(ctx),
|
||||
WithLogger(defaultLogger),
|
||||
WithTracer(defaultTracer),
|
||||
WithEngine(kubernetesEngine),
|
||||
).Run()
|
||||
|
||||
if err != nil {
|
||||
t.Errorf("Pipeline exited with error %v", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var defaultLogger = LogFunc(func(proc *backend.Step, rc multipart.Reader) error {
|
||||
part, err := rc.NextPart()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
io.Copy(os.Stderr, part)
|
||||
return nil
|
||||
})
|
||||
Reference in New Issue
Block a user