From 23818b38604f273ce78bd401cd58443c219d65fe Mon Sep 17 00:00:00 2001 From: STAM Date: Wed, 25 Nov 2020 17:10:40 +0300 Subject: [PATCH] readme --- README.md | 2 +- teamcity/README.md | 42 +++++++++++++ teamcity/server/README.md | 115 ++++++++++++++++++++++++++++++++++++ teamcity/server/README.md.1 | 93 +++++++++++++++++++++++++++++ testrail/latest/README.md | 36 +++++++++++ 5 files changed, 287 insertions(+), 1 deletion(-) create mode 100644 teamcity/README.md create mode 100644 teamcity/server/README.md create mode 100644 teamcity/server/README.md.1 create mode 100644 testrail/latest/README.md diff --git a/README.md b/README.md index 11c1ac771..0c2d44851 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Containers was Splited to another sub-repositories. Now current repo will be con | Bitbucket | Confluence | Jira | EpicMorg | |-------------:|-------------:|:-------------|:-------------| | [![atlassian-bitbucket-7](https://img.shields.io/badge/Atlassian-Bitbucket%207-brightgreen?style=popout-square)](https://github.com/EpicMorg/docker-scripts/tree/develop/atlassian/bitbucket/7) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master/master?label=build%20master&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster) | [![confluence-7](https://img.shields.io/badge/Atlassian-Confluence%207-brightgreen?style=popout-square)](https://github.com/EpicMorg/docker-scripts/tree/develop/atlassian/confluence/7) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master/master?label=build%20master&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster) | [![atlassian-jira-8](https://img.shields.io/badge/Atlassian-Jira%208-brightgreen?style=popout-square)](https://github.com/EpicMorg/docker-scripts/tree/develop/atlassian/jira/8) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master/master?label=build%20master&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster) | [![Deprecated](https://img.shields.io/badge/EpicMorg-Deprecated-red?style=popout-square)](https://github.com/EpicMorgVault/docker-deprecated-images) [![GHA](https://img.shields.io/badge/build-none-lightgrey?style=flat-square)](https://github.com/EpicMorgVault/docker-deprecated-images) | -| [![atlassian-bitbucket-6](https://img.shields.io/badge/Atlassian-Bitbucket%206-brightgreen?style=popout-square)](https://github.com/EpicMorg/docker-scripts/tree/develop/atlassian/bitbucket/6) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master/master?label=build%20master&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster) | [![confluence-6](https://img.shields.io/badge/Atlassian-Confluence%206-yellow?style=popout-square)](https://github.com/EpicMorg/docker-scripts/tree/develop/atlassian/confluence/6) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master/master?label=build%20master&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster) | [![atlassian-jira-7](https://img.shields.io/badge/Atlassian-Jira%207-yellow?style=popout-square)](https://github.com/EpicMorg/docker-scripts/tree/develop/atlassian/jira/7) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master/master?label=build%20master&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster) | [![Experimental](https://img.shields.io/badge/EpicMorg-Experimental-orange?style=popout-square)](https://github.com/EpicMorgVault/docker-experimental-images) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/testing/testing?label=build%20testing&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster) | +| [![atlassian-bitbucket-6](https://img.shields.io/badge/Atlassian-Bitbucket%206-brightgreen?style=popout-square)](https://github.com/EpicMorg/docker-scripts/tree/develop/atlassian/bitbucket/6) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master/master?label=build%20master&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster) | [![confluence-6](https://img.shields.io/badge/Atlassian-Confluence%206-yellow?style=popout-square)](https://github.com/EpicMorg/docker-scripts/tree/develop/atlassian/confluence/6) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master/master?label=build%20master&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster) | [![atlassian-jira-7](https://img.shields.io/badge/Atlassian-Jira%207-yellow?style=popout-square)](https://github.com/EpicMorg/docker-scripts/tree/develop/atlassian/jira/7) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master/master?label=build%20master&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster) | [![Experimental](https://img.shields.io/badge/EpicMorg-Experimental-orange?style=popout-square)](https://github.com/EpicMorgVault/docker-experimental-images) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/testing/testing?label=build%20testing&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Atesting) | | ` ` | [![confluence-5](https://img.shields.io/badge/Atlassian-Confluence%205-orange?style=popout-square)](https://github.com/EpicMorg/docker-scripts/tree/develop/atlassian/confluence/5) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master/master?label=build%20master&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster) | [![atlassian-jira-6](https://img.shields.io/badge/Atlassian-Jira%206-orange?style=popout-square)](https://github.com/EpicMorg/docker-scripts/tree/develop/atlassian/jira/6) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master/master?label=build%20master&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster) | [![NextCloud](https://img.shields.io/badge/EpicMorg-NextCloud%20Backports-yellow?style=popout-square)](https://github.com/EpicMorg/docker-scripts/tree/develop/nextcloud) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master/master?label=build%20master&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster) | | ` ` | ` ` | [![atlassian-jira-5](https://img.shields.io/badge/Atlassian-Jira%205-red?style=popout-square)](https://github.com/EpicMorg/docker-scripts/tree/develop/atlassian/jira/5) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master/master?label=build%20master&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster) | [![PostgreSQL](https://img.shields.io/badge/EpicMorg-PostgreSQL%20Backports-yellow?style=popout-square)](https://github.com/EpicMorg/docker-scripts/tree/develop/postgres) [![GHA](https://img.shields.io/github/workflow/status/EpicMorg/docker-scripts/master/master?label=build%20master&style=flat-square)](https://github.com/EpicMorg/docker-scripts/actions?query=workflow%3Amaster) | | diff --git a/teamcity/README.md b/teamcity/README.md new file mode 100644 index 000000000..5a0b34c0d --- /dev/null +++ b/teamcity/README.md @@ -0,0 +1,42 @@ +## [](https://www.jetbrains.com/teamcity/) docker images + +[](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub) + +### Minimal agent (jetbrains/teamcity-minimal-agent) + +[![jetbrains/teamcity-minimal-agent](https://img.shields.io/docker/pulls/jetbrains/teamcity-minimal-agent.svg)](https://hub.docker.com/r/jetbrains/teamcity-minimal-agent/) + +This minimal image adds just a TeamCity agent without any tools like VCS clients, etc. It is suitable for simple builds and can serve as a base for your custom images. + +- [Repo](https://hub.docker.com/r/jetbrains/teamcity-minimal-agent) +- [Details](context/generated/teamcity-minimal-agent.md) +- [How to use](dockerhub/teamcity-minimal-agent/README.md) + +### Agent (jetbrains/teamcity-agent) + +[![jetbrains/teamcity-agent](https://img.shields.io/docker/pulls/jetbrains/teamcity-agent.svg)](https://hub.docker.com/r/jetbrains/teamcity-agent/) + +This image adds a TeamCity agent suitable for Java and .NET development. + +- [Repo](https://hub.docker.com/r/jetbrains/teamcity-agent) +- [Details](context/generated/teamcity-agent.md) +- [How to use](dockerhub/teamcity-agent/README.md) + +### Server (jetbrains/teamcity-server) + +[![jetbrains/teamcity-server](https://img.shields.io/docker/pulls/jetbrains/teamcity-server.svg)](https://hub.docker.com/r/jetbrains/teamcity-server/) + +- [Repo](https://hub.docker.com/r/jetbrains/teamcity-server) +- [Details](context/generated/teamcity-server.md) +- [How to use](dockerhub/teamcity-server/README.md) + +### Build images locally + +- Ensure [Docker](https://www.docker.com/get-started) installed. +- Clone this repository. +- Download the required TeamCity [_.tar.gz_ file](https://www.jetbrains.com/teamcity/download/#section=section-get). For instance ```wget -c https://download.jetbrains.com/teamcity/TeamCity-2020.1.tar.gz -O - | tar -xz -C context``` +- Unpack this file into the directory [context/TeamCity](context/TeamCity) within the cloned repository. +- Apply required changes in the directory [configs](configs). +- Generate docker and readme files by running the _generate.sh_ or _generate.cmd_ script. All generated artifacts will be placed into the directory [generated](generated). +- Run docker build commands like [on this page](generated/teamcity-agent.md) keeping the proposed order from the root directory of the cloned repository. The proposed order is important because some TeamCity images may be based on other TeamCity images. +- Check the docker images by running ```docker-compose up``` in the directories like [checks/windows-local](checks/windows-local) or [checks/linux-local](checks/linux-local). \ No newline at end of file diff --git a/teamcity/server/README.md b/teamcity/server/README.md new file mode 100644 index 000000000..76aff7f7a --- /dev/null +++ b/teamcity/server/README.md @@ -0,0 +1,115 @@ +## TeamCity Server - Powerful Continuous Integration and Continuous Delivery out of the box + +[](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub) + +This is an official [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) server image. The image is suitable for production use and evaluation purposes. + + More details about tags and components are [here](https://github.com/JetBrains/teamcity-docker-images/blob/master/generated/teamcity-server.md). + +## How to Use This Image + +First, pull the image from the Docker Hub Repository + +```docker pull jetbrains/teamcity-server``` + + +### Linux container + +Use the following command to start a container with TeamCity server + + + +``` +docker run -it --name teamcity-server-instance \ + -v :/data/teamcity_server/datadir \ + -v :/opt/teamcity/logs \ + -p :8111 \ + jetbrains/teamcity-server +``` +where + + - **\** is the host machine directory to serve as the [TeamCity Data Directory](https://www.jetbrains.com/help/teamcity/teamcity-data-directory.html) where TeamCity stores project settings and build results. Pass an empty directory for the brand new start. If the mapping is not set, you will lose all the TeamCity settings on the container shutdown. + - **\** is the host machine directory to store the TeamCity server logs. The mapping can be omitted, but then the logs will be lost on container shutdown which will make issues investigation impossible. + + +If you need to run a Linux-based container with non-root permissions (for example, when using some open source container application platforms), set the server's internal user identifier explicitly by passing an additional `-u 1000:1000` parameter. Note that after switching to a non-root user you might not be able to perform writing operations on files created under the root user. In this case, run `chown -R 1000:1000 ` to change the ownership of the directory containing these files. + +#### Alternative Tomcat configuration + +TeamCity has Tomcat J2EE server under the hood, and if you need to provide an alternative configuration for the TomCat, you can use extra parameter +``` +-v /alternative/path/to/conf:/opt/teamcity/conf +``` + +To get a sample of the current contents of the Tomcat's `conf` directory, use the [`docker cp`](https://docs.docker.com/engine/reference/commandline/cp/) command. + +### Windows container +``` +docker run -it --name teamcity-server-instance + -v :C:/ProgramData/JetBrains/TeamCity + -v :C:/TeamCity/logs + -p :8111 + jetbrains/teamcity-server +``` + +See above for **\** and **\** description. + +The details on the known problems in Windows containers are available in the [TeamCity documentation](https://www.jetbrains.com/help/teamcity/known-issues.html#KnownIssues-WindowsDockerContainers). + +### Database + +TeamCity stores set of users and build results in an SQL database in addition to the Data Directory. +By default, the TeamCity server uses an internal database stored on the file system under the data directory. However, production use requires an [external database](https://www.jetbrains.com/help/teamcity/setting-up-an-external-database.html#SettingupanExternalDatabase-DefaultInternalDatabase). + +To use the server for production, make sure to review and apply the [recommendations](https://www.jetbrains.com/help/teamcity/installing-and-configuring-the-teamcity-server.html#InstallingandConfiguringtheTeamCityServer-ConfiguringServerforProductionUse). + +### Build agents + +You will need at least one TeamCity agent to run builds. Check the [`jetbrains/teamcity-agent`](https://hub.docker.com/r/jetbrains/teamcity-agent/) and [`jetbrains/teamcity-minimal-agent`](https://hub.docker.com/r/jetbrains/teamcity-minimal-agent/) images. + +## Additional Commands + +When you need to pass additional environment variables to the server process, use the regular `-e` option. For example, to pass TEAMCITY_SERVER_MEM_OPTS environment variable, use: + +``` +docker run -it --name teamcity-server-instance \ + -e TEAMCITY_SERVER_MEM_OPTS="-Xmx2g -XX:MaxPermSize=270m -XX:ReservedCodeCacheSize=350m" \ + -v :/data/teamcity_server/datadir \ + -v :/opt/teamcity/logs \ + -p :8111 \ + jetbrains/teamcity-server +``` +  +To run the `maintainDB` script (e.g. for the server backup), stop your running container and execute the following command from your host: +``` +docker run -it --name teamcity-server-instance \ + -v :/data/teamcity_server/datadir \ + -v :/opt/teamcity/logs \ + -p :8111 \ + jetbrains/teamcity-server \ + "/opt/teamcity/bin/maintainDB.sh" "backup" +``` +  + +Be sure to keep all the local system paths the same with the main server start command. + +To change the context of the TeamCity app inside a Tomcat container, pass `-e TEAMCITY_CONTEXT=/context` to the `docker run` command. The default one is `ROOT`, meaning that the server would be available at `http://host/`. + +## Upgrading TeamCity + +Make sure to check the generic TeamCity [upgrade instructions](https://www.jetbrains.com/help/teamcity/upgrade.html). +If you made no changes to the container, you can just stop the running container, pull a newer version of the image and the server in it via the usual command. +If you changed the image, you will need to replicate the changes to the new TeamCity server image. In general, use Docker common sense to perform the upgrade. + +## License + +The image is available under the [TeamCity license](https://www.jetbrains.com/teamcity/buy/license.html). +TeamCity is free for perpetual use with the limitation of 100 build configurations (jobs) and 3 agents. [Licensing details](https://www.jetbrains.com/help/teamcity/licensing-policy.html). + +## Feedback + +Report issues of suggestions to the official TeamCity [issue tracker](https://youtrack.jetbrains.com/issues/TW). + +## Other TeamCity Images +* [Minimal Build Agent](https://hub.docker.com/r/jetbrains/teamcity-minimal-agent/) +* [Build Agent](https://hub.docker.com/r/jetbrains/teamcity-agent/) diff --git a/teamcity/server/README.md.1 b/teamcity/server/README.md.1 new file mode 100644 index 000000000..b53fe01e8 --- /dev/null +++ b/teamcity/server/README.md.1 @@ -0,0 +1,93 @@ +## TeamCity Minimal Build Agent + +[](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub) + +This is an official [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) minimal build agent image. + + More details about tags and components are [here](https://github.com/JetBrains/teamcity-docker-images/blob/master/generated/teamcity-minimal-agent.md). + +The [TeamCity build agent](https://www.jetbrains.com/help/teamcity/build-agent.html) connects to the TeamCity server and spawns the actual build processes. +You can use the ```jetbrains/teamcity-server``` image to run a TeamCity server. + +This minimal image adds just a TeamCity agent without any tools like VCS clients, etc. It is suitable for simple builds and can serve as a base for your custom images. For Java or .NET development we recommend using the default build agent image [jetbrains/teamcity-agent](https://hub.docker.com/r/jetbrains/teamcity-agent/). + +## How to Use This Image + +Pull the TeamCity minimal image from the Docker Hub Repository: + +``` +jetbrains/teamcity-minimal-agent +``` +  +and use the following command to start a container with TeamCity agent running inside +a Linux container: + +``` +docker run -it -e SERVER_URL="" \ + -v :/data/teamcity_agent/conf \ + jetbrains/teamcity-minimal-agent +``` +  +or a Windows container: +``` +docker run -it -e SERVER_URL="" + -v :C:/BuildAgent/conf + jetbrains/teamcity-minimal-agent +``` +where `` is the full URL for TeamCity server, accessible by the agent. Note that `localhost` will not generally not work as it will refer to the `localhost` inside the container. +`` is the host machine directory to serve as the TeamCity agent config directory. We recommend providing this binding in order to persist the agent configuration, e.g. authorization on the server. Note that you should map a different folder for every new agent you create. + +Since version 2020.1, TeamCity agent Docker images __run under a non-root user__. Refer to our [upgrade notes](https://www.jetbrains.com/help/teamcity/upgrade-notes.html#UpgradeNotes-AgentDockerimagesrunundernon-rootuser) for information on possible affected use cases. + +When you run the agent for the first time, you should authorize it via the TeamCity server UI: go to the **Unauthorized Agents** page in your browser. See [more details](https://www.jetbrains.com/help/teamcity/build-agent.html). + +All information about agent authorization is stored in agent's configuration folder. If you stop the container with the agent and then start a new one with the same config folder, the agent's name and authorization state will be preserved. + +TeamCity agent does not need manual upgrade: it will upgrade itself automatically on connecting to an upgraded server. + +### Agent Image Environment Variables + +- **SERVER_URL** - URL of the TeamCity server agent will connect to +- **AGENT_NAME** - (optional) Name of the agent in TeamCity UI, autogenerated if omitted +- **AGENT_TOKEN** - (optional) Agent authorization token, if unset, the agent should be [authorized](https://www.jetbrains.com/help/teamcity/build-agent.html#BuildAgent-BuildAgentStatus) via TeamCity UI. +- **OWN_ADDRESS** - (optional, linux only) IP address build agent binds to, autodetected +- **OWN_PORT** - (optional, linux only) Port build agent binds to, 9090 by default + +### Windows Containers Limitations + +The details on the known problems in Windows containers are available in the [TeamCity documentation](https://www.jetbrains.com/help/teamcity/known-issues.html#KnownIssues-WindowsDockerContainers). + +## Customization + +You can customize the image via the usual Docker procedure: + +1. Run the image +``` +docker run -it -e SERVER_URL="" \ + -v :/data/teamcity_agent/conf \ + --name="my-customized-agent" \ + jetbrains/teamcity-minimal-agent \ +``` +2. Enter the container +``` +docker exec -it my-customized-agent bash +``` + +3. Change whatever you need +4. Exit and [create a new image](https://docs.docker.com/engine/reference/commandline/commit/) from the container +``` +docker commit my-customized-agent +``` + +## License + +The image is available under the [TeamCity license](https://www.jetbrains.com/teamcity/buy/license.html). +TeamCity is free for perpetual use with the limitation of 100 build configurations (jobs) and 3 agents. [Licensing details](https://www.jetbrains.com/help/teamcity/licensing-policy.html). + +## Feedback + +Report issues of suggestions to the official TeamCity [issue tracker](https://youtrack.jetbrains.com/issues/TW). + +## Other TeamCity Images +* [TeamCity Server](https://hub.docker.com/r/jetbrains/teamcity-server/) +* [Build Agent](https://hub.docker.com/r/jetbrains/teamcity-agent/) diff --git a/testrail/latest/README.md b/testrail/latest/README.md new file mode 100644 index 000000000..1aae0e92d --- /dev/null +++ b/testrail/latest/README.md @@ -0,0 +1,36 @@ +## Testrail + +* Based on `websites:php7.2` of our ecosystem. + +# Compose example + +```yml +version: '3.7' +services: + testrail: + image: epicmorg/testrail +# depends_on: +# - mysql +# - memcached + restart: unless-stopped + volumes: + - /etc/localtime:/etc/localtime + - /etc/timezone:/etc/timezone +# - /etc/letsencrypt:/etc/letsencrypt + - www:/var/www + - apache2:/etc/apache2 + - php:/etc/php + restart: unless-stopped +# extra_hosts: +# - "example.com:192.168.0.11" + tmpfs: + - /tmp + - /var/lib/php/sessions +volumes: + www: + external: true + apache2: + external: true + php: + external: true +```