Last active
October 17, 2021 00:48
-
-
Save json-m/cd9a61734d85ae7b8c6187826141ef88 to your computer and use it in GitHub Desktop.
teamcity local docker image deployment meta-runner. traefik+local registry
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<meta-runner name="localdeploy"> | |
<description>builds docker image and deploys to local machine</description> | |
<settings> | |
<parameters> | |
<param name="env.ASSIGNED_PORT" value="8888" /> | |
</parameters> | |
<build-runners> | |
<runner name="build" type="DockerCommand"> | |
<parameters> | |
<param name="command.args" value="--pull" /> | |
<param name="docker.command.type" value="build" /> | |
<param name="docker.image.namesAndTags" value="localhost:5000/%env.TEAMCITY_PROJECT_NAME%" /> | |
<param name="docker.push.remove.image" value="true" /> | |
<param name="dockerImage.platform" value="linux" /> | |
<param name="dockerfile.path" value="Dockerfile" /> | |
<param name="dockerfile.source" value="PATH" /> | |
<param name="teamcity.step.mode" value="default" /> | |
</parameters> | |
</runner> | |
<runner name="push to registry" type="DockerCommand"> | |
<parameters> | |
<param name="docker.command.type" value="push" /> | |
<param name="docker.image.namesAndTags" value="localhost:5000/%env.TEAMCITY_PROJECT_NAME%" /> | |
<param name="docker.push.remove.image" value="true" /> | |
<param name="dockerfile.source" value="PATH" /> | |
<param name="teamcity.step.mode" value="default" /> | |
</parameters> | |
</runner> | |
<runner name="deploy to disk" type="simpleRunner"> | |
<parameters> | |
<param name="script.content"><![CDATA[docker ps -a --filter "ancestor=%env.TEAMCITY_PROJECT_NAME%" | grep %env.TEAMCITY_PROJECT_NAME% > /dev/null | |
if [ $? -eq 0 ]; then | |
echo "Stopping container for %env.TEAMCITY_PROJECT_NAME%" | |
docker stop %env.TEAMCITY_PROJECT_NAME% 2>&1 1>/dev/null | |
if [ $? -eq 0 ]; then | |
echo "Removing previous container for %env.TEAMCITY_PROJECT_NAME%" | |
docker rm %env.TEAMCITY_PROJECT_NAME% 2>&1 1>/dev/null | |
else | |
echo "Problem stopping container, bailing out of deploy process" | |
exit 1 | |
fi | |
fi | |
echo "Pulling latest image for %env.TEAMCITY_PROJECT_NAME%" | |
docker pull localhost:5000/%env.TEAMCITY_PROJECT_NAME%:latest | |
if [ $? -eq 0 ]; then | |
echo "Launching new container for %env.TEAMCITY_PROJECT_NAME%" | |
docker run -d --restart=unless-stopped --name %env.TEAMCITY_PROJECT_NAME% --network=web --label "traefik.enable=true" --label "traefik.docker.network=web" --label "traefik.frontend.rule=Host: %env.TEAMCITY_PROJECT_NAME%.app.zj.is" --label "traefik.port=%env.ASSIGNED_PORT%" localhost:5000/%env.TEAMCITY_PROJECT_NAME%:latest 2>&1 1>/dev/null | |
fi]]></param> | |
<param name="teamcity.step.mode" value="default" /> | |
<param name="use.custom.script" value="true" /> | |
</parameters> | |
</runner> | |
</build-runners> | |
<requirements /> | |
</settings> | |
</meta-runner> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment