Skip to content

Commit

Permalink
CircleCi cleanup (#198)
Browse files Browse the repository at this point in the history
* Changes nodeNo to nodeId

* Replaces node3 with node4

* Updates circleci cleanup fn

* Changes nodeId to jobId

* FIxes parallel.sh

* Renames job3

* Fixes lingering ref to node3

* Updates job1 name

* Removes other unused job

* Removes unnecesary docker petstore server in circleci
  • Loading branch information
spacether committed Aug 7, 2023
1 parent 3e03cf3 commit b0438de
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 135 deletions.
93 changes: 15 additions & 78 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ version: 2.1
commands: # a reusable command with parameters
command_build_and_test:
parameters:
nodeNo:
default: "0"
jobId:
default: "unset"
type: string
steps:
# Restore the dependency cache
Expand All @@ -13,17 +13,6 @@ commands: # a reusable command with parameters
- source-v2-{{ .Branch }}-{{ .Revision }}
- source-v2-{{ .Branch }}-
- source-v2-
# Machine Setup
# If you break your build into multiple jobs with workflows, you will probably want to do the parts of this that are relevant in each
- run:
name: Install Headless Chrome dependencies
command: |
sudo apt-get update && sudo apt-get install -yq \
gconf-service libasound2 libatk1.0-0 libatk-bridge2.0-0 libc6 libcairo2 libcups2 libdbus-1-3 \
libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 \
libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 \
libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates \
fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget libgbm1
# The following `checkout` command checks out your code to your working directory. In 1.0 we did this implicitly. In 2.0 you can choose where in the course of a job your code should be checked out.
- checkout
# Prepare for artifact and test results collection equivalent to how it was done on 1.0.
Expand All @@ -33,24 +22,10 @@ commands: # a reusable command with parameters
# This is based on your 1.0 configuration file or project settings
- run:
command: java -version
- run:
command: 'sudo docker info >/dev/null 2>&1 || sudo service docker start; '
- run:
command: |-
printf '127.0.0.1 petstore.swagger.io
' | sudo tee -a /etc/hosts
# - run: docker pull openapijsonschematools/openapi-petstore
# - run: docker run -d -e OPENAPI_BASE_PATH=/v3 -e DISABLE_API_KEY=1 -e DISABLE_OAUTH=1 -p 80:8080 openapijsonschematools/openapi-petstore
- run: docker pull swaggerapi/petstore
- run: docker run --name petstore.swagger -d -e SWAGGER_HOST=http://petstore.swagger.io -e SWAGGER_BASE_PATH=/v2 -p 80:8080 swaggerapi/petstore
- run: docker ps -a
- run: sleep 30
- run: cat /etc/hosts
# Test
- run: mvn --no-snapshot-updates --quiet clean install -Dorg.slf4j.simpleLogger.defaultLogLevel=error
- run:
name: "Setup custom environment variables"
command: echo 'export CIRCLE_NODE_INDEX="<<parameters.nodeNo>>"' >> $BASH_ENV
command: echo 'export CIRCLE_JOB_ID="<<parameters.jobId>>"' >> $BASH_ENV
- run: ./.circleci/parallel.sh
# Save dependency cache
- save_cache:
Expand All @@ -59,40 +34,33 @@ commands: # a reusable command with parameters
# This is a broad list of cache paths to include many possible development environments
# You can probably delete some of these entries
- vendor/bundle
- ~/.nvm
- ~/.pyenv
- ~/virtualenvs
- ~/.m2
- ~/.ivy2
- ~/.sbt
- ~/.bundle
- ~/.go_workspace
- ~/.gradle
- ~/.cache/bower
- ".git"
- ~/.stack
- ~/R
# save "default" cache using the key "source-v2-"
- save_cache:
key: source-v2-
paths:
# This is a broad list of cache paths to include many possible development environments
# You can probably delete some of these entries
- vendor/bundle
- ~/.nvm
- ~/.pyenv
- ~/virtualenvs
- ~/.m2
- ~/.ivy2
- ~/.sbt
- ~/.bundle
- ~/.go_workspace
- ~/.gradle
- ~/.cache/bower
- ".git"
- ~/.stack
- /home/circleci/OpenAPITools/openapi-json-schema-generator/samples/client/petstore/haskell-http-client/.stack-work
- ~/R
# Teardown
# If you break your build into multiple jobs with workflows, you will probably want to do the parts of this that are relevant in each
# Save test results
Expand All @@ -105,8 +73,8 @@ commands: # a reusable command with parameters
path: /tmp/circleci-test-results
command_docker_build_and_test:
parameters:
nodeNo:
default: "0"
jobId:
default: "unset"
type: string
steps:
# Machine Setup
Expand All @@ -117,15 +85,9 @@ commands: # a reusable command with parameters
# In many cases you can simplify this from what is generated here.
# 'See docs on artifact collection here https://circleci.com/docs/2.0/artifacts/'
- run: mkdir -p $CIRCLE_ARTIFACTS $CIRCLE_TEST_REPORTS
# This is based on your 1.0 configuration file or project settings
# - run:
# command: sudo update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java; sudo update-alternatives --set javac /usr/lib/jvm/java-8-openjdk-amd64/bin/javac; echo -e "export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64" >> $BASH_ENV
# - run:
# Test
# - run: mvn --no-snapshot-updates --quiet clean install -Dorg.slf4j.simpleLogger.defaultLogLevel=error
- run:
name: "Setup custom environment variables"
command: echo 'export CIRCLE_NODE_INDEX="<<parameters.nodeNo>>"' >> $BASH_ENV
command: echo 'export CIRCLE_JOB_ID="<<parameters.jobId>>"' >> $BASH_ENV
- run: ./.circleci/parallel.sh
# Teardown
# If you break your build into multiple jobs with workflows, you will probably want to do the parts of this that are relevant in each
Expand All @@ -138,18 +100,7 @@ commands: # a reusable command with parameters
- store_artifacts:
path: /tmp/circleci-test-results
jobs:
node0:
machine:
image: ubuntu-2004:202201-02
working_directory: ~/OpenAPITools/openapi-json-schema-generator
shell: /bin/bash --login
environment:
CIRCLE_ARTIFACTS: /tmp/circleci-artifacts
CIRCLE_TEST_REPORTS: /tmp/circleci-test-results
steps:
- command_build_and_test:
nodeNo: "0"
node1:
ensureSamplesAndGeneratorDocsUpToDate:
machine:
image: ubuntu-2004:202201-02
working_directory: ~/OpenAPITools/openapi-json-schema-generator
Expand All @@ -159,8 +110,8 @@ jobs:
CIRCLE_TEST_REPORTS: /tmp/circleci-test-results
steps:
- command_build_and_test:
nodeNo: "1"
node2:
jobId: "ensureSamplesAndGeneratorDocsUpToDate"
mvnCleanInstall:
machine:
image: ubuntu-2004:202201-02
working_directory: ~/OpenAPITools/openapi-json-schema-generator
Expand All @@ -170,20 +121,8 @@ jobs:
CIRCLE_TEST_REPORTS: /tmp/circleci-test-results
steps:
- command_build_and_test:
nodeNo: "2"
node3:
machine:
image: ubuntu-2004:202201-02
working_directory: ~/OpenAPITools/openapi-json-schema-generator
shell: /bin/bash --login
environment:
CIRCLE_ARTIFACTS: /tmp/circleci-artifacts
CIRCLE_TEST_REPORTS: /tmp/circleci-test-results
steps:
- checkout
- command_build_and_test:
nodeNo: "3"
node4:
jobId: "mvnCleanInstall"
testPythonClientSamples:
docker:
- image: python:3.8
working_directory: ~/OpenAPITools/openapi-json-schema-generator
Expand All @@ -194,13 +133,11 @@ jobs:
steps:
- checkout
- command_docker_build_and_test:
nodeNo: "4"
jobId: "testPythonClientSamples"
workflows:
version: 2
build:
jobs:
- node0
- node1
- node2
- node3
- node4
- ensureSamplesAndGeneratorDocsUpToDate
- mvnCleanInstall
- testPythonClientSamples
66 changes: 9 additions & 57 deletions .circleci/parallel.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,77 +3,29 @@
# A bash script to run CircleCI node/test in parallel
#

NODE_INDEX=${CIRCLE_NODE_INDEX:-0}
JOB_ID=${CIRCLE_JOB_ID:-"unset"}

set -e

export NODE_ENV=test

function cleanup {
# Show logs of 'petstore.swagger' container to troubleshoot Unit Test failures, if any.
if [ "$NODE_INDEX" != "4" ]; then
docker logs petstore.swagger # container name specified in circle.yml
fi
}

trap cleanup EXIT

if [ "$NODE_INDEX" = "1" ]; then
# node1
# ensures samples + docs up to date
echo "Running node $NODE_INDEX"

if [ "$JOB_ID" = "ensureSamplesAndGeneratorDocsUpToDate" ]; then
echo "Running job $JOB_ID"
./bin/utils/ensure-up-to-date

elif [ "$NODE_INDEX" = "2" ]; then
# node2
echo "Running node $NODE_INDEX"

elif [ "$NODE_INDEX" = "3" ]; then
# node3

echo "Running node $NODE_INDEX to test 'samples.circleci.node3' defined in pom.xml ..."
#wget https://www.python.org/ftp/python/3.8.9/Python-3.8.9.tgz
#tar -xf Python-3.8.9.tgz
#cd Python-3.8.9
#./configure --enable-optimizations
#sudo make altinstall
pyenv install --list
pyenv install 3.6.3
pyenv install 2.7.14
pyenv global 3.6.3

# Install node@stable (for angular 6)
set +e
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
export NVM_DIR="/opt/circleci/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
#nvm install stable
# install v16 instead of the latest stable version
nvm install 16
nvm alias default 16
node --version

# Each step uses the same `$BASH_ENV`, so need to modify it
echo 'export NVM_DIR="/opt/circleci/.nvm"' >> $BASH_ENV
echo "[ -s \"$NVM_DIR/nvm.sh\" ] && . \"$NVM_DIR/nvm.sh\"" >> $BASH_ENV

# no longer testing python-prior
#mvn --no-snapshot-updates --quiet verify -Psamples.circleci.node3 -Dorg.slf4j.simpleLogger.defaultLogLevel=error

elif [ "$NODE_INDEX" = "4" ]; then
# node4

echo "Running node $NODE_INDEX to test 'samples.circleci.node4' defined in pom.xml ..."
elif [ "$JOB_ID" = "mvnCleanInstall" ]; then
echo "Running job $JOB_ID"
mvn --no-snapshot-updates --quiet clean install -Dorg.slf4j.simpleLogger.defaultLogLevel=error

#mvn --no-snapshot-updates --quiet verify -Psamples.circleci.node4 -Dorg.slf4j.simpleLogger.defaultLogLevel=error
elif [ "$JOB_ID" = "testPythonClientSamples" ]; then
echo "Running job $JOB_ID ..."
(cd samples/client/petstore/python && make test)
(cd samples/client/3_0_3_unit_test/python && make test)
(cd samples/client/openapi_features/nonCompliantUseDiscriminatorIfCompositionFails/python && make test)
(cd samples/client/openapi_features/security/python && make test)

else
echo "Running node $NODE_INDEX"
echo "Running job $JOB_ID"

fi

Expand Down

0 comments on commit b0438de

Please sign in to comment.