开源项目管理工具Taiga

在这里插入图片描述

什么是 Taiga ?

Taiga 是一个免费开源,而且功能非常强大的项目管理平台,用于初创企业和敏捷开发团队。Taiga 专注于简洁性,并且界面很干净简单。Taiga 也非常个性化,并集合了很多其它功能和外部工具,还有大量社区创建的工具。

软件特点:

  1. 开源免费Taiga是完全开源的,允许用户自由使用、修改和分发。
  2. 友好的界面Taiga 提供了一个清晰、直观的用户界面,易于理解和使用。
  3. 敏捷管理:支持 ScrumKanban 两种主要的敏捷开发方法,用户可以根据团队的需求选择合适的方法。
  4. 任务管理:任务卡片详细记录每个工作项的状态、优先级、标签等信息,便于团队成员协作。
  5. 维基与文档:内置维基功能,方便团队共享知识和编写项目文档。
  6. 版本控制集成:无缝对接 Git,实现代码提交和版本控制的实时同步。
  7. 权限和角色管理:允许用户根据角色设置不同的权限,以控制对项目和任务的访问。
  8. 通知系统:通过电子邮件或应用内通知让用户了解重要的更新和变更。
  9. 自动化工作流:通过自定义规则和 Webhooks 实现自动化任务分配。
  10. 多语言支持Taiga 提供多种语言,满足全球化团队的需求。
  11. API 可扩展性:开放 API 允许与其他系统集成。
  12. 分析和报告:提供完整的仪表板和进度报告功能。

安装

在群晖上以 Docker 方式安装。

Taiga 用到 9 个镜像,采用 docker-compose 安装方式,需要准备好三个文件

env.txt

env.txt 是环境变量文件,在官方的 .env 文件基础上修改而成,源文件地址: https://github.com/taigaio/taiga-docker/blob/main/.env

因为添加了中文注释,保存时记得采用 UTF-8 格式

# Taiga的URL - 定义Taiga应该在哪里提供服务的变量
## Taiga 服务使用 "http" 或 "https"(安全)连接
## 因为在局域网使用,所以采用 http 协议
TAIGA_SCHEME=http
## Taiga 服务的基本URL
## 其中 192.168.0.197 是群晖服务器的 IP
TAIGA_DOMAIN=192.168.0.197:9118
## 子路径,将附加到 TAIGA_DOMAIN(使用 "" 或 "/subpath")
TAIGA_SUBPATH="" 
## 事件连接协议(使用 "ws" 或 "wss")
WEBSOCKETS_SCHEME=ws# Taiga的密钥 - 提供加密签名的变量
## 请将其更改为不可预测的随机值
TAIGA_SECRET_KEY=M3JJcauWbz9Zzd6gt8d9mxrQPHpU69PWNsJJd6aFVXa3a8VrtrhHbLC7HE2ayS7a# Taiga的数据库设置 - 创建Taiga数据库并连接到它的变量
## 数据库主机,使用的 docker-compose.yml 中的 service name 
POSTGRES_HOST=taiga-db
## 数据库库名
POSTGRES_DB=taiga
## 连接到PostgreSQL的用户
POSTGRES_USER=taiga
## 数据库用户的密码
POSTGRES_PASSWORD=taiga# Taiga 的 SMTP 设置 - 发送Taiga邮件给用户的变量
## 使用SMTP服务器或在控制台中显示电子邮件("django.core.mail.backends.smtp.EmailBackend"或"django.core.mail.backends.console.EmailBackend")
EMAIL_BACKEND=django.core.mail.backends.console.EmailBackend
## SMTP 服务器地址
EMAIL_HOST=smtp.88.com
## 默认 SMTP 端口
EMAIL_PORT=465
## 连接 SMTP 服务器的用户
EMAIL_HOST_USER=wbsu2003@88.com
## SMTP 用户的密码
EMAIL_HOST_PASSWORD=<第三方邮件客户端密码>
## 用于自动邮件的默认电子邮件地址
DEFAULT_FROM_EMAIL=wbsu2003@88.com
## 使用 SMTP 服务器的 TLS(安全)连接
EMAIL_USE_TLS=False
## 使用 SMTP 服务器的 SSL(安全)连接
EMAIL_USE_SSL=True# Taiga的 RabbitMQ 设置 - 用于实时和异步事件的变量
## 连接到RabbitMQ的用户
RABBITMQ_USER=taiga
## RabbitMQ用户的密码
RABBITMQ_PASS=taiga
## RabbitMQ容器名称
RABBITMQ_VHOST=taiga
# 由任何连接的 RabbitMQ 实例共享的唯一值
RABBITMQ_ERLANG_COOKIE=secret-erlang-cookie# Taiga的附件 - 定义附件将被访问多长时间
## token 的有效期(以秒为单位)
ATTACHMENTS_MAX_AGE=360# Taiga's Telemetry -启用或禁用匿名 telemetry
ENABLE_TELEMETRY=True

taiga.conf

taiga.confNginx 的配置文件,由多个块组成,定义了不同的请求处理规则,用于代理前端资源、API 请求、管理界面访问、静态文件服务和媒体文件服务,以及 WebSocket 事件通信。

该文件来自官方,未做任何修改,文件地址:https://github.com/taigaio/taiga-docker/blob/main/taiga-gateway/taiga.conf

server {listen 80 default_server;client_max_body_size 100M;charset utf-8;# Frontendlocation / {proxy_pass http://taiga-front/;proxy_pass_header Server;proxy_set_header Host $http_host;proxy_redirect off;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Scheme $scheme;}# APIlocation /api/ {proxy_pass http://taiga-back:8000/api/;proxy_pass_header Server;proxy_set_header Host $http_host;proxy_redirect off;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Scheme $scheme;}# Adminlocation /admin/ {proxy_pass http://taiga-back:8000/admin/;proxy_pass_header Server;proxy_set_header Host $http_host;proxy_redirect off;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Scheme $scheme;}# Staticlocation /static/ {alias /taiga/static/;}# Medialocation /_protected/ {internal;alias /taiga/media/;add_header Content-disposition "attachment";}# Unprotected sectionlocation /media/exports/ {alias /taiga/media/exports/;add_header Content-disposition "attachment";}location /media/ {proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Scheme $scheme;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://taiga-protected:8003/;proxy_redirect off;}# Eventslocation /events {proxy_pass http://taiga-events:8888/events;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";proxy_connect_timeout 7d;proxy_send_timeout 7d;proxy_read_timeout 7d;}
}

docker-compose.yml

在官方的基础上,根据需要做了调整,源文件地址:https://github.com/taigaio/taiga-docker/blob/main/docker-compose.yml

version: "3.5"services:taiga-db:image: postgres:13container_name: taiga-dbenvironment:POSTGRES_DB: "${POSTGRES_DB}"POSTGRES_USER: "${POSTGRES_USER}"POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"healthcheck:test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"]interval: 2stimeout: 15sretries: 5start_period: 3svolumes:- ./db:/var/lib/postgresql/datataiga-back:image: taigaio/taiga-back:latestcontainer_name: taiga-backvolumes:- ./static:/taiga/static- ./media:/taiga/mediaenv_file: env.txtdepends_on:taiga-db:condition: service_healthytaiga-events-rabbitmq:condition: service_startedtaiga-async-rabbitmq:condition: service_startedtaiga-async:image: taigaio/taiga-back:latestcontainer_name: taiga-asyncvolumes:- ./static:/taiga/static- ./media:/taiga/mediaentrypoint: ["/taiga-back/docker/async_entrypoint.sh"]env_file: env.txtdepends_on:taiga-db:condition: service_healthytaiga-events-rabbitmq:condition: service_startedtaiga-async-rabbitmq:condition: service_startedtaiga-async-rabbitmq:image: rabbitmq:3.8-management-alpinecontainer_name: taiga-async-rabbitmqenvironment:RABBITMQ_ERLANG_COOKIE: "${RABBITMQ_ERLANG_COOKIE}"RABBITMQ_DEFAULT_USER: "${RABBITMQ_USER}"RABBITMQ_DEFAULT_PASS: "${RABBITMQ_PASS}"RABBITMQ_DEFAULT_VHOST: "${RABBITMQ_VHOST}"hostname: "taiga-async-rabbitmq"volumes:- ./async:/var/lib/rabbitmqtaiga-front:image: taigaio/taiga-front:latestcontainer_name: taiga-frontenvironment:TAIGA_URL: "${TAIGA_SCHEME}://${TAIGA_DOMAIN}"TAIGA_WEBSOCKETS_URL: "${WEBSOCKETS_SCHEME}://${TAIGA_DOMAIN}"TAIGA_SUBPATH: "${TAIGA_SUBPATH}"# ...your customizations go here# volumes:#   - ./conf.json:/usr/share/nginx/html/conf.jsontaiga-events:image: taigaio/taiga-events:latestcontainer_name: taiga-eventsenvironment:RABBITMQ_USER: "${RABBITMQ_USER}"RABBITMQ_PASS: "${RABBITMQ_PASS}"TAIGA_SECRET_KEY: "${TAIGA_SECRET_KEY}"depends_on:taiga-events-rabbitmq:condition: service_startedtaiga-events-rabbitmq:image: rabbitmq:3.8-management-alpinecontainer_name: taiga-events-rabbitmqenvironment:RABBITMQ_ERLANG_COOKIE: "${RABBITMQ_ERLANG_COOKIE}"RABBITMQ_DEFAULT_USER: "${RABBITMQ_USER}"RABBITMQ_DEFAULT_PASS: "${RABBITMQ_PASS}"RABBITMQ_DEFAULT_VHOST: "${RABBITMQ_VHOST}"hostname: "taiga-events-rabbitmq"volumes:- ./events:/var/lib/rabbitmqtaiga-protected:image: taigaio/taiga-protected:latestcontainer_name: taiga-protectedenvironment:MAX_AGE: "${ATTACHMENTS_MAX_AGE}"SECRET_KEY: "${TAIGA_SECRET_KEY}"taiga-gateway:image: nginx:1.19-alpinecontainer_name: taiga-gatewayports:- "9118:80"volumes:- ./taiga.conf:/etc/nginx/conf.d/default.conf- ./static:/taiga/static- ./media:/taiga/mediadepends_on:- taiga-front- taiga-back- taiga-events

然后执行下面的命令

# 新建文件夹 taiga 和 子目录
mkdir -p /volume1/docker/taiga/{async,db,events,media,static}# 进入 taiga 目录
cd /volume1/docker/taiga# 将 env.txt 和 docker-compose.yml 放入当前目录# 一键启动
docker-compose --env-file env.txt up -d

运行

在开始访问之前,还需要创建一个管理员,需要进入到容器内操作

# 进入 taiga-back 容器
docker exec -it taiga-back /bin/bash# 创建管理员用户
python manage.py createsuperuser

依次输入

  • Username:用户名。例如:laosu
  • Email address:邮件地址。例如:wbsu2003@gmail.com
  • Password:密码。

接下来就可以访问了,在浏览器中输入 http://群晖IP:9118

点右上角的 Login,进入到登录界面

输入我们前面创建的管理员账号,下面是登录成功后的主界面

点绿色按钮 NEW PROJECT 新建项目。模版类型包括:敏捷和看板两种

  • SCRUM

Scrum 是一个用于开发、交付和维护复杂产品的敏捷框架。尽管它最初侧重于软件开发,但它已用于研究、销售、营销和先进技术等其他领域。它专为十人或更少成员的团队而设计,这些团队将工作分解为可在时间限制内的迭代(称为冲刺)内完成的目标,迭代时间不超过一个月,最常见的是两周。

详细介绍和操作可以参考:https://community.taiga.io/t/quick-intro-to-scrum-module/124

  • KANBAN

Kanban 旨在通过平衡需求和可用容量以及改进系统级瓶颈的处理来管理工作。

详细介绍和操作可以参考::https://community.taiga.io/t/the-5-min-kanban-module-overview/122

中文

右上角用户 --> Edit Profile --> Language

下拉找到 中文(简体),保存之后就是中文界面了

参考文档

Taiga.io
地址:https://github.com/taigaio

taigaio/taiga-docker: Deployment utilities for Taiga
地址:https://github.com/taigaio/taiga-docker

Taiga: Your opensource agile project management software
地址:https://taiga.io/

Taiga Documentation
地址:https://docs.taiga.io/

Taiga
地址:https://tree.taiga.io/project/taiga/timeline

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/416416.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文讲清楚你既熟悉又陌生的:虚拟现实技术(VR)

文章目录 一、基本概念二、核心组件1. 硬件设备2. 软件系统 三、技术原理四、虚拟现实系统的分类1. 桌面式虚拟现实2. 沉浸式虚拟现实3. 增强式虚拟现实4. 分布式虚拟现实 五、应用领域1. 游戏和娱乐2. 教育3. 心理治疗4. 社交和会议5. 医疗6. 房产地产7. 城市规划8. 航天军工9…

2024.9.4

#include <iostream> #include <cstring> using namespace std;template<typename T> class Stack { private:int len;int count 0;T *stack; public:Stack():len(10) //无参构造{stack new T[len];stack[len] {0};}Stack(int len):len(len) …

MACOS安装配置前端开发环境

官网下载安装Mac版本的谷歌浏览器以及VS code代码编辑器&#xff0c;还有在App Store中直接安装Xcode&#xff08;里面自带git&#xff09;&#xff1b; node.js版本管理器nvm的下载安装如下&#xff1a; 参考B站&#xff1a;https://www.bilibili.com/video/BV1M54y1N7fx/?sp…

使用 Vue3 Element Plus 实现el-table中的特定单元格编辑,下拉选择等

效果预览 完整代码(后面有解析) <template><div style="display: flex;align-items: center;justify-co

海绵城市雨水监测系统

海绵城市雨水监测系统主要有&#xff1a;数据采集、无线数据传输、后台云服务、终端平台显示等部分组成。系统通过前端数据采集水质&#xff08;ss\cod\浊度、PH等&#xff09;、雨水雨量、流量、水位、土壤湿度、气象等数据。通过无线数据传输通讯&#xff08;4G、5G、以太网、…

【Unity】简单机甲运动系统——坦克式操控方式

最近两天想做一个人形机甲的游戏&#xff0c;由于本人又是一个拟真军事爱好者&#xff0c;不太喜欢机动特别高的&#xff0c;所以打算参考坦克类游戏来制作一个脚&#xff01;踏&#xff01;实&#xff01;地&#xff01;的机甲游戏 这个运动系统基本实现了逻辑和动画的分离&a…

低代码用户中心的构建与应用

引言 在现代软件开发中&#xff0c;低代码平台因其高效、灵活、用户友好的特性而逐渐受到青睐。特别是在用户中心的构建方面&#xff0c;低代码平台能够显著提升开发效率&#xff0c;降低开发成本。本文将探讨如何利用低代码平台构建一个高效的用户中心&#xff0c;并分享一些…

002:显示DICOM图像(替换掉 vtkImageViewer2 )

VTK 医学图像处理---DICOM图像显示 对第一个DICOM显示例子的展开&#xff08;替换掉vtkImageViewer2类&#xff09; 两个例子实现的效果对比&#xff0c;其中右侧是对第一个例子展开后的显示效果&#xff0c;展示了一个完整的VTK渲染管线的过程。 目录 VTK 医学图像处理---DIC…

神策SDK不支持Windows客户端全埋点,怎么实现用户统计分析?

本文将介绍&#xff0c;ClkLog针对神策不支持全埋点的客户端实现用户访问基础统计分析 1。 客户遇到的问题 ClkLog的用户访问基础统计分析功能是基于神策SDK的全埋点来实现的。 我们遇到有些客户是使用C、C#等语言来开发的客户端&#xff0c;然而神策此类SDK&#xff08;如C, C…

[B站大学]Zotero7教程

参考资料: https://www.bilibili.com/video/BV1PSvUetEQX 2. 账号注册与同步 本节内容参考zotero中文社区文档&#xff1a;https://zotero-chinese.com/user-guide/sync 2.1 数据同步 首先注册一个Zotero官方账户。登录账号密码。 2.2 文件同步 按照文档&#xff0c;推荐…

快消品渠道开发方案,让你拥有源源不断的批发客户!

对于快消品行业来说&#xff0c;优质批发渠道客户&#xff0c;决定了你产品的销量。这篇文章&#xff0c;和大家分享下&#xff0c;如何开发渠道端客户&#xff01; 1、分析目标市场 首先&#xff0c;分析快消品行业的趋势&#xff0c;以及你们的产品&#xff0c;目前市场占有…

Java-线程的生命周期7大状态

在 Java 中&#xff0c;线程的生命周期可以分为多个状态&#xff0c;这些状态描述了线程从创建到终止的整个过程。Java 线程的生命周期主要包括以下七大状态&#xff1a; 1.新建状态&#xff08;New&#xff09; 当一个线程对象被创建但尚未调用 start() 方法时&#xff0c;线…

Apache SeaTunnel Zeta 引擎源码解析(一)Server端的初始化

引入 本系列文章是基于 Apache SeaTunnel 2.3.6版本&#xff0c;围绕Zeta引擎给大家介绍其任务是如何从提交到运行的全流程&#xff0c;希望通过这篇文档&#xff0c;对刚刚上手SeaTunnel的朋友提供一些帮助。 我们整体的文章将会分成三篇&#xff0c;从以下方向给大家介绍&am…

鸿蒙(API 12 Beta6版)图形【使用Drawing实现图形绘制与显示 (C/C++)】方舟2D图形服务

场景介绍 Native Drawing模块提供了一系列的接口用于基本图形和字体的绘制。 Drawing绘制的内容无法直接在屏幕上显示&#xff0c;需要借用XComponent以及Native Window的能力支持&#xff0c;将绘制的内容通过Native Window送显。 接口说明 Drawing常用接口如下表所示。 …

二分查找:手拿把掐!------Java代码实现

“没有天赋,那就不断重复.” 文章目录 前言文章有误敬请斧正 不胜感恩&#xff01;模板一:(最基本的)**左闭右闭:** [left,right] 模板二:**左闭右开区间模板:**区间:左闭右开[left,right): 模板三:开区间模板:(left,right) 循环不变量:二分查找易错点:做题经验:疑问及解答&…

内衣内裤衣机什么牌子好?五款口碑爆棚王炸机型推荐

如今科技是越来越发展了&#xff0c;迷你洗衣机的功能也是越来越强大了&#xff0c;这样小户型的家庭甚是喜爱&#xff0c;不仅解决了清洗衣物的问题&#xff0c;还能让小型洗衣机在家中起到一定的装饰效果。在清洁衣物的污渍的同时&#xff0c;还能有效除去衣物上的各种细菌。…

upload-labs闯关攻略

pass-1 提前准备好的一个PHP木马&#xff0c;然后将后缀名改为jpg上传 然后在上传的过程中利用抓包&#xff0c;将抓取到的包里面的后缀jpg改为php如图所示&#xff0c;然后放行 接着我们去访问上传的图片信息&#xff0c;如下图所示就为成功 pass-2 提前准备好的一个PHP木马…

http连接处理(最新版)

分析http类及请求接收 基础 epoll epoll_create函数 #include <sys/epoll.h> int epoll_create(int size) 创建一个指示epoll内核事件表的文件描述符&#xff0c;该描述符将用作其他epoll系统调用的第一个参数&#xff0c;size不起作用。 epoll_ctl函数 #include …

紫光同创——PLL IP 的使用(Logos2)

本文档主要针对 Logos2 系列的 PLL 配置&#xff0c;至于 Logos 系列的 PLL&#xff0c;可以参考《PLLIP 的使用(Logos)》的文档。 一、PLL IP 介绍 1、PLL 基本配置模式 Basic Configurations PLL IP 是紫光同创基于 PLL 及时钟网络资源设计的 IP&#xff0c;通过不同的参数配…

牛客周赛 Round 58(ABCDF)

目录 A.会赢吗&#xff1f; B.能做到的吧 C.会赢的&#xff01; D.好好好数 F.随机化游戏时间 A.会赢吗&#xff1f; 思路&#xff1a; 签到题&#xff0c;比大小 void solve() {double a,b;cin>>a>>b;if(a>b) cout<<"NO";else cout<&…