woodpecker-ci / woodpecker Goto Github PK
View Code? Open in Web Editor NEWWoodpecker is a simple yet powerful CI/CD engine with great extensibility.
Home Page: https://woodpecker-ci.org
License: Apache License 2.0
Woodpecker is a simple yet powerful CI/CD engine with great extensibility.
Home Page: https://woodpecker-ci.org
License: Apache License 2.0
Today govendor is used.
The task is to drop govendor and manage dependencies with Go Modules.
I find myself testing the following way before merging any PR:
A smoke test could be implemented:
Another smoketest:
What's the value?
For example I had a case where one of the dependencies were updated and pulling of images was not working.
But to be frank, the value may not be that much.
This issue investigates the possibility to run Github Actions workflows on Woodpecker.
https://github.com/actions/workflow-parser
https://github.com/nektos/act
Possibly other metrics too in version 0.8.92
Maybe an issue maybe not, but would be nice to remove race condition from the test.
WARNING: DATA RACE
Write at 0x00c4200ca2b0 by goroutine 36:
github.com/laszlocph/woodpecker/cncd/queue.(*fifo).Resume()
/Users/richard/Development/woodpecker/src/github.com/laszlocph/woodpecker/cncd/queue/fifo.go:202 +0x50
github.com/laszlocph/woodpecker/cncd/queue.TestFifoPause()
/Users/richard/Development/woodpecker/src/github.com/laszlocph/woodpecker/cncd/queue/fifo_test.go:302 +0x50f
testing.tRunner()
/Users/richard/Development/common/go-1.9.7/src/testing/testing.go:746 +0x16c
Previous read at 0x00c4200ca2b0 by goroutine 38:
github.com/laszlocph/woodpecker/cncd/queue.(*fifo).process()
/Users/richard/Development/woodpecker/src/github.com/laszlocph/woodpecker/cncd/queue/fifo.go:210 +0x54
Goroutine 36 (running) created at:
testing.(*T).Run()
/Users/richard/Development/common/go-1.9.7/src/testing/testing.go:789 +0x568
testing.runTests.func1()
/Users/richard/Development/common/go-1.9.7/src/testing/testing.go:1004 +0xa7
testing.tRunner()
/Users/richard/Development/common/go-1.9.7/src/testing/testing.go:746 +0x16c
testing.runTests()
/Users/richard/Development/common/go-1.9.7/src/testing/testing.go:1002 +0x521
testing.(*M).Run()
/Users/richard/Development/common/go-1.9.7/src/testing/testing.go:921 +0x206
main.main()
github.com/laszlocph/woodpecker/cncd/queue/_test/_testmain.go:66 +0x1d3
WARNING: DATA RACE
Read at 0x00c4201101f0 by goroutine 45:
github.com/laszlocph/woodpecker/cncd/queue.(*fifo).process()
/Users/richard/Development/woodpecker/src/github.com/laszlocph/woodpecker/cncd/queue/fifo.go:210 +0x54
Previous write at 0x00c4201101f0 by goroutine 44:
github.com/laszlocph/woodpecker/cncd/queue.(*fifo).Resume()
/Users/richard/Development/woodpecker/src/github.com/laszlocph/woodpecker/cncd/queue/fifo.go:202 +0x50
github.com/laszlocph/woodpecker/cncd/queue.TestFifoPauseResume()
/Users/richard/Development/woodpecker/src/github.com/laszlocph/woodpecker/cncd/queue/fifo_test.go:325 +0x43c
testing.tRunner()
/Users/richard/Development/common/go-1.9.7/src/testing/testing.go:746 +0x16c
Goroutine 45 (running) created at:
github.com/laszlocph/woodpecker/cncd/queue.(*fifo).Push()
/Users/richard/Development/woodpecker/src/github.com/laszlocph/woodpecker/cncd/queue/fifo.go:61 +0xa8
github.com/laszlocph/woodpecker/cncd/queue.TestFifoPauseResume()
/Users/richard/Development/woodpecker/src/github.com/laszlocph/woodpecker/cncd/queue/fifo_test.go:324 +0x42b
testing.tRunner()
/Users/richard/Development/common/go-1.9.7/src/testing/testing.go:746 +0x16c
--- FAIL: TestFifoPauseResume (0.00s)
testing.go:699: race detected during execution of test
They have to be deployed together and would seem easier to manage 😄
We must maintain our own version of plugins/git
.
Distilling the knowledge from https://discourse.drone.io/t/planned-change-to-git-clone-logic/1165
And checking drone v1's clone logic
It would be really cool if the drone.yml could be generated dynamically.
It could be a step that executes a docker image and then drone uses that output to run the pipeline.
This would allow users and companies to easier share templates. Like automatically setting up reviewapps without having to have a long yaml file.
This is not like jsonette as that is not dynamic either.
Wait until running builds finish, don't start new one.
Drone has a few features that are catering for public opensource usage. These features are often confusing in code and demand subpar defaults on the altar of security.
I hope this patch helps you to build woodpecker again.
Primarily I changed the import paths.
drone-oss-08-to-woodpecker.patch.txt or #63
Regrads,
AkiraNorthstar
This allows custom locations for the .drone.yml file.
Running a staging env with different yaml, testing beta features is made possible by this.
Today always the latest version of the drone-ui
project is fetched before release. Thus builds are not reproducible. If we tag and release a new version today, and try to re-release that version later on, we can't be sure that the same version of drone-ui
will be shipped.
https://github.com/laszlocph/drone-oss-08/blob/master/.drone.yml#L9
https://github.com/laszlocph/drone-oss-08/blob/master/BUILDING#L4
The task is to pull in an explicit version always so we know what version of drone-ui
is part of what drone-oss release.
At one of my clients we have 50 repos in Drone and have tooling to enable repos. This tooling injects the common secrets to each repository, so users don't have to insert Docker registry credentials, bucket credentials, etc.
The task is to:
One possible solution is to bootstrap secrets from a secrets file as a configuration parameter of the master. The UI should list these secrets as well as read only secrets on the secrets UI. But other ideas are very much welcome!
Hi Laszlo!
I can't login via web interface.
With reading the debug messages , i think the login form is missing?
Do you have any ideas, how i can fix this?
docker-compose.yml:
version: '2'
volumes:
drone-oss-08:
driver: local
services:
server:
image: laszlocloud/drone-oss-08-server:v0.8.102-alpine
ports:
- 8000:8000
volumes:
- drone-oss-08:/var/lib/drone/
environment:
- DRONE_DEBUG=true
- DRONE_OPEN=true
- DRONE_ADMIN=AkiraNorthstar
- DRONE_ORGS=myorg
- DRONE_HOST=http://droneserver.fritz.box
- DRONE_GITEA=true
- DRONE_GITEA_URL=https://gitea.fritz.box
- DRONE_GITEA_PRIVATE_MODE=false
- DRONE_GITEA_SKIP_VERIFY=false
- DRONE_DATABASE_DRIVER=sqlite3
- DRONE_DATABASE_DATASOURCE=/var/lib/drone/drone.sqlite
- DRONE_SECRET=1234567890
Debug Message:
server_1 | time="2019-07-24T11:37:09Z" level=info ip=172.30.0.1 latency=407.133µs method=GET path="/" status=200 time="2019-07-24T11:37:09Z" user-agent="Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"
server_1 | time="2019-07-24T11:37:09Z" level=info ip=172.30.0.1 latency=29.634µs method=GET path="/api/user/feed" status=401 time="2019-07-24T11:37:09Z" user-agent="Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"
server_1 | time="2019-07-24T11:37:09Z" level=debug msg="user feed: connection opened"
server_1 | time="2019-07-24T11:37:09Z" level=debug msg="user feed: connection closed"
server_1 | time="2019-07-24T11:37:09Z" level=info ip=172.30.0.1 latency=31.846133ms method=GET path="/stream/events" status=200 time="2019-07-24T11:37:09Z" user-agent="Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"
server_1 | time="2019-07-24T11:37:09Z" level=info ip=172.30.0.1 latency=36.788µs method=GET path="/login" status=303 time="2019-07-24T11:37:09Z" user-agent="Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"
server_1 | time="2019-07-24T11:37:09Z" level=info ip=172.30.0.1 latency=26.597µs method=GET path="/authorize" status=303 time="2019-07-24T11:37:09Z" user-agent="Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"
server_1 | time="2019-07-24T11:37:09Z" level=info ip=172.30.0.1 latency=154.933µs method=GET path="/login/form" status=200 time="2019-07-24T11:37:09Z" user-agent="Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"
server_1 | time="2019-07-24T11:37:10Z" level=info ip=172.30.0.1 latency=19.807µs method=GET path="/api/user/feed" status=401 time="2019-07-24T11:37:10Z" user-agent="Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"
server_1 | time="2019-07-24T11:37:10Z" level=debug msg="user feed: connection opened"
server_1 | time="2019-07-24T11:37:10Z" level=debug msg="Cannot find repository login/form. sql: no rows in result set"
server_1 | time="2019-07-24T11:37:10Z" level=info ip=172.30.0.1 latency=251.296µs method=GET path="/api/repos/login/form" status=401 time="2019-07-24T11:37:10Z" user-agent="Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"
server_1 | time="2019-07-24T11:37:10Z" level=debug msg="Cannot find repository login/form. sql: no rows in result set"
server_1 | time="2019-07-24T11:37:10Z" level=info ip=172.30.0.1 latency=193.252µs method=GET path="/api/repos/login/form/builds" status=401 time="2019-07-24T11:37:10Z" user-agent="Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0"
The CLI has many confusing features that were only working in Drone Enterprise.
This task is about slimming down the CLI to reduce confusion.
When creating steps for pull-request
events, it's currently not possible to identify the name of the source branch. Currently the DRONE_BRANCH
environment variable always returns master
.
It would be great if we could have a way to figure out what is the actual name of the branch in the PR, not the one it points to.
It seems that drone now has this feature somewhat available harness/gitness#2222 (comment)
Woodpecker today requires root inside the container.
It should be documented how this can still be safe, by remapping the container root to a non root on the host.
with consent of course
Add Kubernetes as a backend to Woodpecker to allow running pipelines via the Kubernetes API in a Kubernetes Cluster.
Trigger the pipeline only if the git changeset is part of predefined paths.
Implement cron like triggers to enable nightly builds.
This is a downstream task from #3
If a new commit arrives to a branch, cancel the older build.
Today with quickly repeated commits and pushes, the CI builds for all commits. The goal would be to cancel the build running on the older commit, since it's not relevant anymore, just holds up resources.
The variable DRONE_REPO_CONFIG no longer works. If DRONE_REPO_CONFIG is set to something other than ".drone.yml", then woodpecker / drone-oss-08 ignores the respective repository and its changes.
There is a need for a .editorconfig
Normally JavaScript is 2 spaces, so this to deal with the unusualities 😅he
Hello Laszlo!
Is it possible to integrate podman in woodpecker?
Podman does not run as a daemon (like docker : /var/run/docker.sock) but is fully compatible with the docker command line.
Another point is that podman can also mount secrets via mount.conf, then you maybe have also solved Global Secrets.
Also cgroups v2 is native supported by podman.
Further information about podman:
Find a way that repositories can have multiple pipelines triggered in a webhook.
For shorter feedback loop back to Github.
Today in a typical linting - building - testing pipeline the result of a lint only makes back to Github if all steps are done. The goal is to be able to lint in one pipeline, build and test in another one. This way developers can see linting results way quicker.
Is there a way in drone-ui to use the graphics as a standalone "xxx.svg", or do they have to be in the program code?
It would be easier to maintain.
Sorry to post this here, no issues can be created in your drone-ui repo.
Run a step only if the git changeset contains files from the paths defined for a given step.
Major pieces of code is factored into the github.com/cncd/*
repositories. The Docker runtime, the runtime interfaces etc.
It will ease the workflow if those packages are part of this repository.
Having them separate serves no purpose for drone-oss
.
since the go modules change in v0.8.106 the bellow pattern cause Invalid or missing image
slack: &slack
image: plugins/slack
channel: team-xx
secrets: [ slack_webhook ]
slack-staging-deploy:
<<: *slack
It would be great to know if all the code is together or if there is multiple forked repositories :)
drone_build{repo=x/y, branch=z, status=success|failure, runtime=34}
The behavior is nondeterministic, but happens often that unit tests deadlock on master
Examples:
https://cloud.drone.io/laszlocph/drone-oss-08/40/1/4
https://cloud.drone.io/laszlocph/drone-oss-08/30
Then rebuilds succeed:
https://cloud.drone.io/laszlocph/drone-oss-08/41/1/4
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.