121 lines
4.7 KiB
YAML
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
|