woodpecker/.gitpod.yml

121 lines
4.7 KiB
YAML

tasks:
- name: Server
env:
WOODPECKER_OPEN: true
WOODPECKER_ADMIN: woodpecker
WOODPECKER_HOST: http://host.docker.internal:8000
WOODPECKER_EXPERT_WEBHOOK_HOST: http://host.docker.internal:8000
WOODPECKER_AGENT_SECRET: '1234'
WOODPECKER_GITEA: true
WOODPECKER_DEV_WWW_PROXY: http://localhost:8010
WOODPECKER_BACKEND_DOCKER_NETWORK: ci_default
init: |
GO_VERSION=1.22
rm -rf ~/go
curl -fsSL https://dl.google.com/go/go$GO_VERSION.linux-amd64.tar.gz | tar xzs -C ~/
go mod tidy
mkdir -p web/dist
touch web/dist/index.html
make build-server
command: |
grep "WOODPECKER_GITEA_URL=" .env \
&& sed "s,^WOODPECKER_GITEA_URL=.*,WOODPECKER_GITEA_URL=$(gp url 3000)," .env \
|| echo WOODPECKER_GITEA_URL=$(gp url 3000) >> .env
grep "WOODPECKER_HOST=" .env \
&& sed "s,^WOODPECKER_HOST=.*,WOODPECKER_HOST=$(gp url 8000)," .env \
|| echo WOODPECKER_HOST=$(gp url 8000) >> .env
gp sync-await gitea
gp sync-done woodpecker-server
go run go.woodpecker-ci.org/woodpecker/v2/cmd/server
- name: Agent
env:
WOODPECKER_SERVER: localhost:9000
WOODPECKER_AGENT_SECRET: '1234'
WOODPECKER_MAX_WORKFLOWS: 1
WOODPECKER_HEALTHCHECK: false
command: |
gp sync-await woodpecker-server
go run go.woodpecker-ci.org/woodpecker/v2/cmd/agent
- name: Gitea
command: |
export DOCKER_COMPOSE_CMD="docker-compose -f docker-compose.gitpod.yaml -p woodpecker"
export GITEA_CLI_CMD="$DOCKER_COMPOSE_CMD exec -u git gitea gitea"
$DOCKER_COMPOSE_CMD up -d
until curl --output /dev/null --silent --head --fail http://localhost:3000; do printf '.'; sleep 1; done
$GITEA_CLI_CMD admin user create --username woodpecker --password password --email woodpecker@localhost --admin
export GITEA_TOKEN=$($GITEA_CLI_CMD admin user generate-access-token -u woodpecker --scopes write:repository,write:user --raw | tail -n 1 | awk 'NF{ print $NF }')
GITEA_OAUTH_APP=$(curl -X 'POST' 'http://localhost:3000/api/v1/user/applications/oauth2' \
-H 'accept: application/json' -H 'Content-Type: application/json' -H "Authorization: token ${GITEA_TOKEN}" \
-d "{ \"name\": \"Woodpecker CI\", \"confidential_client\": true, \"redirect_uris\": [ \"https://8000-${GITPOD_WORKSPACE_ID}.${GITPOD_WORKSPACE_CLUSTER_HOST}/authorize\" ] }")
touch .env
grep "WOODPECKER_GITEA_CLIENT=" .env \
&& sed "s,^WOODPECKER_GITEA_CLIENT=.*,WOODPECKER_GITEA_CLIENT=$(echo $GITEA_OAUTH_APP | jq -r .client_id)," .env \
|| echo WOODPECKER_GITEA_CLIENT=$(echo $GITEA_OAUTH_APP | jq -r .client_id) >> .env
grep "WOODPECKER_GITEA_SECRET=" .env \
&& sed "s,^WOODPECKER_GITEA_SECRET=.*,WOODPECKER_GITEA_SECRET=$(echo $GITEA_OAUTH_APP | jq -r .client_secret)," .env \
|| echo WOODPECKER_GITEA_SECRET=$(echo $GITEA_OAUTH_APP | jq -r .client_secret) >> .env
curl -X 'POST' \
'http://localhost:3000/api/v1/user/repos' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-H "Authorization: token ${GITEA_TOKEN}" \
-d '{ "auto_init": false, "name": "woodpecker-test", "private": true, "template": false, "trust_model": "default" }'
cd contrib/woodpecker-test-repo
git init
git checkout -b main
git remote add origin http://woodpecker:${GITEA_TOKEN}@localhost:3000/woodpecker/woodpecker-test.git
git add .
git commit -m "Initial commit"
git push -u origin main
cd ../..
gp sync-done gitea
$DOCKER_COMPOSE_CMD logs -f
- name: App
before: |
cd web/
init: |
pnpm install
command: |
pnpm start
- name: Docs
before: |
cd docs/
init: |
pnpm install
pnpm build:woodpecker-plugins
command: |
pnpm start --port 4000
ports:
- port: 3000
name: Gitea
onOpen: ignore
visibility: public # TODO: https://github.com/woodpecker-ci/woodpecker/issues/856
- port: 8000
name: Woodpecker
onOpen: notify
visibility: public # TODO: https://github.com/woodpecker-ci/woodpecker/issues/856
- port: 9000
name: Woodpecker GRPC
onOpen: ignore
- port: 8010
description: Do not use! Access woodpecker on port 8000
onOpen: ignore
- port: 4000
name: Docs
onOpen: notify
vscode:
extensions:
# cSpell:disable
- 'golang.go'
- 'EditorConfig.EditorConfig'
- 'dbaeumer.vscode-eslint'
- 'esbenp.prettier-vscode'
- 'voorjaar.windicss-intellisense'
- 'Vue.volar'
- 'redhat.vscode-yaml'
- 'davidanson.vscode-markdownlint'
- 'streetsidesoftware.code-spell-checker'
# cSpell:enable