Newer
Older

Roman Brendler
committed
- release
API_ROOT_FILE: ./src/aura_engine_api/rest/swagger/swagger.yaml

Roman Brendler
committed
.release-rules: &release-rules
# rule to run job on a tag-reference which has the form number.number.number (semantic versioning)
# or number.number.number-text (semantic versioning + release-name)
# and where a Dockerfile exists
- if: $CI_COMMIT_TAG =~ /^\d+[.]\d+[.]\d+$/ || $CI_COMMIT_TAG =~ /^\d+[.]\d+[.]\d+[-]\S+$/
exists:
- Dockerfile
cache:
paths:
- ./node_modules
bundle_and_test:
stage: bundle
before_script:
- apt-get update
- apt-get install -y curl
- curl -sL https://deb.nodesource.com/setup_10.x | bash -
- apt-get install -y nodejs
- npm install -g @apidevtools/swagger-cli
script:
- mkdir public
- swagger-cli bundle -t json $API_ROOT_FILE > $BUNDLED_JSON_FILE
- swagger-cli validate $BUNDLED_JSON_FILE
artifacts:
paths:
- public
expire_in: 2 days
only:
# test_api:
# stage: test
# script:
# - pip3 install tox
# - tox
- apt-get update
- apt-get install -y curl
- curl -sL https://deb.nodesource.com/setup_10.x | bash -
- apt-get install -y nodejs
- npm install swagger-ui-dist@3.22.1
script:
- cp -rp node_modules/swagger-ui-dist/* ./public
- 'sed -i "s@.*url.*@url: \"api.json\",@" ./public/index.html'
artifacts:
paths:
- public
expire_in: 2 days
only:

Roman Brendler
committed
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
docker-push:
# Use the official docker image.
image: docker:latest
stage: release
variables:
# the name of the image without version
AURA_IMAGE_NAME: "autoradio/engine-api"
services:
- docker:dind
before_script:
# default repo is docker.io (aka docker hub)
- docker login -u "$DOCKER_ID" -p "$DOCKER_HUB_AUTH"
script:
# every commit on main branch should build image as unstable
# else it is from a tag (enforced by gitlab-ci rules)
# hint: tags are references independent of branches
- |
if [ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]
then docker build -t $AURA_IMAGE_NAME:unstable .
else docker build -t $AURA_IMAGE_NAME -t $AURA_IMAGE_NAME:$CI_COMMIT_TAG .
fi
- docker push "$AURA_IMAGE_NAME" --all-tags
rules:
- *release-rules
# every commit on master/main branch should trigger a push to docker-hub as unstable without a release
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
exists:
- Dockerfile
release_job:
stage: release
needs:
- docker-push
image: registry.gitlab.com/gitlab-org/release-cli:latest
rules: *release-rules
script:
- echo "this will be a release when there is a tag, but tags should be protected to be only createable by maintainers."
release:
name: 'Release $CI_COMMIT_TAG'
description: ./CHANGELOG
tag_name: '$CI_COMMIT_TAG'
ref: '$CI_COMMIT_TAG'