gitpanda 🐼
GitLab URL expander for Slack
Example
Requirements
- GitLab API v4
- Slack app and OAuth Access Token
- User URL
- e.g.
${GITLAB_BASE_URL}/:username
- Group URL
- e.g.
${GITLAB_BASE_URL}/:groupname
- Project URL
- e.g.
${GITLAB_BASE_URL}/:namespace/:reponame
- Issue URL
- e.g.
${GITLAB_BASE_URL}/:namespace/:reponame/issues/:iid
- MergeRequest URL
- e.g.
${GITLAB_BASE_URL}/:namespace/:reponame/merge_requests/:iid
- Job URL
- e.g.
${GITLAB_BASE_URL}/:namespace/:reponame/-/jobs/:id
- Pipeline URL
- e.g.
${GITLAB_BASE_URL}/:namespace/:reponame/pipelines/:id
- Blob URL
- e.g.
${GITLAB_BASE_URL}/:namespace/:reponame/blob/:sha1/:filename
- Commit URL
- e.g.
${GITLAB_BASE_URL}/:namespace/:reponame/commit/:sha1
- Project snippet URL
- e.g.
${GITLAB_BASE_URL}/:namespace/:reponame/snippets/:id
- Snippet URL
- e.g.
${GITLAB_BASE_URL}/snippets/:id
Running standalone
Download latest binary from https://github.com/sue445/gitpanda/releases
PORT=8000 \
GITLAB_API_ENDPOINT=https://your-gitlab.example.com/api/v4 \
GITLAB_BASE_URL=https://your-gitlab.example.com \
GITLAB_PRIVATE_TOKEN=xxxxxxxxxx \
SLACK_OAUTH_ACCESS_TOKEN=xoxp-0000000000-0000000000-000000000000-00000000000000000000000000000000 \
SLACK_VERIFICATION_TOKEN=xxxxxxxxx \
TRUNCATE_LINES=5 \
./gitpanda
Environment variables
PORT
GITLAB_API_ENDPOINT
- e.g.
https://your-gitlab.example.com/api/v4
GITLAB_BASE_URL
- e.g.
https://your-gitlab.example.com
GITLAB_PRIVATE_TOKEN
- Generate a personal access token with
api
scope
SLACK_OAUTH_ACCESS_TOKEN
- see CREATE_SLACK_APP.md
- e.g.
xoxp-0000000000-0000000000-000000000000-00000000000000000000000000000000
SLACK_VERIFICATION_TOKEN
TRUNCATE_LINES
- Line count to truncate the text (default. no truncate)
SENTRY_DSN
- Sentry DSN
- e.g.
https://xxxxxxxxxxxxx@sentry.example.com/0000000
Running with AWS (Lambda + API Gateway + Parameter Store)
Use latest gitpanda_linux_amd64
on https://github.com/sue445/gitpanda/releases
Environment variables
One of the following is required
Environment |
Key of Parameter Store |
GITLAB_API_ENDPOINT |
GITLAB_API_ENDPOINT_KEY |
GITLAB_BASE_URL |
GITLAB_BASE_URL_KEY |
GITLAB_PRIVATE_TOKEN |
GITLAB_PRIVATE_TOKEN_KEY |
SLACK_OAUTH_ACCESS_TOKEN |
SLACK_OAUTH_ACCESS_TOKEN_KEY |
SLACK_VERIFICATION_TOKEN |
SLACK_VERIFICATION_TOKEN_KEY |
TRUNCATE_LINES |
|
When you want to store to Parameter Store, please store as SecureString
Example
Arguments
$ ./gitpanda --help
Usage of ./gitpanda:
-version
Whether showing version
Running with docker
Run latest version
docker run --rm -it ghcr.io/sue445/gitpanda
Run with specified version
docker run --rm -it ghcr.io/sue445/gitpanda:vX.Y.Z
Images
- GitHub Container Registry (Recommended)
ghcr.io/sue445/gitpanda:latest
: Use latest version
ghcr.io/sue445/gitpanda:vX.Y.Z
: Use specified version
- Google Artifact Registry: If you want to run this app on Cloud Run, use this image
us-docker.pkg.dev/gitpanda/gitpanda/app:latest
: Use latest version
us-docker.pkg.dev/gitpanda/gitpanda/app:vX.Y.Z
: Use specified version
us-docker.pkg.dev/gitpanda/gitpanda/app:edge
: The contents of the main branch are pushed to this tag
Running with Kubernetes
1. [GKE] Create static IP and managed certificate if necessary
c.f https://cloud.google.com/kubernetes-engine/docs/how-to/managed-certs
3. Create secrets
e.g.
kubectl create secret generic gitpanda-secret \
--from-literal=gitlab_private_token=${GITLAB_PRIVATE_TOKEN} \
--from-literal=slack_oauth_access_token=${SLACK_OAUTH_ACCESS_TOKEN} \
--from-literal=slack_verification_token=${SLACK_VERIFICATION_TOKEN}
4. apply manifests
e.g.
kubectl apply -f path/to/kubernetes_manifests/*.yaml
Running with Cloud Run
See followings
Development
Recommend to use https://github.com/direnv/direnv
cp .envrc.example .envrc
vi .envrc
direnv allow