uplink.yaml
is a file that contains the information that is necessary for
building, testing, packaging and deployment of the software. It fully describes
the interaction of the software with the CI system (Uplink).
This document describes the information contained in uplink.yaml
and the
format of the file. At this moment it's used for prototyping and collecting
feedback and thus everything here is subject to change.
uplink.yaml
contains sections that describe the following aspects of the
interaction between software and the CI system:
- How to produce the build artifacts (environment, what to run and where are the artifacts at the end). There could be one or more build configuration, so that all build configurations together produce all artifacts.
- How to deploy the artifacts. The deployment processes has access to all build artifacts and to the source code of the repository. The deployment process can produce one or more deployed assemblies (groups of one or more virtual/real boxes that are working together).
- How to publish the artifacts. The publishing process has access to any necessary build artifacts and to the source code of the repository.
- How to run the tests. There could be one or more test configurations using artifacts and/or deployed assemblies. Each test configuration runs on a clean environment.
This section contains example scenarios. Each scenario consists of the type of
software that we're dealing with, what goes into each section of uplink.yaml
and example of uplink.yaml
(this is not there yet).
- Build artifacts: .tgz packages, eggs or wheels, or it could be nothing, since we can publish and test directly without building.
- No deployment section.
- Publish to pypi (or local devpi server) using devpi client.
- Run tests using tox, doesn't use any artifacts.
Examples:
- Simple python package using Tox python-abp-1
- Build artifacts: plugin package(s).
- Maybe assembly for selenium testing or something like that.
- Publish to one or more stores.
- Run local unit tests using node.js and some test runner; maybe run functional tests with selenium using the selenium assembly.
- Build artifacts: rendered static content.
- Production assembly of two boxes: (nginx + static content) + (fcgi multiplexer + scripts), test assembly that might be identical or maybe slightly different.
- No publishing, we only deploy this.
- Test the website using the testing assembly and maybe something like selenium.
- No build.
- Assembly with production configuration, for example a database box and an application box with nginx as a reverse proxy.
- No publishing.
- Maybe test the production assembly.