Compare commits

...
Author SHA1 Message Date
dboreham 4256150ed4 Use gitea not gitee 2023-03-16 12:42:49 -06:00
dboreham 758303acfd Remove example creds 2023-03-16 12:28:58 -06:00
dboreham 313677fcf2 Initial version 2023-03-16 12:27:23 -06:00
dboreham 2291b2be8f Merge pull request #12 from cerc-io/dboreham/postgres-container-uid-fix
Override uid/gid of files created in the data dir
2023-02-28 10:23:00 -07:00
dboreham 506f2d35bf Override uid/gid of files created in the data dir 2023-02-28 10:19:42 -07:00
dboreham d74a637189 Merge pull request #11 from cerc-io/dboreham/usability-fixes
Add helpful messages
2023-02-28 09:23:11 -07:00
dboreham 85f9bb3d26 Add helfup messages 2023-02-28 09:00:09 -07:00
dboreham 81f8fe7df0 Merge pull request #9 from cerc-io/dboreham/remove-container-name
Remove extraneous container name
2023-02-28 08:44:53 -07:00
dboreham f6c4d722ef Remove extraneous container name 2023-02-28 08:39:47 -07:00
dboreham aead04bae0 Add sleep hack for gitea 2023-02-17 15:30:55 -07:00
dboreham 3d5a23819b Merge pull request #8 from cerc-io/dboreham/so-integration
Integrate with stack orchestrator
2023-02-17 15:24:45 -07:00
dboreham 942f369f78 Integrate with stack orchestrator 2023-02-17 15:23:14 -07:00
dboreham 9b2bff61d8 Merge pull request #7 from cerc-io/dboreham/update-gitea-doc
Update gitea doc
2023-02-17 09:21:28 -07:00
dboreham 1c1b51d37e Update doc 2023-02-17 09:20:41 -07:00
dboreham 99e5b939d4 Merge pull request #6 from cerc-io/dboreham/gitea-initial-setup
gitea initial setup
2023-02-14 19:07:26 +00:00
dboreham c602ec6994 Full initialization script 2023-02-14 18:58:02 +00:00
dboreham 902e8517ff Initial commit 2023-02-14 13:22:03 +00:00
dboreham ecfd565a3b Merge pull request #5 from cerc-io/dboreham/gitea-unattended-install
Basic unattended install
2023-02-12 22:16:59 +00:00
dboreham 843f2e2c2a Basic unattended install 2023-02-12 22:15:47 +00:00
dboreham e580f90655 Merge pull request #4 from cerc-io/dboreham/fixes
Add host name
2023-01-06 15:50:19 -07:00
dboreham 86bb68fe74 Add host name 2023-01-06 15:49:36 -07:00
dboreham af71828317 Merge pull request #1 from cerc-io/dboreham/add-basic-pipeline
Add gitea
2022-12-14 13:18:11 -07:00
6 changed files with 138 additions and 7 deletions
+32
View File
@@ -0,0 +1,32 @@
# Deploy drone CI system
services:
drone:
image: drone/drone:2
environment:
- DRONE_GITEA_SERVER=http://gitea.local
- DRONE_GITEA_CLIENT_ID=put_the_real_client_id_here
- DRONE_GITEA_CLIENT_SECRET=put_the_real_secret_here
- DRONE_RPC_SECRET=super-duper-secret
- DRONE_SERVER_HOST=gitea.local # TODO: make this more generic
- DRONE_SERVER_PROTO=http
restart: always
volumes:
- ./drone:/data
ports:
- 80
- 443
drone-runner:
image: drone/drone-runner-docker:1
environment:
- DRONE_RPC_PROTO=http
- DRONE_RPC_HOST=drone
- DRONE_RPC_SECRET=super-duper-secret
- DRONE_RUNNER_CAPACITY=2
- DRONE_RUNNER_NAME=drone-runner-1
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
ports:
- 3000
+5
View File
@@ -0,0 +1,5 @@
#!/usr/bin/env bash
if [[ -n "$CERC_SCRIPT_DEBUG" ]]; then
set -x
fi
mkdir -p ./drone
+6 -2
View File
@@ -1,3 +1,7 @@
## Manual deployment notes
## Deployment notes
### Gitea
1. Create admin user in web UI on initial setup
1. `cd ./gitea`
1. Run the script `./run-this-first.sh`
1. Bring up the gitea cluster `docker compose up -d`
1. Run the script `./initialize-gitea.sh`
1. Note the access token printed, it will be needed to publish packages.
+10 -3
View File
@@ -1,13 +1,13 @@
version: "3"
# TODO: remove version since it is now redundant
# remove this network definition unless there's a reason for it
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:1.17.1
container_name: gitea
image: gitea/gitea:1.18.3
environment:
- USER_UID=1000
- USER_GID=1000
@@ -16,6 +16,10 @@ services:
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea
- GITEA__server__HTTP_PORT=3000
- GITEA__server__LOCAL_ROOT_URL=http://gitea.local:3000/
- GITEA__server__ROOT_URL=http://gitea.local:3000/
- GITEA__security__INSTALL_LOCK=true
restart: always
networks:
- gitea
@@ -37,6 +41,9 @@ services:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=gitea
- POSTGRES_DB=gitea
# Workaround below for lack of docker uid mapping. Change the container's postgres user's uid/gid to match the host user's
entrypoint: bash
command: -c 'usermod -u ${CERC_HOST_UID:-1000} postgres;groupmod -g ${CERC_HOST_GID:-1000} postgres;exec /usr/local/bin/docker-entrypoint.sh postgres'
networks:
- gitea
volumes:
+80
View File
@@ -0,0 +1,80 @@
#!/usr/bin/env bash
# Run this script once after bringing up gitea in docker compose
# TODO: add a check to detect that gitea has not fully initialized yet (no user relation error)
GITEA_USER=gitea_admin
GITEA_PASSWORD=admin1234
GITEA_USER_EMAIL=${GITEA_USER}@example.com
GITEA_NEW_ORGANIZATION=cerc-io
GITEA_URL_PREFIX=http://localhost:3000
CERC_GITEA_TOKEN_NAME=laconic-so-publication-token
if [[ -n "$CERC_SCRIPT_DEBUG" ]]; then
set -x
fi
# Create admin user
# First check if it already exists
if [[ -z ${CERC_SO_COMPOSE_PROJECT} ]] ; then
compose_command="docker compose"
else
compose_command="docker compose -p ${CERC_SO_COMPOSE_PROJECT}"
fi
# HACK: sleep a bit because gitea may not be up yet (container reports it has started before service is available)
sleep 5
${compose_command} exec --user git server gitea admin user list --admin | grep -v -e "^ID" | awk '{ print $2 }' | grep ${GITEA_USER} > /dev/null
if [[ $? == 1 ]] ; then
# Then create if it wasn't found
${compose_command} exec --user git server gitea admin user create --admin --username ${GITEA_USER} --password ${GITEA_PASSWORD} --email ${GITEA_USER_EMAIL}
fi
# HACK: sleep a bit because if we don't gitea will return empty responses
sleep 5
# Check if the token already exists
token_response=$( curl -s "${GITEA_URL_PREFIX}/api/v1/users/${GITEA_USER}/tokens" \
-u ${GITEA_USER}:${GITEA_PASSWORD} \
-H "Content-Type: application/json")
if [[ -n ${token_response} ]] ; then
echo ${token_response} | jq --exit-status -r 'to_entries[] | select(.value.name == "'${CERC_GITEA_TOKEN_NAME}'")'
if [[ $? == 0 ]] ; then
token_found=1
fi
fi
if [[ ${token_found} != 1 ]] ; then
# Create access token if not found
# Note that we either create the token here, or we needed to be passed
# the token by the caller. This is because gitea won't release the token
# plaintext post-creation.
new_gitea_token=$( curl -s -X POST "${GITEA_URL_PREFIX}/api/v1/users/${GITEA_USER}/tokens" \
-u ${GITEA_USER}:${GITEA_PASSWORD} \
-H "Content-Type: application/json" \
-d '{"name":"'${CERC_GITEA_TOKEN_NAME}'"}' \
| jq -r .sha1 )
echo "This is your gitea access token: ${new_gitea_token}. Keep it safe and secure, it can not be fetched again from gitea."
echo "To use with laconic-so set this environment variable: export CERC_NPM_AUTH_TOKEN=${new_gitea_token}"
CERC_GITEA_AUTH_TOKEN=${new_gitea_token}
else
# If the token exists, then we must have been passed its value.
# If we were not, then we fail hard here.
if [[ -z ${CERC_GITEA_AUTH_TOKEN} ]] ; then
echo "FATAL error: gitea auth token \"${CERC_GITEA_TOKEN_NAME}\" already exists but no CERC_GITEA_AUTH_TOKEN was provided"
exit 1
fi
fi
# Now that we're sure the token exists and is set in CERC_GITEA_AUTH_TOKEN,
# we can proceed with token-authenticated API requests below
# Create org
# First check if it already exists
curl -s "${GITEA_URL_PREFIX}/api/v1/admin/users/${GITEA_USER}/orgs" \
-H "Authorization: token ${CERC_GITEA_AUTH_TOKEN}" \
-H "Content-Type: application/json" \
-H "accept: application/json" \
| jq --exit-status -r 'to_entries[] | select(.value.name == "'${GITEA_NEW_ORGANIZATION}'")' > /dev/null
if [[ $? != 0 ]] ; then
# If it doesn't exist, create it
# See: https://discourse.gitea.io/t/create-remove-organization-through-api/478
curl -s -X POST "${GITEA_URL_PREFIX}/api/v1/admin/users/${GITEA_USER}/orgs" \
-H "Authorization: token ${CERC_GITEA_AUTH_TOKEN}" \
-H "Content-Type: application/json" \
-H "accept: application/json" \
-d '{"username": "'${GITEA_NEW_ORGANIZATION}'"}' > /dev/null
echo "Created the organization ${GITEA_NEW_ORGANIZATION}"
fi
echo "Gitea was configured to use host name: gitea.local, ensure that this resolves to localhost, e.g. with sudo vi /etc/hosts"
echo "Success, gitea is properly initialized"
+5 -2
View File
@@ -1,3 +1,6 @@
#!/bin/sh
#!/usr/bin/env bash
if [[ -n "$CERC_SCRIPT_DEBUG" ]]; then
set -x
fi
mkdir -p ./gitea
mkdir -p ./postgres
mkdir -p ./gitea/ssh