Usage
#####

Start the container with this:

``docker run -ti -e GO_SERVER=your.go.server.ip_or_host edx/go-agent``

If you need to start a few GoCD agents together, you can of course use the
shell to do that. Start a few agents in the background, like this:

``for each in 1 2 3; do docker run -d --link angry_feynman:go-server edx/go-agent; done``

Getting into the container
##########################

Sometimes, you need a shell inside the container (to create test repositories,
etc). docker provides an easy way to do that:

``docker exec -i -t CONTAINER-ID /bin/bash``

To check the agent logs, you can do this:

``docker exec -i -t CONTAINER-ID tail -f /var/log/go-agent/go-agent.log``

Agent Configuration
###################

The go-agent expects it's configuration to be found at
``/var/lib/go-agent/config/``. Sharing the configuration between containers is
done by mounting a volume at this location that contains any configuration
files necessary.

**Example docker run command:**
``docker run -ti -v /tmp/go-agent/conf:/var/lib/go-agent/config -e GO_SERVER=gocd.sandbox.edx.org 718d75c467c0 bash``

`How to setup auto registration for remote agents`_

Building and Uploading the container to ECS
###########################################

-  Copy the go-agent GitHub private key to this path:

   -  ``docker/build/go-agent/files/go_github_key.pem``
   -  A dummy key is in the repo file.
   -  The actual private key is kept in LastPass - see DevOps for access.
   -  WARNING: Do *NOT* commit/push the real private key to the public
      configuration repo!

-  Create image

   -  This must be run from the root of the configuration repository
   -  ``docker build -f docker/build/go-agent/Dockerfile .``
   -  or
   -  ``make docker.test.go-agent``

-  Tag image for the go-agent-marketing Dockerfile

   - *REQUIRED for go-agent-marketing Dockerfile*
   - ``docker tag <image_id> edxops/go-agent``

-  Log docker in to AWS

   -  Assume the role of the account you wish to log in to

      -  ``source assume_role.sh <account name>``

   -  ``sh -c `aws ecr get-login --region us-east-1```

      -  You might need to remove the ``-e`` option returned by that command in
         order to successfully login.

-  Tag image

   -  ``docker tag <image_id> ############.dkr.ecr.us-east-1.amazonaws.com/prod-tools-goagent:latest``
   -  ``docker tag <image_id> ############.dkr.ecr.us-east-1.amazonaws.com/prod-tools-goagent:<version_number>``

-  upload:

   -  ``docker push ############.dkr.ecr.us-east-1.amazonaws.com/edx/release-pipeline/prod-tools-goagent:latest``
   -  ``docker push ############.dkr.ecr.us-east-1.amazonaws.com/edx/release-pipeline/prod-tools-goagent:<version_number>``

.. _How to setup auto registration for remote agents: https://docs.go.cd/current/advanced_usage/agent_auto_register.html