new package woodpecker: server, agent and CLI for the Woodpecker CI system
OBS-URL: https://build.opensuse.org/package/show/devel:tools:building/woodpecker?expand=0&rev=1
This commit is contained in:
commit
a5eb62a7ec
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
.osc
|
30
Makefile
Normal file
30
Makefile
Normal file
@ -0,0 +1,30 @@
|
||||
NAME = woodpecker
|
||||
SPEC = woodpecker.spec
|
||||
|
||||
default: clean tar
|
||||
|
||||
clean:
|
||||
rm -rf $(NAME) $(NAME)-*.tar $(NAME)-*.tar.gz $(NAME)-*.obscpio vendor.tar.gz web-*.tar.gz
|
||||
|
||||
tar:
|
||||
osc service manualrun
|
||||
@version=$$( awk '/^Version:/ {print $$2;exit;}' $(SPEC) ) && \
|
||||
echo "Package version is $$version" && \
|
||||
basename=$(NAME)-$$version && \
|
||||
obscpio=$$basename.obscpio && \
|
||||
wd=$$(pwd) && \
|
||||
tmpdir=$$(mktemp -d -p /tmp) && \
|
||||
cd $$tmpdir && \
|
||||
echo "Extracting obscpio archive" && \
|
||||
cpio -id < $$wd/$$obscpio && \
|
||||
tar xvf $$wd/vendor.tar.gz && \
|
||||
cd $$basename/web/ && \
|
||||
rm -rf node_modules && \
|
||||
ls -lah && \
|
||||
pnpm install --frozen-lockfile && \
|
||||
pnpm build && \
|
||||
ls -lah && \
|
||||
cd .. && \
|
||||
tar czf $$wd/web-$$version.tar.gz ./web/ && \
|
||||
echo "DONE creating npm dependency offline cache file web-$$version.tar.gz" && \
|
||||
rm -rf $$tmpdir
|
14
PACKAGING_README.md
Normal file
14
PACKAGING_README.md
Normal file
@ -0,0 +1,14 @@
|
||||
# Packaging woodpecker
|
||||
|
||||
This server package needs assets generated by the `Makefile` that is present in
|
||||
this package. To do that, you need to have `make` and `nodejs-common` installed
|
||||
locally.
|
||||
|
||||
1. Change the version in the `_service` file
|
||||
2. Enable `pnpm` by running `sudo corepack enable pnpm`
|
||||
3. Run `make`
|
||||
4. Create a changelog entry
|
||||
5. Commit the changes as usual
|
||||
|
||||
For the OBS workflow you also need `obs-service-go_modules` as well
|
||||
as `obs-service-tar_scm` and `obs-service-recompress`.
|
22
_service
Normal file
22
_service
Normal file
@ -0,0 +1,22 @@
|
||||
<services>
|
||||
<service name="obs_scm" mode="manual">
|
||||
<param name="url">https://github.com/woodpecker-ci/woodpecker</param>
|
||||
<param name="scm">git</param>
|
||||
<param name="exclude">.git</param>
|
||||
<param name="revision">v2.7.0</param>
|
||||
<param name="versionformat">@PARENT_TAG@</param>
|
||||
<param name="changesgenerate">enable</param>
|
||||
<param name="versionrewrite-pattern">v(.*)</param>
|
||||
</service>
|
||||
<service name="set_version" mode="manual">
|
||||
</service>
|
||||
<service name="go_modules" mode="manual">
|
||||
</service>
|
||||
<!-- services below are running at buildtime -->
|
||||
<service name="tar" mode="buildtime">
|
||||
</service>
|
||||
<service name="recompress" mode="buildtime">
|
||||
<param name="file">*.tar</param>
|
||||
<param name="compression">gz</param>
|
||||
</service>
|
||||
</services>
|
4
_servicedata
Normal file
4
_servicedata
Normal file
@ -0,0 +1,4 @@
|
||||
<servicedata>
|
||||
<service name="tar_scm">
|
||||
<param name="url">https://github.com/woodpecker-ci/woodpecker</param>
|
||||
<param name="changesrevision">805c3156f857c228e9094a96619b4d00a5e6f711</param></service></servicedata>
|
2
system-user-woodpecker.conf
Normal file
2
system-user-woodpecker.conf
Normal file
@ -0,0 +1,2 @@
|
||||
#Type Name ID GECOS Home Shell
|
||||
u woodpecker - - /var/lib/woodpecker /usr/sbin/nologin
|
3
vendor.tar.gz
Normal file
3
vendor.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c8477d1fae271927c4d068354ab7216171456804e77f133424f1188f2aab7fd1
|
||||
size 21626134
|
3
web-2.7.0.tar.gz
Normal file
3
web-2.7.0.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:be657d6905f5c17ed4d02f2bd687fd686616149efc5ab635d9a59d0b1e0dfc5b
|
||||
size 57955961
|
3
woodpecker-2.7.0.obscpio
Normal file
3
woodpecker-2.7.0.obscpio
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1152ce544bdebcb98d734351d8c137b85c84b21693ab7cb90c59940b692d8281
|
||||
size 40402445
|
18
woodpecker-agent.service
Normal file
18
woodpecker-agent.service
Normal file
@ -0,0 +1,18 @@
|
||||
[Unit]
|
||||
Description=WoodpeckerCI agent
|
||||
Documentation=https://woodpecker-ci.org/docs/administration/agent-config
|
||||
Requires=network.target
|
||||
After=network.target
|
||||
ConditionFileNotEmpty=/etc/woodpecker/woodpecker-agent.env
|
||||
ConditionPathExists=/etc/woodpecker/woodpecker-agent.env
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
EnvironmentFile=/etc/woodpecker/woodpecker-agent.env
|
||||
User=woodpecker
|
||||
Group=woodpecker
|
||||
ExecStart=/usr/bin/woodpecker-agent
|
||||
WorkingDirectory=/var/lib/woodpecker/
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
18
woodpecker-server.service
Normal file
18
woodpecker-server.service
Normal file
@ -0,0 +1,18 @@
|
||||
[Unit]
|
||||
Description=WoodpeckerCI server
|
||||
Documentation=https://woodpecker-ci.org/docs/administration/server-config
|
||||
Requires=network.target
|
||||
After=network.target
|
||||
ConditionFileNotEmpty=/etc/woodpecker/woodpecker-server.env
|
||||
ConditionPathExists=/etc/woodpecker/woodpecker-server.env
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
EnvironmentFile=/etc/woodpecker/woodpecker-server.env
|
||||
User=woodpecker
|
||||
Group=woodpecker
|
||||
ExecStart=/usr/bin/woodpecker-server
|
||||
WorkingDirectory=/var/lib/woodpecker/
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
122
woodpecker.changes
Normal file
122
woodpecker.changes
Normal file
@ -0,0 +1,122 @@
|
||||
-------------------------------------------------------------------
|
||||
Sat Jul 20 14:54:52 UTC 2024 - opensuse_buildservice@ojkastl.de
|
||||
|
||||
- Update to version 2.7.0:
|
||||
* Security
|
||||
- Add blocklist of environment variables who could alter
|
||||
execution of plugins [#3934]
|
||||
- Make sure plugins only mount the workspace base in a
|
||||
predefinde location [#3933]
|
||||
- Disallow to set arbitrary environments for plugins [#3909]
|
||||
- Use proper oauth state [#3847]
|
||||
- Enhance token checking [#3842]
|
||||
- Bump github.com/hashicorp/go-retryablehttp v0.7.5 -> v0.7.7
|
||||
[#3834]
|
||||
* Features
|
||||
- Gracefully shutdown server [#3896]
|
||||
- Gracefully shutdown agent [#3895]
|
||||
- Convert urls in logs to links [#3904]
|
||||
- Allow login using multiple forges [#3822]
|
||||
- Global and organization registries [#1672]
|
||||
- Cli get repo from git remote [#3830]
|
||||
- Add api for forges [#3733]
|
||||
* Enhancement
|
||||
- Cli fix pipeline logs [#3913]
|
||||
- Migrate to github.com/urfave/cli/v3 [#2951]
|
||||
- Allow to change the working directory also for plugins and
|
||||
services [#3914]
|
||||
- Remove unplugin-icons [#3809]
|
||||
- Release windows binaries as zip file [#3906]
|
||||
- Convert to openapi 3.0 [#3897]
|
||||
- Enhance pipeline list [#3898]
|
||||
- Add user registries UI [#3888]
|
||||
- Sort users by login [#3891]
|
||||
- Exclude dummy backend in production [#3877]
|
||||
- Fix deploy task env [#3878]
|
||||
- Get default branch and show message in pipeline list [#3867]
|
||||
- Add timestamp for last work done by agent [#3844]
|
||||
- Adjust logger types [#3859]
|
||||
- Cleanup state reporting [#3850]
|
||||
- Unify DB tables/columns [#3806]
|
||||
- Let webhook pass on pipeline parsing error [#3829]
|
||||
- Exclude mocks from release build [#3831]
|
||||
- K8s secrets reference from step [#3655]
|
||||
* Bug Fixes
|
||||
- Handle empty repositories in gitea when listing PRs [#3925]
|
||||
- Update alpine package dep for docker images [#3917]
|
||||
- Don't report error if agent was terminated gracefully [#3894]
|
||||
- Let agents continuously report their health [#3893]
|
||||
- Ignore warnings for cli exec [#3868]
|
||||
- Correct favicon states [#3832]
|
||||
- Cleanup of the login flow and tests [#3810]
|
||||
- Fix newlines in logs [#3808]
|
||||
- Fix authentication error handling [#3807]
|
||||
* Documentation
|
||||
- Streamline docs for new users [#3803]
|
||||
- Add mastodon verification [#3843]
|
||||
- chore(deps): update docs npm deps non-major [#3837]
|
||||
- fix(deps): update docs npm deps non-major [#3824]
|
||||
- Add openSUSE package [#3800]
|
||||
- chore(deps): update docs npm deps non-major [#3798]
|
||||
- Add "Docker Tags" Plugin [#3796]
|
||||
- chore(deps): update dependency marked to v13 [#3792]
|
||||
- chore: fix some comments [#3788]
|
||||
* Misc
|
||||
- chore(deps): update web npm deps non-major [#3930]
|
||||
- chore(deps): update dependency vitest to v2 [#3905]
|
||||
- fix(deps): update module github.com/google/go-github/v62 to
|
||||
v63 [#3910]
|
||||
- chore(deps): update
|
||||
docker.io/woodpeckerci/plugin-docker-buildx docker tag to
|
||||
v4.1.0 [#3908]
|
||||
- Update plugin-git and add renovate trigger [#3901]
|
||||
- chore(deps): update docker.io/mstruebing/editorconfig-checker
|
||||
docker tag to v3.0.3 [#3903]
|
||||
- fix(deps): update golang-packages [#3875]
|
||||
- chore(deps): lock file maintenance [#3876]
|
||||
- [pre-commit.ci] pre-commit autoupdate [#3862]
|
||||
- Add dummy backend [#3820]
|
||||
- chore(deps): update dependency replace-in-file to v8 [#3852]
|
||||
- Update forgejo sdk [#3840]
|
||||
- chore(deps): lock file maintenance [#3838]
|
||||
- Allow to set dist dir using env var [#3814]
|
||||
- chore(deps): lock file maintenance [#3805]
|
||||
- chore(deps): update docker.io/lycheeverse/lychee docker tag
|
||||
to v0.15.1 [#3797]
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Jul 20 08:34:11 UTC 2024 - opensuse_buildservice@ojkastl.de
|
||||
|
||||
- Update to version 2.6.1:
|
||||
* Fix Changelog
|
||||
* Release 2.6.1 (#3935)
|
||||
* Add blocklist of environment variables who could alter
|
||||
execution of plugins (#3934)
|
||||
* Make sure plugins only mount the workspace base in a predefinde
|
||||
location (#3933)
|
||||
* Disalow to set arbitrary environments for plugins (#3909)
|
||||
* Bump github.com/hashicorp/go-retryablehttp v0.7.5 -> v0.7.7
|
||||
(#3833)
|
||||
* Fix newlines in logs (#3808)
|
||||
* Let webhook pass on pipeline parsion error
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jun 14 15:21:40 UTC 2024 - opensuse_buildservice@ojkastl.de
|
||||
|
||||
- Update to version 2.6.0:
|
||||
* 🎉 Release 2.6.0 (#3751)
|
||||
* Add 2.6 docs (#3786)
|
||||
* Add release event to webhooks (#3784)
|
||||
* Improve step logging (#3722)
|
||||
* Remove misleading crontab guru suggestion from docs (#3781)
|
||||
* Add documentation for KUBERNETES_SERVICE_HOST in Agent (#3747)
|
||||
* Update nix flake (#3780)
|
||||
* chore(deps): lock file maintenance (#3783)
|
||||
* chore(deps): update pre-commit hook golangci/golangci-lint to v1.59.1 (#3782)
|
||||
* Respect cli argument when checking docker backend availability (#3770)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jun 14 15:20:51 UTC 2024 - Johannes Kastl <opensuse_buildservice@ojkastl.de>
|
||||
|
||||
- new package woodpecker: server, agent and CLI for the Woodpecker
|
||||
CI system
|
4
woodpecker.obsinfo
Normal file
4
woodpecker.obsinfo
Normal file
@ -0,0 +1,4 @@
|
||||
name: woodpecker
|
||||
version: 2.7.0
|
||||
mtime: 1721337871
|
||||
commit: 805c3156f857c228e9094a96619b4d00a5e6f711
|
183
woodpecker.spec
Normal file
183
woodpecker.spec
Normal file
@ -0,0 +1,183 @@
|
||||
#
|
||||
# spec file for package woodpecker
|
||||
#
|
||||
# Copyright (c) 2024 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
# upon. The license for this file, and modifications and additions to the
|
||||
# file, is the same license as for the pristine package itself (unless the
|
||||
# license for the pristine package is not an Open Source License, in which
|
||||
# case the license is the MIT License). An "Open Source License" is a
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
%define __arch_install_post export NO_BRP_STRIP_DEBUG=true
|
||||
|
||||
%define cli_package_name woodpecker-cli
|
||||
%define cli_executable_name woodpecker-cli
|
||||
|
||||
%define agent_package_name woodpecker-agent
|
||||
%define agent_executable_name woodpecker-agent
|
||||
|
||||
%define server_package_name woodpecker-server
|
||||
%define server_executable_name woodpecker-server
|
||||
|
||||
Name: woodpecker
|
||||
Version: 2.7.0
|
||||
Release: 0
|
||||
Summary: Simple yet powerful CI/CD engine with great extensibility
|
||||
License: Apache-2.0
|
||||
URL: https://github.com/woodpecker-ci/woodpecker
|
||||
Source: %{name}-%{version}.tar.gz
|
||||
Source1: vendor.tar.gz
|
||||
Source2: web-%{version}.tar.gz
|
||||
Source11: woodpecker-server.service
|
||||
Source12: woodpecker-agent.service
|
||||
Source21: system-user-woodpecker.conf
|
||||
BuildRequires: go >= 1.22
|
||||
BuildRequires: user(woodpecker)
|
||||
|
||||
%description
|
||||
Woodpecker is a simple yet powerful CI/CD engine with great extensibility
|
||||
|
||||
%package -n %{cli_package_name}
|
||||
Summary: CLI for the WoodpeckerCI system
|
||||
|
||||
%description -n %{cli_package_name}
|
||||
Woodpecker is a simple yet powerful CI/CD engine with great extensibility. This
|
||||
package contains the command line utility for the WoodpeckerCI system
|
||||
|
||||
%package -n %{agent_package_name}
|
||||
Summary: Agent for the WoodpeckerCI system
|
||||
Requires: user(woodpecker)
|
||||
|
||||
%description -n %{agent_package_name}
|
||||
Woodpecker is a simple yet powerful CI/CD engine with great extensibility. This
|
||||
package contains the agent binary and service.
|
||||
|
||||
%package -n %{server_package_name}
|
||||
Summary: WoodpeckerCI server
|
||||
Requires: user(woodpecker)
|
||||
|
||||
%description -n %{server_package_name}
|
||||
Woodpecker is a simple yet powerful CI/CD engine with great extensibility. This
|
||||
package contains the server binary and service.
|
||||
|
||||
%package -n system-user-%{name}
|
||||
Summary: System user and group woodpecker
|
||||
BuildRequires: sysuser-tools
|
||||
BuildArch: noarch
|
||||
%sysusers_requires
|
||||
|
||||
%description -n system-user-%{name}
|
||||
This package provides the system user for the woodpecker CI system.
|
||||
|
||||
%prep
|
||||
%autosetup -p 1 -a 1
|
||||
rm -rf web/
|
||||
tar xvf %{SOURCE2}
|
||||
|
||||
%build
|
||||
# CLI executable
|
||||
go build \
|
||||
-mod=vendor \
|
||||
-buildmode=pie \
|
||||
-ldflags="-X go.woodpecker-ci.org/woodpecker/v2/version.Version=v%{version}" \
|
||||
-o bin/%{cli_executable_name} ./cmd/cli
|
||||
|
||||
# Agent executable
|
||||
go build \
|
||||
-mod=vendor \
|
||||
-buildmode=pie \
|
||||
-ldflags="-X go.woodpecker-ci.org/woodpecker/v2/version.Version=v%{version}" \
|
||||
-o bin/%{agent_executable_name} ./cmd/agent
|
||||
|
||||
# Server
|
||||
go build \
|
||||
-mod=vendor \
|
||||
-buildmode=pie \
|
||||
-ldflags="-X go.woodpecker-ci.org/woodpecker/v2/version.Version=v%{version}" \
|
||||
-o bin/%{server_executable_name} ./cmd/server
|
||||
|
||||
# system-user
|
||||
%sysusers_generate_pre %{SOURCE21} user
|
||||
|
||||
%install
|
||||
install -D -m 0755 bin/%{cli_executable_name} %{buildroot}/%{_bindir}/%{cli_executable_name}
|
||||
install -D -m 0755 bin/%{agent_executable_name} %{buildroot}/%{_bindir}/%{agent_executable_name}
|
||||
install -D -m 0755 bin/%{server_executable_name} %{buildroot}/%{_bindir}/%{server_executable_name}
|
||||
|
||||
install -d -m 0750 %{buildroot}%{_sysconfdir}/woodpecker/
|
||||
|
||||
install -d -m 0750 %{buildroot}%{_sharedstatedir}/woodpecker/
|
||||
|
||||
install -d -m 0755 %{buildroot}%{_unitdir}/
|
||||
install -D -m 0644 %{SOURCE11} %{buildroot}%{_unitdir}/woodpecker-server.service
|
||||
install -D -m 0644 %{SOURCE12} %{buildroot}%{_unitdir}/woodpecker-agent.service
|
||||
|
||||
# system user
|
||||
install -Dm644 %{SOURCE21} %{buildroot}%{_sysusersdir}/system-user-woodpecker.conf
|
||||
|
||||
%check
|
||||
bin/%{cli_executable_name} --version | grep %{version}
|
||||
bin/%{agent_executable_name} --version | grep %{version}
|
||||
bin/%{server_executable_name} --version | grep %{version}
|
||||
|
||||
%pre -n system-user-%{name} -f user.pre
|
||||
|
||||
%pre -n %{name}-server
|
||||
%service_add_pre woodpecker-server.service
|
||||
|
||||
%post -n %{name}-server
|
||||
%service_add_post woodpecker-server.service
|
||||
|
||||
%preun -n %{name}-server
|
||||
%service_del_preun woodpecker-server.service
|
||||
|
||||
%postun -n %{name}-server
|
||||
%service_del_postun woodpecker-server.service
|
||||
|
||||
%pre -n %{name}-agent
|
||||
%service_add_pre woodpecker-agent.service
|
||||
|
||||
%post -n %{name}-agent
|
||||
%service_add_post woodpecker-agent.service
|
||||
|
||||
%preun -n %{name}-agent
|
||||
%service_del_preun woodpecker-agent.service
|
||||
|
||||
%postun -n %{name}-agent
|
||||
%service_del_postun woodpecker-agent.service
|
||||
|
||||
%files -n %{cli_package_name}
|
||||
%doc README.md
|
||||
%license LICENSE
|
||||
%{_bindir}/%{cli_executable_name}
|
||||
|
||||
%files -n %{agent_package_name}
|
||||
%doc README.md
|
||||
%license LICENSE
|
||||
%{_bindir}/%{agent_executable_name}
|
||||
%{_unitdir}/woodpecker-agent.service
|
||||
%dir %attr(750,woodpecker,woodpecker) %{_sysconfdir}/woodpecker/
|
||||
%config(noreplace) %attr(640,woodpecker,woodpecker) %ghost %{_sysconfdir}/woodpecker/woodpecker-agent.env
|
||||
%dir %attr(750,woodpecker,woodpecker) %{_sharedstatedir}/woodpecker/
|
||||
|
||||
%files -n %{server_package_name}
|
||||
%doc README.md
|
||||
%license LICENSE
|
||||
%{_bindir}/%{server_executable_name}
|
||||
%{_unitdir}/woodpecker-server.service
|
||||
%dir %attr(750,woodpecker,woodpecker) %{_sysconfdir}/woodpecker/
|
||||
%config(noreplace) %attr(640,woodpecker,woodpecker) %ghost %{_sysconfdir}/woodpecker/woodpecker-server.env
|
||||
%dir %attr(750,woodpecker,woodpecker) %{_sharedstatedir}/woodpecker/
|
||||
|
||||
%files -n system-user-%{name}
|
||||
%{_sysusersdir}/system-user-woodpecker.conf
|
||||
|
||||
%changelog
|
Loading…
Reference in New Issue
Block a user