# 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= -e MYSQL_DATABASE=redmine -e MYSQL_ROOT_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= -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= \ -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 ## 登录后配置 角色增加: - 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= ``` ### 插件列表 - [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 参考: 中的文件。