Choosing a Docker SDK version
Edit on GitHubThis document describes why and how to select a particular version of the Docker SDK and use it in your project.
Why should I use a particular version of the Docker SDK?
You should use a particular Docker SDK version for:
- Compatibility: project configuration is compatible with the selected Docker SDK version.
- Consistency: the same Docker SDK version is used in development, integration, and deployment pipelines.
- Control: control when and how you switch the Docker SDK version of the project.
- Stability: avoid unexpected behavior in pipelines.
Choosing a versioning approach
To choose a versioning approach, consider the following:
- What kind of project do you have? For example, Long-term, short-term, production, demo.
- What will you use the Docker SDK for? For example, for development, operations, CI/CD management.
- Do you need to customize the Docker SDK?
Depending on your project requirements, choose one of the versioning approaches:
VERSIONING APPROACH | COMPATIBILITY | CONSISTENCY | CONTROL | STABILITY | CASES |
---|---|---|---|---|---|
Release | + | + | + | + | Live projects. |
Hash | + | + | + | +/- | Contributing into the Docker SDK. |
Branch | + | - | + | +/- | Contributing into the Docker SDK. |
Major branch spryker/docker-sdk:1.x |
+ | - | - | - | Demo projects. Backward compatibility checks. |
Master branch spryker/docker-sdk:master |
- | - | - | - | Short-term demo projects. Quick start. |
Fork of spryker/docker-sdk |
+ | + | + | + | Customization of the Docker SDK. |
Spryker Cloud Commerce OS does not support forks of the Docker SDK. Your project’s code must be compatible with the Docker SDK’s main branch for a successful deployment.
Configuring a project to use the chosen version of the Docker SDK
Depending on your project requirements, choose one of the following ways to configure a Docker SDK version:
- Git submodule:
- To contribute in the Docker SDK.
- To have a simple way to fetch a particular version of the Docker SDK.
- To use the hash as a versioning approach.
- Reference file:
- To use a branch as a versioning approach.
- When Git Submodule is not supported.
Spryker Cloud Commerce OS supports only reference file as a way of defining a Docker SDK version.
Configuring git submodule
To configure git submodule:
-
Using a terminal, navigate to your project root folder. You can find the src/ directory and composer.json file there.
-
Create a git submodule:
git submodule add git@github.com:spryker/docker-sdk.git ./docker
- Check out the local clone of the repository to a specific hash, branch, or tag:
cd docker
git checkout my-branch
cd ..
- Commit and push:
git add .gitmodules docker
git commit -m "Added docker submodule"
git push
Commit and push the git submodule again each time you want to start using a new version of Docker SDK:
git add docker
git commit -m "Updated docker submodule"
git push
See 7.11 Git Tools - Submodules and git-submodule reference for more information about git submodule.
Using git submodule to stick to the chosen version
To fetch the chosen version of the Docker SDK, init or update the Docker SDK submodule:
git submodule update --init --force docker
Configuring a reference file
To configure a reference file:
-
Using a terminal, navigate to your project root folder. You can find the src/ directory and composer.json file there.
-
Create
.git.docker
in the project root. -
Depending on the chosen versioning approach, add one of the following to the file:
VERSIONING APPROACH | EXAMPLE |
---|---|
Hash | dbdfac276ae80dbe6f7b66ec1cd05ef21372988a |
Release | 1.24.0 |
Branch name | my-branch |
- Commit and push:
git add .git.docker
git commit -m "Added .git.docker"
git push
Commit and push the reference file each time you want to start using the new version of the Docker SDK:
git add .git.docker
git commit -m "Updated .git.docker"
git push
Using a reference file to stick to the chosen version
Do the following to fetch the chosen version of the Docker SDK:
- Clone the Docker SDK repository.
- Read the reference from the file.
- According to the reference, check out the local clone of the repository to the hash, branch, or tag.
An example of a pipeline to fetch the chosen version of the Docker SDK:
git clone git@github.com:spryker/docker-sdk.git .docker
cd docker
git checkout "$(cat ../.git.docker | tr -d '\n\r')"
cd ..
CI validation
If you’re using CI and store the commit hash in .git.docker
, make sure the reference and submodule hashes match.
The following is an example of what the code can look like:
git submodule | grep docker | grep `cat .git.docker` || (echo "Installed submodule hash doesn't match the reference hash from .git.docker"; exit 1)
Thank you!
For submitting the form