mirror of
https://github.com/OpenAPITools/openapi-generator.git
synced 2025-05-12 12:40:53 +00:00
217 lines
13 KiB
YAML
217 lines
13 KiB
YAML
sudo: required
|
|
language: java
|
|
jdk:
|
|
- openjdk11
|
|
|
|
# See https://docs.travis-ci.com/user/languages/java/#caching
|
|
before_cache:
|
|
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
|
|
- rm -fr $HOME/.gradle/caches/*/plugin-resolution/
|
|
# Avoid caching our built dependencies between runs.
|
|
- rm -fr $HOME/.m2/repository/org/openapitools/
|
|
|
|
cache:
|
|
yarn: true
|
|
directories:
|
|
- $HOME/.m2
|
|
- $HOME/.ivy2
|
|
- $HOME/.gradle/caches/
|
|
- $HOME/.gradle/wrapper/
|
|
- $HOME/samples/client/petstore/javascript/node_modules
|
|
- $HOME/samples/client/petstore/php/OpenAPIToolsClient-php/vendor
|
|
- $HOME/samples/client/petstore/ruby/vendor/bundle
|
|
- $HOME/samples/client/petstore/python/.venv/
|
|
- $HOME/samples/server/petstore/rust-server/target
|
|
- $HOME/samples/server/petstore/rust-axum/target
|
|
- $HOME/perl5
|
|
- $HOME/.cargo
|
|
- $HOME/.pub-cache
|
|
- $HOME/samples/server/petstore/cpp-pistache/pistache
|
|
- $HOME/.rvm/gems/ruby-2.4.1
|
|
- $HOME/website/node_modules/
|
|
- $HOME/.cache/deno
|
|
- $HOME/.phpenv/versions/8.1.4
|
|
|
|
services:
|
|
- docker
|
|
|
|
# comment out the host table change to use the public petstore server
|
|
addons:
|
|
apt:
|
|
sources:
|
|
- ubuntu-toolchain-r-test
|
|
packages:
|
|
- g++-5
|
|
chrome: stable
|
|
hosts:
|
|
- petstore.swagger.io
|
|
|
|
before_install:
|
|
- sudo rm -rf /var/lib/apt/lists/*
|
|
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
|
|
- sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) edge"
|
|
- sudo apt-get update
|
|
#- sudo apt-get install -qqy --no-install-recommends google-chrome-stable
|
|
#- sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce
|
|
- mkdir -vp ~/.docker/cli-plugins/
|
|
- curl --silent -L "https://github.com/docker/buildx/releases/download/v0.3.0/buildx-v0.3.0.linux-amd64" > ~/.docker/cli-plugins/docker-buildx
|
|
- chmod a+x ~/.docker/cli-plugins/docker-buildx
|
|
# to run petstore server locally via docker
|
|
#- echo "$DOCKER_HUB_PASSWORD" | docker login --username=$DOCKER_HUB_USERNAME --password-stdin || true
|
|
#- docker pull swaggerapi/petstore
|
|
#- docker run -d -e SWAGGER_HOST=http://petstore.swagger.io -e SWAGGER_BASE_PATH=/v2 -p 80:8080 swaggerapi/petstore
|
|
#- docker ps -a
|
|
# comment out crystal installation as the tests will run on circleci or github action instead
|
|
# install crystal
|
|
#- echo 'deb http://download.opensuse.org/repositories/devel:/languages:/crystal/xUbuntu_16.04/ /' | sudo tee /etc/apt/sources.list.d/devel:languages:crystal.list
|
|
#- curl -fsSL https://download.opensuse.org/repositories/devel:languages:crystal/xUbuntu_16.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/devel_languages_crystal.gpg > /dev/null
|
|
#- sudo apt update
|
|
#- sudo apt install crystal
|
|
#- crystal --version
|
|
- curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 1.22.0
|
|
- export PATH="$HOME/.yarn/bin:$PATH"
|
|
# install rust
|
|
#- curl https://sh.rustup.rs -sSf | sh -s -- -y -v
|
|
## required when sudo: required for the Ruby petstore tests
|
|
#- gem install bundler -v 2.3.26
|
|
## set python 3.6.3 as default
|
|
#- source ~/virtualenv/python3.6/bin/activate
|
|
# -- skip bash test to shorten build time
|
|
# Add bats test framework and cURL for Bash script integration tests
|
|
#- sudo add-apt-repository ppa:duggan/bats --yes
|
|
#- sudo apt-get update -qq
|
|
#- sudo apt-get install -qq bats
|
|
#- sudo apt-get install -qq curl
|
|
# -- skip bash test end
|
|
# install dart
|
|
#- sudo apt-get update
|
|
#- sudo apt-get install apt-transport-https
|
|
#- sudo sh -c 'curl https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -'
|
|
#- sudo sh -c 'curl https://storage.googleapis.com/download.dartlang.org/linux/debian/dart_stable.list > /etc/apt/sources.list.d/dart_stable.list'
|
|
#- sudo apt-get update
|
|
#- sudo apt-get install dart
|
|
# switch to php8
|
|
#- sudo apt-get install -f libonig-dev libzip-dev
|
|
#- git clone https://github.com/php-build/php-build $(phpenv root)/plugins/php-build
|
|
#- git clone https://github.com/ngyuki/phpenv-composer.git $(phpenv root)/plugins/phpenv-composer
|
|
#- if [ $(ls -A "$HOME/.phpenv/versions/8.1.4" | wc -l) -eq 0 ]; then
|
|
# phpenv install 8.1.4;
|
|
# fi;
|
|
#- phpenv rehash
|
|
#- phpenv versions
|
|
##- phpenv global 7.2.15
|
|
#- phpenv global 8.1.4
|
|
#- php -v
|
|
# comment out below as installation failed in travis
|
|
# Add rebar3 build tool and recent Erlang/OTP for Erlang petstore server tests.
|
|
# - Travis CI does not support rebar3 [yet](https://github.com/travis-ci/travis-ci/issues/6506#issuecomment-275189490).
|
|
# - Rely on `kerl` for [pre-compiled versions available](https://docs.travis-ci.com/user/languages/erlang#Choosing-OTP-releases-to-test-against). Rely on installation path chosen by [`travis-erlang-builder`](https://github.com/travis-ci/travis-erlang-builder/blob/e6d016b1a91ca7ecac5a5a46395bde917ea13d36/bin/compile#L18).
|
|
# - . ~/otp/18.2.1/activate && erl -version
|
|
#- curl -f -L -o ./rebar3 https://s3.amazonaws.com/rebar3/rebar3 && chmod +x ./rebar3 && ./rebar3 version && export PATH="${TRAVIS_BUILD_DIR}:$PATH"
|
|
# install C++ tools
|
|
#- sudo apt install -y --no-install-recommends valgrind cmake build-essential
|
|
#- cmake --version
|
|
# install Qt5
|
|
#- sudo apt install -y --no-install-recommends qt5-default
|
|
# install boost
|
|
#- sudo apt install -y --no-install-recommends libboost-all-dev
|
|
# perl dep
|
|
#- cpanm --local-lib=~/perl5 local::lib && eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib)
|
|
#- cpanm --quiet --no-interactive Test::Exception Test::More Log::Any LWP::UserAgent URI::Query Module::Runtime DateTime Module::Find Moose::Role JSON || echo "Ignored failure from cpanm"
|
|
# show host table to confirm petstore.swagger.io is mapped to localhost
|
|
- cat /etc/hosts
|
|
# show java version
|
|
- java -version
|
|
- if [ "$TRAVIS_BRANCH" = "master" ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
|
|
openssl aes-256-cbc -K $encrypted_6e2c8bba47c6_key -iv $encrypted_6e2c8bba47c6_iv -in sec.gpg.enc -out sec.gpg -d ;
|
|
gpg --keyserver keyserver.ubuntu.com --recv-key $SIGNING_KEY ;
|
|
gpg --check-trustdb ;
|
|
fi;
|
|
- pushd .; cd website; yarn install; popd
|
|
|
|
script:
|
|
# fail fast
|
|
- set -e
|
|
# show docker buildx version
|
|
- docker buildx version
|
|
# run integration tests defined in maven pom.xml
|
|
# WARN: Travis will timeout after 10 minutes of no stdout/stderr activity, which is problematic with mvn --quiet.
|
|
# show "error" only to reduce the log size
|
|
- ./mvnw -e --no-snapshot-updates --quiet --batch-mode --show-version clean install -DskipTests -Dmaven.javadoc.skip=true -Dorg.slf4j.simpleLogger.defaultLogLevel=error
|
|
after_success:
|
|
# push to maven repo
|
|
- if [ $SONATYPE_USERNAME ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
|
|
if [ "$TRAVIS_BRANCH" = "master" ] && [ -z $TRAVIS_TAG ]; then
|
|
echo "Publishing from branch $TRAVIS_BRANCH";
|
|
./mvnw clean deploy --quiet -DskipTests=true -B -U -P release --settings CI/settings.xml -Dorg.slf4j.simpleLogger.defaultLogLevel=error;
|
|
echo "Finished mvn clean deploy for $TRAVIS_BRANCH";
|
|
pushd .;
|
|
cd modules/openapi-generator-gradle-plugin;
|
|
./gradlew -Psigning.keyId="$SIGNING_KEY" -Psigning.password="$SIGNING_PASSPHRASE" -Psigning.secretKeyRingFile="${TRAVIS_BUILD_DIR}/sec.gpg" -PossrhUsername="${SONATYPE_USERNAME}" -PossrhPassword="${SONATYPE_PASSWORD}" publishPluginMavenPublicationToSonatypeRepository closeAndReleaseSonatypeStagingRepository;
|
|
echo "Finished ./gradlew publishPluginMavenPublicationToSonatypeRepository closeAndReleaseSonatypeStagingRepository";
|
|
popd;
|
|
elif [ -z $TRAVIS_TAG ] && [[ "$TRAVIS_BRANCH" =~ ^[0-9]+\.[0-9]+\.x$ ]]; then
|
|
echo "Publishing from branch $TRAVIS_BRANCH";
|
|
./mvnw clean deploy --quiet --settings CI/settings.xml -Dorg.slf4j.simpleLogger.defaultLogLevel=error;
|
|
echo "Finished mvn clean deploy for $TRAVIS_BRANCH";
|
|
pushd .;
|
|
cd modules/openapi-generator-gradle-plugin;
|
|
./gradlew -PossrhUsername="${SONATYPE_USERNAME}" -PossrhPassword="${SONATYPE_PASSWORD}" publishPluginMavenPublicationToSonatypeRepository closeAndReleaseSonatypeStagingRepository;
|
|
echo "Finished ./gradlew publishPluginMavenPublicationToSonatypeRepository closeAndReleaseSonatypeStagingRepository";
|
|
popd;
|
|
fi;
|
|
if [ -n $TRAVIS_TAG ] && [[ "$TRAVIS_TAG" =~ ^[v][0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
echo "Publishing the gradle plugin to Gradle Portal on tag $TRAVIS_TAG (only)";
|
|
pushd .;
|
|
cd modules/openapi-generator-gradle-plugin;
|
|
./gradlew -Psigning.keyId="$SIGNING_KEY" -Psigning.password="$SIGNING_PASSPHRASE" -Psigning.secretKeyRingFile="${TRAVIS_BUILD_DIR}/sec.gpg" publishPlugins -Dgradle.publish.key=$GRADLE_PUBLISH_KEY -Dgradle.publish.secret=$GRADLE_PUBLISH_SECRET;
|
|
echo "Finished ./gradlew publishPlugins (plugin portal)";
|
|
popd;
|
|
fi;
|
|
fi;
|
|
## docker: build and push openapi-generator-online to DockerHub
|
|
- if [ $DOCKER_HUB_USERNAME ]; then
|
|
echo "$DOCKER_HUB_PASSWORD" | docker login --username=$DOCKER_HUB_USERNAME --password-stdin;
|
|
export cli_version=$(\mvn -o org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version | grep -v '\[');
|
|
export build_date=$(date -u +"%Y-%m-%dT%H:%M:%SZ");
|
|
docker buildx create --use;
|
|
if [ ! -z "$TRAVIS_TAG" ]; then
|
|
docker buildx build --push --platform linux/amd64,linux/arm64 --label=org.opencontainers.image.created=$build_date --label=org.opencontainers.image.title=openapi-generator-online --label=org.opencontainers.image.revision=$TRAVIS_COMMIT --label=org.opencontainers.image.version=$cli_version -t $DOCKER_GENERATOR_IMAGE_NAME:latest -t $DOCKER_GENERATOR_IMAGE_NAME:$TRAVIS_TAG -t $DOCKER_GENERATOR_IMAGE_NAME -t $DOCKER_GENERATOR_IMAGE_NAME:latest-release ./modules/openapi-generator-online;
|
|
echo "Built and tagged $DOCKER_GENERATOR_IMAGE_NAME";
|
|
fi;
|
|
if [ -z "$TRAVIS_TAG" ] && [ "$TRAVIS_BRANCH" = "master" ] && [ "$TRAVIS_PULL_REQUEST" = "false" ]; then
|
|
docker buildx build --push --platform linux/amd64,linux/arm64 --label=org.opencontainers.image.created=$build_date --label=org.opencontainers.image.title=openapi-generator-online --label=org.opencontainers.image.revision=$TRAVIS_COMMIT --label=org.opencontainers.image.version=$cli_version -t $DOCKER_GENERATOR_IMAGE_NAME ./modules/openapi-generator-online;
|
|
echo "Pushed to $DOCKER_GENERATOR_IMAGE_NAME for master";
|
|
fi;
|
|
fi;
|
|
## docker: build cli image and push to Docker Hub
|
|
- if [ $DOCKER_HUB_USERNAME ]; then
|
|
echo "$DOCKER_HUB_PASSWORD" | docker login --username=$DOCKER_HUB_USERNAME --password-stdin;
|
|
cp docker-entrypoint.sh ./modules/openapi-generator-cli;
|
|
export cli_version=$(\mvn -o org.apache.maven.plugins:maven-help-plugin:2.1.1:evaluate -Dexpression=project.version | grep -v '\[');
|
|
export build_date=$(date -u +"%Y-%m-%dT%H:%M:%SZ");
|
|
docker buildx create --use;
|
|
docker buildx build --platform linux/amd64,linux/arm64 --label=org.opencontainers.image.created=$build_date --label=org.opencontainers.image.title=openapi-generator-cli --label=org.opencontainers.image.revision=$TRAVIS_COMMIT --label=org.opencontainers.image.version=$cli_version -t $DOCKER_CODEGEN_CLI_IMAGE_NAME ./modules/openapi-generator-cli;
|
|
if [ ! -z "$TRAVIS_TAG" ]; then
|
|
docker buildx build --push --platform linux/amd64,linux/arm64 --label=org.opencontainers.image.created=$build_date --label=org.opencontainers.image.title=openapi-generator-cli --label=org.opencontainers.image.revision=$TRAVIS_COMMIT --label=org.opencontainers.image.version=$cli_version -t $DOCKER_CODEGEN_CLI_IMAGE_NAME:latest -t $DOCKER_CODEGEN_CLI_IMAGE_NAME:$TRAVIS_TAG -t $DOCKER_CODEGEN_CLI_IMAGE_NAME -t $DOCKER_CODEGEN_CLI_IMAGE_NAME:latest-release ./modules/openapi-generator-cli;
|
|
echo "Built and tagged $DOCKER_GENERATOR_IMAGE_NAME";
|
|
fi;
|
|
if [ -z "$TRAVIS_TAG" ] && [ "$TRAVIS_BRANCH" = "master" ] && [ "$TRAVIS_PULL_REQUEST" = "false" ]; then
|
|
docker buildx build --push --platform linux/amd64,linux/arm64 --label=org.opencontainers.image.created=$build_date --label=org.opencontainers.image.title=openapi-generator-cli --label=org.opencontainers.image.revision=$TRAVIS_COMMIT --label=org.opencontainers.image.version=$cli_version -t $DOCKER_CODEGEN_CLI_IMAGE_NAME ./modules/openapi-generator-cli;
|
|
echo "Pushed to $DOCKER_CODEGEN_CLI_IMAGE_NAME";
|
|
fi;
|
|
fi;
|
|
# publish latest website, variables below are secure environment variables which are unavailable to PRs from forks.
|
|
#- if [ "$TRAVIS_BRANCH" = "master" ] && [ -z $TRAVIS_TAG ] && [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
|
|
# cd website;
|
|
# git config --global user.name "${GH_NAME}";
|
|
# git config --global user.email "${GH_EMAIL}";
|
|
# echo "machine github.com login ${GH_NAME} password ${GH_TOKEN}" > ~/.netrc;
|
|
# yarn install;
|
|
# GIT_USER="${GH_NAME}" yarn run publish-gh-pages;
|
|
# fi;
|
|
|
|
env:
|
|
- DOCKER_GENERATOR_IMAGE_NAME=openapitools/openapi-generator-online DOCKER_CODEGEN_CLI_IMAGE_NAME=openapitools/openapi-generator-cli NODE_ENV=test CC=gcc-5 CXX=g++-5
|
|
|