专属域名
文档搜索
轩辕助手
Run助手
邀请有礼
返回顶部
快速返回页面顶部
收起
收起工具栏
轩辕镜像 官方专业版
轩辕镜像 官方专业版轩辕镜像 官方专业版官方专业版
首页个人中心搜索镜像

交易
充值流量我的订单
工具
提交工单镜像收录一键安装
Npm 源Pip 源Homebrew 源
帮助
常见问题
其他
关于我们网站地图

官方QQ群: 1072982923

voxpupuli/vox-pupuli-tasks Docker 镜像 - 轩辕镜像

vox-pupuli-tasks
voxpupuli/vox-pupuli-tasks
1 收藏0 次下载
😎 镜像稳了,发布才敢点回车
镜像简介版本下载
😎 镜像稳了,发布才敢点回车

Vox Pupuli Tasks - The Webapp for community management

![Build Status]([] ![microbadger layercounter]([] ![display version]([] ![GitHub release]([] ![Docker Stars]([] ![Docker Pulls]([] ![Codacy Badge]([***]

Table of contents

  • Purpose
    • Reviewing open Pull Requests
    • Yak shaving Puppet modules
  • Usage
  • Existing Automatisation
    • Merge Conflicts
    • Sync GitHub labels
  • Local Setup
  • Production Setup
    • Cerebro
    • Elasticsearch
    • Kibana
    • Sentry
    • GitHub App Setup
      • Permissions
      • Events
  • Contribution and Development
    • Add new Operating system checks
  • License
  • Sponsor

Purpose

As a collaborator at Vox Pupuli we have basically two different kinds of main tasks:

  • Reviewing open Pull Requests
  • Yak shaving Puppet modules

We currently have a few tools for those jobs:

Reviewing open Pull Requests

  • [***] is a nice external webinterface to work with github issues and pull requests
  • [***] is our own Sinatra app to display all pull requests
  • GitHub has a nice search function for pull requests but also for issues
  • The community_management project provides some CLI tools to generate different reports about open pull requests

Collaborators review a lot of code in many pull requests. But there are even more pull requests that are open but don't need any attention. A collaborator spends a lot of time to figure out which pull request actually needs attention.

One of the goals of this project is to provide a proper UI that displays filtered pull requests. Some examples:

It's not required to review code in a pull request if a merge conflict exists. If the PR is properly labeled, we can exclude it from the UI. The service gets notifications from GitHub for each activity on a PR. If a conflict appears, a label will be added. It will also automatically be removed if the conflict disappears after a rebase.

Instead of dealing with all open PRs over and over, collaborators can spend their time to reviewing pull requests that actually need it.

Some more examples are documented as open issues, in particular issue 4

Yak shaving Puppet modules

  • The get_all_the_diffs script, which detects inconsistencies in modules

This is the second big tasks for collaborators. Update dependencies in metadata.json files, allow new Puppet versions, drop legacy Operating Systems. There are many many tasks that collaborators do from time to time and this project tries to make it as easy as possible or even automate stuff where it's suitable.

Usage

You can currently access a beta version at voxpupu.li. This is a MVP that we redeploy with enhancements every few days at the moment. The app uses GitHubs OAuth for authentication:

![login screenshot]([***]

The application is developed by Robert 'flipez' Müller and Tim 'bastelfreak' Meusel. The current OAuth app is registed to their personal account but will soon be migrated to the Vox Pupuli GitHub organisation. You do not need to grant the application access to any repository. This OAuth setup is only used to authenticate the user.

In the future it's possible to restrict the login or certain features to people that are members of specific GitHub organisations or teams. We didn't want to reimplement a whole usermanagement so we rely on GitHub OAuth.

After the login, you see the following page:

![startpage screenshot]([***]

Each yak shaving task is a row. It's prefixed with the number of modules that are in this category. For example:

![single yak shaving action]([***]

You can click on each PR. The app displays all the information that GitHub provides. It will also list open pull requests. It will be possible to filter this. The filtering will also work for all open pull requests in a namespace. The design and scope is currently discussed and implemented in Issue #4.

Besides being an OAuth application, this Ruby on Rails website is also a registered GitHub Application. This means that GitHub sends notifications for user interactions to the Rails app. The app gets information about every new pull request, new label, new code or comments in a pull request and much more. We currently store those notifications in a self hosted Sentry. The displayed data in the frontend comes from polling the GitHub API and from analysing the notifications. In the future we all add more automisation to the app, which will be based on the notifications. Use cases for automisation are discussed and developed at:

  • Issue #1 - handle merge conflicts
  • Issue #2 - handle CI failures

Other open issues might also be good candidates for live interactions based on notifications. Please comment the open issues or raise new ones if you have crazy ideas.

Existing Automatisation

We aim to automate different use cases. Each usecase gets a dedicated milestone at GitHub to track the issues and pull requests.

Merge Conflicts - Milestone 1

At the moment, the application handles appearing and disappearing merge conflicts. Since PR #35 went live, we are able to detect if a Pull request went from a mergeable into a non-mergeable state. In this case we check if the label merge-conflicts is present in the repository. Afterwards we add it to the pull request.

![bot adds label]([***]

Also our bot Account adds a comment to the pull request. GitHub does not send notifications to the author whe a label was added, but for comments.

![bot adds comment]([***]

Sync GitHub Labels

People heavily depend on labels for their daily collaborator work. To ensure that they can use the correct labels, this App tracks an authoritative list of:

  • Label names
  • Their colour
  • Their description

The application ensures that all those labels are configured in all repositories.

This is all managed in one yaml file.

Update the file to automatically update all labels in a repository. This app does not remove labels that aren't in the yaml. It just ensures that all labels from the yaml file are present in the repositories.

Future work: The yaml already supports aliases for labels. The idea is that the app searches for labels in repositories with an alias. Matching labels could be renamed to the correct one.

Local Setup

To start the app locally, do the following (assumes that you've ruby, bundler and yarn available, also redis needs to be started):

sh
git clone ***:voxpupuli/vox-pupuli-tasks.git
cd vox-pupuli-tasks
bundle install --jobs $(nproc) --with development test --path vendor/bundle
bundle exec yarn install --frozen-lockfile --non-interactive
export SECRET_KEY_BASE=$(bundle exec rails secret)
bundle exec rails assets:precompile
# somehow generate config/master.key
RAILS_ENV=development bundle exec rails db:migrate
bundle exec foreman start

Secrets are stored as an encrypted yaml file. You can edit them by doing:

sh
bundle exec rails credentials:edit

This only works properly if one od the developers sent you the /config/master.key file.

Foreman will take care of the actual rails application, but it will also start sidekiq.

Production Setup

The production setup is a homage to microservices:

!poo logo

The setup is deployed as docker microservices. This repository contains a docker-compose.yaml for this.

We deploy multiple containers:

  • watchtower
  • cerebro
  • Elasticsearch
  • Redis
  • Sidekiq
  • Kibana
  • Sentry
  • The actual application
Cerebro

This is a webinterface for Elasticsearch. The service is available at localhost:9001. We highly suggest that you deploy an nginx in front of it with proper TLS certiicates. To access the elasticsearch container, you can use this URL:

http://localhost:9001/#/overview?host=http:%2F%2Felasticsearch:9200

The docker-compose.yaml sets elasticsearch as FQDN for the container.

Elasticsearch

We use the semantic logger to log all rails data to elasticsearch. Logs are important, and writing them to a file in a container is a bad idea.

Kibana

Kibana is our frontend for elasticsearch. It's available at localhost on port 5601.

Sentry

ToDo: Describe how we forward errors to Sentry

GitHub App Setup

As mentioned in the usage section, this Ruby on Rails application can be registered as a GitHub App. To do this, a few things need to be configured.

User authorization callback URL

The full URL to redirect to after a user authorizes an installation. For our instance this is [***]

Request user authorization (OAuth) during installation

Requests that the installing user grants access to their identity during installation of the application.

This allows us to validate if a user is in a specific GitHub organisation or Team.

Webhook URL

Events will POST to this URL. For our instance this is [***]

Permissions

Sadly, we require Administration access with Read and write. It will allow us to add labels to a project.

![issue perms]([***]

We need Read and write access to issues because we add/remove labels to pull requests and also comment on them. More information can be found at the GitHub developer docs. (For GitHub, a pull request is a specific issue. That's why pull request permissions ar handled on the issue endpoints).

![issue perms]([***]

The same applies for the Pull requests. More information can be found at the GitHub developer docs

![pr perms]([***]

Events

We also need to tell GitHub which events we would like to get:

![events]([***]

API docs for:

  • Issue comment
  • Label
  • Repository
  • Pull Request
  • Issues

Contribution and Development

We have a helpful rake task available to run a ruby linter. It will inform you about styleguide violations. Please execute it before you provide a pull request:

sh
bundle exec rake rubocop

This will execute the linter. You can also advice him to automatically fix things (works often, but not on all issues):

sh
bundle exec rake rubocop::auto_correct

We constantly improve our codebase. We adjusted a few rubocop cops to relax the default configuration. Also sometimes we need to merge important changes that violate the current rubocop config. For such situations we need to run

sh
bundle exec rubocop --auto-gen-config
Add new Operating system checks

Among all the stuff we validate is also a check for supported operating systems in the metadata.json file in a Puppet module. Sometimes a new version is released.

We need to update the checks. Currently, we need to adjust two places, the version array and the messages that are displayed in the UI:

The array:

diff
diff --git a/config/initializers/voxpupuli.rb b/config/initializers/voxpupuli.rb
index 14b0459..cc4f26e ***
--- a/config/initializers/voxpupuli.rb
+++ b/config/initializers/voxpupuli.rb
@@ -16,6 +16,6 @@ PUPPET_SUPPORT_RANGE = '>= 5.5.8 < 7.0.0'
 # [***]
 UBUNTU_SUPPORT_RANGE = ['16.04', '18.04'].freeze
 DEBIAN_SUPPORT_RANGE = [8, 9, 10].freeze
-CENTOS_SUPPORT_RANGE = [6, 7].freeze
+CENTOS_SUPPORT_RANGE = [6, 7, 8].freeze
 FREEBSD_SUPPORT_RANGE = [11, 12].freeze
 FEDORA_SUPPORT_RANGE = [29, 30, 31].freeze

and the messages:

diff
diff --git a/config/locales/en.yml b/config/locales/en.yml
index bbd6c7a..098d987 ***
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -56,13 +56,13 @@ en:
       description: We support Debian 8, 9 and 10. Modules in here don't support Debian 10.
     supports_eol_centos:
       title: Supports a end of life CentOS
-      description: We support CentOS 6 and 7. Modules in here support a end of life version (< CentOS 6)
+      description: We support CentOS 6, 7 and 8. Modules in here support a end of life version (< CentOS 6)
     doesnt_support_latest_centos:
       title: Does not support latest CentOS
-      description: We support CentOS 6 and 7. Modules in here don't support CentOS 7.
+      description: We support CentOS 6, 7 and 8. Modules in here don't support CentOS 8.
     missing_in_plumbing:
       title: Missing in plumbing
       description: Is missing in plumbing
     need_another_sync:
       title: Need another sync

License

This project is licensed under GNU Affero General Public License version 3

Sponsor

This project is sponsored by Hetzner Cloud. They provide us with free cloud instances to host the application.

![hcloud]([***]

Are you interested as well in sponsoring parts of the Vox Pupuli organisation? Get in touch with the Project Management Committee.

查看更多 vox-pupuli-tasks 相关镜像 →
voxpupuli/container-puppetserver logo
voxpupuli/container-puppetserver
⚠️ 已弃用 ⚠️ 此Puppet Server容器镜像已废弃,即将归档,请改用OpenVox Server容器。原镜像用于运行Puppet Server,支持自定义配置、环境缓存管理、持久化存储及初始化脚本。
110K+ pulls
上次更新:未知
voxpupuli/puppetserver logo
voxpupuli/puppetserver
⚠️ 已弃用 ⚠️ 此镜像用于运行Puppet Server容器,现建议使用OpenVox Server容器替代。原用于提供Puppet Server的Docker化部署,支持自定义配置、持久化存储及初始化脚本。
10K+ pulls
上次更新:未知
voxpupuli/puppetdb logo
voxpupuli/puppetdb
PuppetDB的容器镜像(已弃用,建议使用OpenVox DB容器替代)
10K+ pulls
上次更新:未知
airbyte/source-google-tasks logo
airbyte/source-google-tasks
暂无描述
4.7K pulls
上次更新:未知
uselagoon/webhooks2tasks logo
uselagoon/webhooks2tasks
暂无描述
10K+ pulls
上次更新:未知

轩辕镜像配置手册

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式

登录仓库拉取

通过 Docker 登录认证访问私有仓库

Linux

在 Linux 系统配置镜像服务

Windows/Mac

在 Docker Desktop 配置镜像

Docker Compose

Docker Compose 项目配置

K8s Containerd

Kubernetes 集群配置 Containerd

K3s

K3s 轻量级 Kubernetes 镜像加速

Dev Containers

VS Code Dev Containers 配置

MacOS OrbStack

MacOS OrbStack 容器配置

宝塔面板

在宝塔面板一键配置镜像

群晖

Synology 群晖 NAS 配置

飞牛

飞牛 fnOS 系统配置镜像

极空间

极空间 NAS 系统配置服务

爱快路由

爱快 iKuai 路由系统配置

绿联

绿联 NAS 系统配置镜像

威联通

QNAP 威联通 NAS 配置

Podman

Podman 容器引擎配置

Singularity/Apptainer

HPC 科学计算容器配置

其他仓库配置

ghcr、Quay、nvcr 等镜像仓库

专属域名拉取

无需登录使用专属域名

需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单

镜像拉取常见问题

轩辕镜像免费版与专业版有什么区别?

免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。

轩辕镜像支持哪些镜像仓库?

专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。

流量耗尽错误提示

当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。

410 错误问题

通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。

manifest unknown 错误

先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。

镜像拉取成功后,如何去掉轩辕镜像域名前缀?

使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。

查看全部问题→

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

用户头像

oldzhang

运维工程师

Linux服务器

5

"Docker访问体验非常流畅,大镜像也能快速完成下载。"

轩辕镜像
镜像详情
...
voxpupuli/vox-pupuli-tasks
官方博客Docker 镜像使用技巧与技术博客
热门镜像查看热门 Docker 镜像推荐
一键安装一键安装 Docker 并配置镜像源
提交工单
咨询镜像拉取问题请 提交工单,官方技术交流群:1072982923
轩辕镜像面向开发者与科研用户,提供开源镜像的搜索和访问支持。所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
咨询镜像拉取问题请提交工单,官方技术交流群:
轩辕镜像面向开发者与科研用户,提供开源镜像的搜索和访问支持。所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
官方邮箱:点击复制邮箱
©2024-2026 源码跳动
官方邮箱:点击复制邮箱Copyright © 2024-2026 杭州源码跳动科技有限公司. All rights reserved.