394 lines
13 KiB
Markdown
394 lines
13 KiB
Markdown
# Docker 方式安装 Redmine
|
||
|
||
容器名称为 redmine。
|
||
|
||
```bash
|
||
# 工作目录
|
||
cd /home/web/redmine
|
||
# Run Redmine with SQLite3
|
||
docker run -d -p 9001:3000 --name redmine redmine
|
||
# Run Redmine with a Database Container
|
||
docker run -d --name redminedb -v "$PWD/database":/var/lib/mysql -e MYSQL_USER=root -e MYSQL_PASSWORD=<password> -e MYSQL_DATABASE=redmine -e MYSQL_ROOT_PASSWORD=<password> mariadb:latest
|
||
# docker run -d --name redmine --link redminedb:mysql -p 9001:3000 -e REDMINE_DB_MYSQL=redminedb -e REDMINE_DB_USERNAME=root -e REDMINE_DB_PASSWORD=<password> -v /home/web/redmine/config/configuration.yml:/usr/src/redmine/config/configuration.yml -v /home/web/redmine/log:/usr/src/redmine/log -v /home/web/redmine/data:/home/redmine/data -v /home/web/redmine/plugins:/usr/src/redmine/redmine/redmine/plugins redmine:latest
|
||
|
||
mkdir home
|
||
mkdir -p usr/config
|
||
touch usr/config/configuration.yml
|
||
docker run -d --name redmine --link redminedb:mysql -p 9001:3000 -e REDMINE_DB_MYSQL=redminedb -e REDMINE_DB_USERNAME=root -e REDMINE_DB_PASSWORD=<password> \
|
||
-v /home/web/redmine/usr/config/configuration.yml:/usr/src/redmine/config/configuration.yml \
|
||
-v /home/web/redmine/usr/log:/usr/src/redmine/log \
|
||
-v /home/web/redmine/usr/plugins:/usr/src/redmine/plugins \
|
||
-v /home/web/redmine/usr/redmine/plugins:/usr/src/redmine/redmine/redmine/plugins \
|
||
-v /home/web/redmine/home:/home/redmine redmine:latest
|
||
```
|
||
|
||
configuration.yml 初始配置如下:
|
||
|
||
```yml
|
||
# = Redmine configuration file
|
||
#
|
||
# Each environment has its own configuration options. If you are only
|
||
# running in production, only the production block needs to be configured.
|
||
# Environment specific configuration options override the default ones.
|
||
#
|
||
# Note that this file needs to be a valid YAML file.
|
||
# DO NOT USE TABS! Use 2 spaces instead of tabs for indentation.
|
||
|
||
# default configuration options for all environments
|
||
default:
|
||
# Outgoing emails configuration
|
||
# See the examples below and the Rails guide for more configuration options:
|
||
# http://guides.rubyonrails.org/action_mailer_basics.html#action-mailer-configuration
|
||
email_delivery:
|
||
|
||
# ==== Simple SMTP server at localhost
|
||
#
|
||
# email_delivery:
|
||
# delivery_method: :smtp
|
||
# smtp_settings:
|
||
# address: "localhost"
|
||
# port: 25
|
||
#
|
||
# ==== SMTP server at example.com using LOGIN authentication and checking HELO for foo.com
|
||
#
|
||
# email_delivery:
|
||
# delivery_method: :smtp
|
||
# smtp_settings:
|
||
# address: "example.com"
|
||
# port: 25
|
||
# authentication: :login
|
||
# domain: 'foo.com'
|
||
# user_name: 'myaccount'
|
||
# password: 'password'
|
||
#
|
||
# ==== SMTP server at example.com using PLAIN authentication
|
||
#
|
||
# email_delivery:
|
||
# delivery_method: :smtp
|
||
# smtp_settings:
|
||
# address: "example.com"
|
||
# port: 25
|
||
# authentication: :plain
|
||
# domain: 'example.com'
|
||
# user_name: 'myaccount'
|
||
# password: 'password'
|
||
#
|
||
# ==== SMTP server at using TLS (GMail)
|
||
# This might require some additional configuration. See the guides at:
|
||
# http://www.redmine.org/projects/redmine/wiki/EmailConfiguration
|
||
#
|
||
# email_delivery:
|
||
# delivery_method: :smtp
|
||
# smtp_settings:
|
||
# enable_starttls_auto: true
|
||
# address: "smtp.gmail.com"
|
||
# port: 587
|
||
# domain: "smtp.gmail.com" # 'your.domain.com' for GoogleApps
|
||
# authentication: :plain
|
||
# user_name: "your_email@gmail.com"
|
||
# password: "your_password"
|
||
#
|
||
# ==== Sendmail command
|
||
#
|
||
# email_delivery:
|
||
# delivery_method: :sendmail
|
||
|
||
# Absolute path to the directory where attachments are stored.
|
||
# The default is the 'files' directory in your Redmine instance.
|
||
# Your Redmine instance needs to have write permission on this
|
||
# directory.
|
||
# Examples:
|
||
# attachments_storage_path: /var/redmine/files
|
||
# attachments_storage_path: D:/redmine/files
|
||
attachments_storage_path:
|
||
|
||
# Configuration of the autologin cookie.
|
||
# autologin_cookie_name: the name of the cookie (default: autologin)
|
||
# autologin_cookie_path: the cookie path (default: /)
|
||
# autologin_cookie_secure: true sets the cookie secure flag (default: false)
|
||
autologin_cookie_name:
|
||
autologin_cookie_path:
|
||
autologin_cookie_secure:
|
||
|
||
# Configuration of SCM executable command.
|
||
#
|
||
# Absolute path (e.g. /usr/local/bin/hg) or command name (e.g. hg.exe, bzr.exe)
|
||
# On Windows + CRuby, *.cmd, *.bat (e.g. hg.cmd, bzr.bat) does not work.
|
||
#
|
||
# On Windows + JRuby 1.6.2, path which contains spaces does not work.
|
||
# For example, "C:\Program Files\TortoiseHg\hg.exe".
|
||
# If you want to this feature, you need to install to the path which does not contains spaces.
|
||
# For example, "C:\TortoiseHg\hg.exe".
|
||
#
|
||
# Examples:
|
||
# scm_subversion_command: svn # (default: svn)
|
||
# scm_mercurial_command: C:\Program Files\TortoiseHg\hg.exe # (default: hg)
|
||
# scm_git_command: /usr/local/bin/git # (default: git)
|
||
# scm_cvs_command: cvs # (default: cvs)
|
||
# scm_bazaar_command: bzr.exe # (default: bzr)
|
||
#
|
||
scm_subversion_command:
|
||
scm_mercurial_command:
|
||
scm_git_command:
|
||
scm_cvs_command:
|
||
scm_bazaar_command:
|
||
|
||
# SCM paths validation.
|
||
#
|
||
# You can configure a regular expression for each SCM that will be used to
|
||
# validate the path of new repositories (eg. path entered by users with the
|
||
# "Manage repositories" permission and path returned by reposman.rb).
|
||
# The regexp will be wrapped with \A \z, so it must match the whole path.
|
||
# And the regexp is case sensitive.
|
||
#
|
||
# You can match the project identifier by using %project% in the regexp.
|
||
#
|
||
# You can also set a custom hint message for each SCM that will be displayed
|
||
# on the repository form instead of the default one.
|
||
#
|
||
# Examples:
|
||
# scm_subversion_path_regexp: file:///svnpath/[a-z0-9_]+
|
||
# scm_subversion_path_info: SVN URL (eg. file:///svnpath/foo)
|
||
#
|
||
# scm_git_path_regexp: /gitpath/%project%(\.[a-z0-9_])?/
|
||
#
|
||
scm_subversion_path_regexp:
|
||
scm_mercurial_path_regexp:
|
||
scm_git_path_regexp:
|
||
scm_cvs_path_regexp:
|
||
scm_bazaar_path_regexp:
|
||
scm_filesystem_path_regexp:
|
||
|
||
# Absolute path to the SCM commands errors (stderr) log file.
|
||
# The default is to log in the 'log' directory of your Redmine instance.
|
||
# Example:
|
||
# scm_stderr_log_file: /var/log/redmine_scm_stderr.log
|
||
scm_stderr_log_file:
|
||
|
||
# Key used to encrypt sensitive data in the database (SCM passwords,
|
||
# LDAP passwords, and TOTP (two-factor authentication) secret keys).
|
||
# If you don't want to enable data encryption, just leave it blank.
|
||
# WARNING: losing/changing this key will make encrypted data unreadable.
|
||
#
|
||
# If you want to encrypt existing data in your database:
|
||
# * set the cipher key here in your configuration file
|
||
# * encrypt data using 'rake db:encrypt RAILS_ENV=production'
|
||
#
|
||
# If you have encrypted data and want to change this key, you have to:
|
||
# * decrypt data using 'rake db:decrypt RAILS_ENV=production' first
|
||
# * change the cipher key here in your configuration file
|
||
# * encrypt data using 'rake db:encrypt RAILS_ENV=production'
|
||
database_cipher_key:
|
||
|
||
# Set this to false to disable plugins' assets mirroring on startup.
|
||
# You can use `rake redmine:plugins:assets` to manually mirror assets
|
||
# to public/plugin_assets when you install/upgrade a Redmine plugin.
|
||
#
|
||
#mirror_plugins_assets_on_startup: false
|
||
|
||
# Your secret key for verifying cookie session data integrity. If you
|
||
# change this key, all old sessions will become invalid! Make sure the
|
||
# secret is at least 30 characters and all random, no regular words or
|
||
# you'll be exposed to dictionary attacks.
|
||
#
|
||
# If you have a load-balancing Redmine cluster, you have to use the
|
||
# same secret token on each machine.
|
||
#secret_token: 'change it to a long random string'
|
||
|
||
# Requires users to re-enter their password for sensitive actions (editing
|
||
# of account data, project memberships, application settings, user, group,
|
||
# role, auth source management and project deletion). Disabled by default.
|
||
# Timeout is set in minutes.
|
||
#
|
||
#sudo_mode: true
|
||
#sudo_mode_timeout: 15
|
||
|
||
# Absolute path (e.g. /usr/bin/convert, c:/im/convert.exe) to
|
||
# the ImageMagick's `convert` binary. Used to generate attachment thumbnails.
|
||
#imagemagick_convert_command:
|
||
|
||
# Absolute path (e.g. /usr/bin/gs, c:/ghostscript/gswin64c.exe) to
|
||
# the `gs` binary. Used to generate attachment thumbnails of PDF files.
|
||
#gs_command:
|
||
|
||
# Configuration of MiniMagick font.
|
||
#
|
||
# Redmine uses MiniMagick in order to export a gantt chart to a PNG image.
|
||
# This setting is necessary to properly display CJK (Chinese, Japanese,
|
||
# and Korean) characters in the PNG image. Please make sure that the
|
||
# specified font is installed in the Redmine server.
|
||
#
|
||
# This setting is necessary only when CJK characters are used in gantt.
|
||
#
|
||
# Note that rmagick_font_path in prior to Redmine 4.1.0 has been renamed
|
||
# to minimagick_font_path.
|
||
#
|
||
# Examples for Japanese:
|
||
# Windows:
|
||
# minimagick_font_path: C:\windows\fonts\msgothic.ttc
|
||
# Linux:
|
||
# minimagick_font_path: /usr/share/fonts/ipa-mincho/ipam.ttf
|
||
#
|
||
minimagick_font_path:
|
||
|
||
# Maximum number of simultaneous AJAX uploads
|
||
#max_concurrent_ajax_uploads: 2
|
||
|
||
# Configure OpenIdAuthentication.store
|
||
#
|
||
# allowed values: :memory, :file, :memcache
|
||
#openid_authentication_store: :memory
|
||
|
||
# URL of the avatar server
|
||
#
|
||
# By default, Redmine uses Gravatar as the avatar server for displaying
|
||
# user icons. You can switch to another Gravatar-compatible server such
|
||
# as Libravatar and opensource servers listed on
|
||
# https://wiki.libravatar.org/running_your_own/
|
||
#
|
||
# URL of each avatar is: #{avatar_server_url}/avatar/#{hash}
|
||
#
|
||
#avatar_server_url: https://www.gravatar.com # default
|
||
#avatar_server_url: https://seccdn.libravatar.org
|
||
|
||
# Configure CommonMark hardbreaks behaviour
|
||
#
|
||
# allowed values: true, false
|
||
# true: treats regular line break (\n) as hardbreaks
|
||
# false: switches to default common mark where two or more spaces are required
|
||
# common_mark_enable_hardbreaks: true
|
||
|
||
# specific configuration options for production environment
|
||
# that overrides the default ones
|
||
production:
|
||
|
||
# specific configuration options for development environment
|
||
# that overrides the default ones
|
||
development:
|
||
```
|
||
|
||
之后使用默认用户名密码登陆:admin/admin
|
||
|
||
## 登录后配置
|
||
|
||
角色增加:
|
||
|
||
- Super
|
||
- Manager
|
||
- Developer
|
||
- Tester
|
||
- Product
|
||
- Quality
|
||
|
||
问题状态增加:
|
||
|
||
- 新建
|
||
- 待审核
|
||
- 已指派
|
||
- 不处理
|
||
- 进行中
|
||
- 已解决
|
||
- 测试中
|
||
- 已验证
|
||
|
||
跟踪标签增加:
|
||
|
||
- 里程碑
|
||
- 开发
|
||
- 需求用例
|
||
- 功能
|
||
- 缺陷
|
||
- 需求单
|
||
- 维护单
|
||
- 故障单
|
||
- 发布申请单
|
||
|
||
枚举中为问题优先级增加:
|
||
|
||
- 普通
|
||
- 优先
|
||
- 紧急
|
||
|
||
## config/configuration.yml 文件配置
|
||
|
||
### 附件设置
|
||
|
||
```yml
|
||
attachments_storage_path: /path/to/attachments
|
||
attachments_mas_size: 51200
|
||
```
|
||
|
||
### 电子邮件服务器配置
|
||
|
||
```yml
|
||
# For exmail.qq.com
|
||
email_delivery:
|
||
delivery_method: :smtp
|
||
smtp_settings:
|
||
address: "smtp.exmail.qq.com"
|
||
port: 465
|
||
domain: 'smtp.exmail.qq.com'
|
||
authentication: login
|
||
user_name: 'noreply@xxx.com'
|
||
password: '******'
|
||
ssl: true
|
||
enable_starttls_auto: true
|
||
|
||
# For smtp.163.com
|
||
email_delivery:
|
||
delivery_method: :smtp
|
||
smtp_settings:
|
||
address: "smtp.163.com"
|
||
port: 25
|
||
domain: 'smtp.163.com'
|
||
authentication: :login
|
||
user_name: 'noreply@xxx.com'
|
||
password: '******'
|
||
```
|
||
|
||
邮件测试:redmine 的 配置->邮件通知 页面,设定之后点击“发送测试邮件”即可确认。成功之后,登陆用户会收到从设置的邮箱服务器发来的一封 email,否则会在设置页面中提示相关错误。
|
||
|
||
## 容器配置
|
||
|
||
### 进入 Redmine 容器命令行
|
||
|
||
```bash
|
||
docker exec -it redmine bash
|
||
```
|
||
|
||
### 安装插件
|
||
|
||
下载插件到容器的 /usr/src/redmine/plugins 目录中。
|
||
|
||
执行以下命令:
|
||
|
||
```bash
|
||
bundle install
|
||
RAILS_ENV=production bundle exec rake redmine:plugins:migrate NAME=<plugin name>
|
||
```
|
||
|
||
### 插件列表
|
||
|
||
- [Custom Workflows](https://www.redmine.org/plugins/custom-workflows)
|
||
- [Redmine Issue Autoflow](https://redmineplugins.cn/projects/1/plugin_blocks/36?tab=general)
|
||
|
||
### Custom Workflows 插件
|
||
|
||
在 管理->Custom Workflows 中 Create a custom workflow。
|
||
|
||
输入名称,设置 Observable object,设置项目。
|
||
|
||
脚本参考示例如下:
|
||
|
||
```ruby
|
||
if self.status_id==4
|
||
self.assigned_to = User.find_by(login: 'lion')
|
||
elsif self.status_id==6
|
||
self.assigned_to = User.find_by(login: 'rick')
|
||
elsif self.status_id==8
|
||
self.assigned_to = self.author
|
||
end
|
||
```
|
||
|
||
脚本支持直接调用 Redmine App 模块接口,具体 API 参考:<https://github.com/redmine/redmine/tree/master/app/models> 中的文件。
|