-
Notifications
You must be signed in to change notification settings - Fork 2
/
.gitlab-ci.yml
76 lines (70 loc) · 2.69 KB
/
.gitlab-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
stages:
- build
- test
- package
- release
variables:
INTEGRATION_DOCKER_IMAGE: synology:5350/swagger-codegen/swift/vapor-server-codegen:build-$CI_PIPELINE_ID-$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA
PACKAGE_DOCKER_IMAGE: synology:5350/swagger-codegen/swift/vapor-server-codegen:4
RELEASE_ON_DOCKER_IMAGE: thecheatah/vapor-server-codegen:4
CODE_GEN_CLI_VERSION: 3.0.14
Build Docker Image:
stage: build
before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
script:
- mvn -Dmaven.test.skip=true package
- mvn org.apache.maven.plugins:maven-dependency-plugin:2.1:get -DrepoUrl=http://download.java.net/maven/2/ -Dartifact=io.swagger.codegen.v3:swagger-codegen-cli:$CODE_GEN_CLI_VERSION
- cp ~/.m2/repository/io/swagger/codegen/v3/swagger-codegen-cli/$CODE_GEN_CLI_VERSION/swagger-codegen-cli-$CODE_GEN_CLI_VERSION.jar target
- docker build -t $INTEGRATION_DOCKER_IMAGE .
- docker push $INTEGRATION_DOCKER_IMAGE
interruptible: true
tags: [docker-host, mvn]
Integration Tests:
stage: test
before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker pull $INTEGRATION_DOCKER_IMAGE
script:
- cd src/test/resources/AllTest
- docker run --rm -v "$(pwd):/output" $INTEGRATION_DOCKER_IMAGE -i codegen_test.yml -o ./VaporTestInterface --additional-properties projectName=VaporTestInterface
- cd VaporTestServer
- swift package clean
- swift test
- cd ../../../../..
- cd src/test/resources/WithoutAuthTest
- docker run --rm -v "$(pwd):/output" $INTEGRATION_DOCKER_IMAGE -i codegen_test.yml -o ./VaporTestInterface --additional-properties projectName=VaporTestInterface
- cd VaporTestServer
- swift package clean
- swift test
cache:
key: VaporServerTestProjectBuildCache
untracked: true
paths:
- src/test/resources/AllTest/VaporTestServer/.build
- src/test/resources/WithoutAuthTest/VaporTestServer/.build
interruptible: true
tags: [docker-host, xcode]
Push Docker Image:
stage: package
before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker pull $INTEGRATION_DOCKER_IMAGE
script:
- docker tag $INTEGRATION_DOCKER_IMAGE $PACKAGE_DOCKER_IMAGE
- docker push $PACKAGE_DOCKER_IMAGE
interruptible: true
tags: [docker-host]
Release to Docker:
stage: release
when: manual
allow_failure: true
before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker pull $INTEGRATION_DOCKER_IMAGE
script:
- docker tag $INTEGRATION_DOCKER_IMAGE $RELEASE_ON_DOCKER_IMAGE
- docker push $RELEASE_ON_DOCKER_IMAGE
tags: [docker-host]
only:
- "4"