From 874e8193515bac6610d98c5370d57c8126468ff8 Mon Sep 17 00:00:00 2001 From: Ian Fijolek Date: Wed, 19 Apr 2017 01:24:23 +0000 Subject: [PATCH] Add Makefile and update manifest and docs --- CloudronManifest.json | 12 +++++++----- Makefile | 24 ++++++++++++++++++++++++ POSTINSTALL.md | 10 ++++++---- README.md | 6 +++++- concourse_worker.sh | 24 +++++++++++++----------- logo.png | Bin 0 -> 10004 bytes start.sh | 8 +++++--- 7 files changed, 60 insertions(+), 24 deletions(-) create mode 100644 Makefile create mode 100644 logo.png diff --git a/CloudronManifest.json b/CloudronManifest.json index 4ad50cf..e296dea 100644 --- a/CloudronManifest.json +++ b/CloudronManifest.json @@ -1,10 +1,12 @@ { - "id": "com.concourse", + "id": "io.concourse.cloudron", "title": "Concourse", - "description": "Automated CI tool", - "tagline": "Deploy it all", - "author": "Ian Fijolek ", - "website": "https://ghost.iamthefij.com/", + "description": "file://DESCRIPTION.md", + "tagline": "CI that scales with your project", + "postInstallMessage": "file://POSTINSTALL.md", + "icon": "file://logo.png", + "author": "Concourse Developers", + "website": "https://concourse.ci/", "version": "0.0.1", "healthCheckPath": "/", "httpPort": 8080, diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..0817bd2 --- /dev/null +++ b/Makefile @@ -0,0 +1,24 @@ +.PHONY: build + +default: build + +build: + cloudron build + +install: build + cloudron install + +uninstall: + cloudron uninstall + +run: install + cloudron logs && cloudron logs -f + +debug: + cloudron configure --debug + +no-debug: + cloudron configure --no-debug + +startworker: + ./concourse_worker.sh diff --git a/POSTINSTALL.md b/POSTINSTALL.md index 9e26089..3968176 100644 --- a/POSTINSTALL.md +++ b/POSTINSTALL.md @@ -1,11 +1,13 @@ -# Postinstall +### Running workers In order to run builds, you will need to set up a worker somewhere. Since this requires `sudo` and/or Docker running as `privileged`, it cannot be started by Cloudron and requires this manual step. It's easiest to do this with Docker on the same host. Executing the following commands will start up your worker connected to your main Concourse application. - tsa_container=$(cloudron list | awk '/com.concourse/{print $1;}') + tsa_container=$(cloudron list | awk '/io.concourse.cloudron/{print $1;}') tsa_hostname=$(cloudron exec --app $tsa_container env | grep HOSTNAME | sed s/.*=//) tsa_port=$(cloudron exec --app $tsa_container env | grep TSA_PORT | sed s/.*=//) docker run \ + --rm \ + --name concourse_worker \ --privileged \ --network cloudron \ --volumes-from $tsa_container \ @@ -17,8 +19,8 @@ In order to run builds, you will need to set up a worker somewhere. Since this r If you wish to do this with the binary or on another server, you will need to download your keys to facilitate the connection. This can be done using the following commands: - cloudron pull /app/data/worker_key - cloudron pull /app/data/tsa_host_key.pub + cloudron pull /app/data/worker_key ./ + cloudron pull /app/data/tsa_host_key.pub ./ Then run a worker either with the binary, you should be able to execute the following from any server: diff --git a/README.md b/README.md index f258878..1888ac9 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ # concourse-app -Cloudron packaged version of Concourse TSA +Cloudron packaged version of Concourse ATC/TSA + +### Legal + +Concourse is a trademark of Concourse in the U.S. and other countries. diff --git a/concourse_worker.sh b/concourse_worker.sh index b593a0d..5050c6c 100755 --- a/concourse_worker.sh +++ b/concourse_worker.sh @@ -1,15 +1,17 @@ #! /bin/bash -tsa_container=$(cloudron list | awk '/com.concourse/{print $1;}') +# This is used to debug and will not daemonize or restart +# To run this in production remove the `--rm` flag and replace with `-d --restart unless-stopped` +tsa_container=$(cloudron list | awk '/io.concourse.cloudron/{print $1;}') tsa_hostname=$(cloudron exec --app $tsa_container env | grep HOSTNAME | sed s/.*=//) tsa_port=$(cloudron exec --app $tsa_container env | grep TSA_PORT | sed s/.*=//) - -sudo docker run --rm \ - --privileged \ - --network cloudron \ - --volumes-from $tsa_container \ - concourse/concourse worker \ - --tsa-host $tsa_hostname \ - --tsa-port $tsa_port \ - --tsa-public-key /app/data/tsa_host_key.pub \ - --tsa-worker-private-key /app/data/worker_key +sudo docker run -d \ + --name concourse_worker \ + --privileged \ + --network cloudron \ + --volumes-from $tsa_container \ + concourse/concourse worker \ + --tsa-host $tsa_hostname \ + --tsa-port $tsa_port \ + --tsa-public-key /app/data/tsa_host_key.pub \ + --tsa-worker-private-key /app/data/worker_key diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..82439b92dd49f3c56a638c31ac2ab4398bcbfef9 GIT binary patch literal 10004 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 e!~Z`30RR6h*~mV_VmmVc0000S?L literal 0 HcmV?d00001 diff --git a/start.sh b/start.sh index d35e429..0778bcc 100755 --- a/start.sh +++ b/start.sh @@ -1,9 +1,7 @@ #! /bin/bash set -e -# Chown necessary directories here since these are volumes -chown -R cloudron:cloudron /app/data /run - +# Verify init with keys if ! [ -f /app/data/.initialized ]; then echo "First time init!" @@ -14,10 +12,14 @@ if ! [ -f /app/data/.initialized ]; then cp /app/data/worker_key.pub /app/data/authorized_worker_keys touch /app/data/.initialized + echo "Done with init. Starting" else echo "Already initialized. Starting" fi +# Chown necessary directories here since these are volumes +chown -R cloudron:cloudron /app/data /run + export CONCOURSE_EXTERNAL_URL=$APP_ORIGIN export CONCOURSE_POSTGRES_HOST=$POSTGRESQL_HOST export CONCOURSE_POSTGRES_PORT=$POSTGRESQL_PORT