Page History
...
The CircleCI configuration file .circleci/config.ym
l contains the definition of the build steps, including running the automated tests and submitting the results.
Code Block | ||||
---|---|---|---|---|
| ||||
version: 2 # use CircleCI 2.0 jobs: # a collection of steps build: # runs not using Workflows must have a `build` job as entry point working_directory: ~/demo/java-junit-calc # directory where steps will run docker: # run the steps with Docker - image: circleci/openjdk:8-jdk-browsers # ...with this image as the primary container; this is where all `steps` will run steps: # a collection of executable commands - checkout: # check out source code to working directory path: ~/demo - restore_cache: # restore the saved cache after the first run or if `pom.xml` has changed key: circleci-java-junit-calc-demo # circleci-java-junit-calc-demo-{{ checksum "pom.xml" }} - run: mvn dependency:go-offline # gets the project dependencies - run: mvn test # run the actual tests - save_cache: # saves the project dependencies paths: - ~/.m2 key: circleci-java-junit-calc-demo # circleci-java-junit-calc-demo-{{ checksum "pom.xml" }} - store_test_results: # uploads the test metadata from the `target/surefire-reports` directory so that it can show up in the CircleCI dashboard. path: target/surefire-reports - run: 'curl -H "Content-Type: multipart/form-data" -u $jira_user:$jira_password -F "file=@target/surefire-reports/TEST-com.xpand.java.CalcTest.xml" "$jira_server_url/rest/raven/1.0/import/execution/junit?projectKey=CALC"' |
...
The CircleCI configuration file .circleci/config.yml
contains contains the definition of the build steps, including running the automated tests and submitting the results, as two different stages.
Code Block | ||||
---|---|---|---|---|
| ||||
# Use the latest 2.1 version of CircleCI pipeline process engine. # See: https://circleci.com/docs/configuration-reference # For a detailed guide to building and testing with Python, read the docs: # https://circleci.com/docs/language-python/ for more details version: 2.1 # Orbs are reusable packages of CircleCI configuration that you may share across projects, enabling you to create encapsulated, parameterized commands, jobs, and executors that can be used across multiple projects. # See: https://circleci.com/docs/orb-intro/ orbs: # See the Python orb documentation here: https://circleci.com/developer/orbs/orb/circleci/python python: circleci/python@2.1.1 browser-tools: circleci/browser-tools@1.4.6 # Define a job to be invoked later in a workflow. # See: https://circleci.com/docs/jobs-steps/#jobs-overview & https://circleci.com/docs/configuration-reference/#jobs jobs: build-and-test: # Specify the execution environment. You can specify an image from Docker Hub or use one of our convenience images from CircleCI's Developer Hub. # See: https://circleci.com/docs/executor-intro/ & https://circleci.com/docs/configuration-reference/#executor-job docker: # Specify the version you desire here # See:https://circleci.com/developer/images/image/cimg/python - image: cimg/python:3.12-browsers # Add steps to the job # See: https://circleci.com/docs/jobs-steps/#steps-overview & https://circleci.com/docs/configuration-reference/#steps steps: # Checkout the code as the first step. - checkout - python/install-packages: pkg-manager: pip # app-dir: ~/project/package-directory/ # If your requirements.txt isn't in the root directory. # pip-dependency-file: test-requirements.txt # if you have a different name for your requirements file, maybe one that combines your runtime and test requirements. # get server up and running in the background - run: name: Run webserver to be target by tests command: python demoapp/server.py background: true - run: name: Run tests # This assumes Robot Framework is installed via the install-package step above command: robot -x junit.xml -o output.xml login_tests || true - run: name: Upload results to Xray DC command: | echo uploading RF output.xml, if available, to Xray... [ -f output.xml ] && curl -H "Content-Type: multipart/form-data" -u $XRAY_USERNAME:$XRAY_PASSWORD -F "file=@output.xml" "$XRAY_SERVER_URL/rest/raven/2.0/import/execution/robot?projectKey=$PROJECT_KEY" - store_test_results: path: junit.xml when: always # Orchestrate jobs using workflows # See: https://circleci.com/docs/workflows/ & https://circleci.com/docs/configuration-reference/#workflows workflows: sample: # This is the name of the workflow, feel free to change it to better match your workflow. # Inside the workflow, you define the jobs you want to run. jobs: - build-and-test |
...
We're using "curl" utility that comes in Unix based OS'es but you can easily use another tool to make the HTTP request; however, "curl" is provided in the container used by CircleCI.
|
References