bngsudheer / ansible-role-redmine Goto Github PK
View Code? Open in Web Editor NEWAnsible Role To Install Redmine
License: BSD 3-Clause "New" or "Revised" License
Ansible Role To Install Redmine
License: BSD 3-Clause "New" or "Revised" License
Right now it runs on 5000
Create a scenario to test Redmine with PostgreSQL
plugin directory is one level extra nested
Do not depend on bngsudheer.centos_base.
Use bngsudheer.centos_base for convenience.
With SSL support
There are some missing requirements.
TASK [bngsudheer.redmine : Generate secret token] ****************************** fatal: [192.168.100.71]: FAILED! => {"changed": true, "cmd": "/home/redmine/bin/bundle exec /home/redmine/bin/rake generate_secret_token", "delta": "0:00:00.460115", "end": "2017-07-26 15:00:39.286941", "failed": true, "rc": 1, "start": "2017-07-26 15:00:38.826826", "stderr": "Bundler::GemNotFound: Could not find gem 'mysql2 (~> 0.3.11)' in any of the gem sources listed in your Gemfile.\n /home/redmine/.gem/ruby/gems/bundler-1.15.3/lib/bundler/resolver.rb:396:in
block in verify_gemfile_dependencies_are_found!'\n /home/redmine/.gem/ruby/gems/bundler-1.15.3/lib/bundler/resolver.rb:366:in each'\n /home/redmine/.gem/ruby/gems/bundler-1.15.3/lib/bundler/resolver.rb:366:in
verify_gemfile_dependencies_are_found!'\n /home/redmine/.gem/ruby/gems/bundler-1.15.3/lib/bundler/resolver.rb:212:in start'\n /home/redmine/.gem/ruby/gems/bundler-1.15.3/lib/bundler/resolver.rb:191:in
resolve'\n /home/redmine/.gem/ruby/gems/bundler-1.15.3/lib/bundler/definition.rb:235:in resolve'\n /home/redmine/.gem/ruby/gems/bundler-1.15.3/lib/bundler/definition.rb:159:in
specs'\n /home/redmine/.gem/ruby/gems/bundler-1.15.3/lib/bundler/definition.rb:218:in specs_for'\n /home/redmine/.gem/ruby/gems/bundler-1.15.3/lib/bundler/definition.rb:207:in
requested_specs'\n /home/redmine/.gem/ruby/gems/bundler-1.15.3/lib/bundler/runtime.rb:109:in block in definition_method'\n /home/redmine/.gem/ruby/gems/bundler-1.15.3/lib/bundler/runtime.rb:21:in
setup'\n /home/redmine/.gem/ruby/gems/bundler-1.15.3/lib/bundler.rb:101:in setup'\n /home/redmine/.gem/ruby/gems/bundler-1.15.3/lib/bundler/setup.rb:19:in
<top (required)>'\n /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in require'\n /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in
require'", "stdout": "bundler: failed to load command: /home/redmine/bin/rake (/home/redmine/bin/rake)", "stdout_lines": ["bundler: failed to load command: /home/redmine/bin/rake (/home/redmine/bin/rake)"], "warnings": []}
`
Version 2.1.0 (latest)
CentOS 7 (latest updates)
Tried with Redmine 3.4.6 and 3.4.11
It would appear something in the dependency tree was updated, and versions were not properly pinned. That is odd, because the error is:
An error occurred while installing rmagick (4.0.0), and Bundler cannot continue.
but the Gemfile for Redmine says:
# Optional gem for exporting the gantt to a PNG file, not supported with jruby
group :rmagick do
gem "rmagick", "~> 2.16.0"
end
TASK [bngsudheer.redmine : Install the gems needed by Redmine via bundler]
results in:
FAILED! => {"changed": false, "cmd": "/home/redmine/bin/bundler install --gemfile /srv/redmine/redmine/Gemfile", "msg": "/usr/share/gems/gems/psych-2.0.0/lib/psych.rb:98: warning: already initialized constant Psych::VERSION
/usr/share/ruby/psych.rb:98: warning: previous definition of VERSION was here
/usr/share/gems/gems/psych-2.0.0/lib/psych.rb:101: warning: already initialized constant Psych::LIBYAML_VERSION
/usr/share/ruby/psych.rb:101: warning: previous definition of LIBYAML_VERSION was here", "rc": 5, "stderr": "/usr/share/gems/gems/psych-2.0.0/lib/psych.rb:98: warning: already initialized constant Psych::VERSION
/usr/share/ruby/psych.rb:98: warning: previous definition of VERSION was here
/usr/share/gems/gems/psych-2.0.0/lib/psych.rb:101: warning: already initialized constant Psych::LIBYAML_VERSION
/usr/share/ruby/psych.rb:101: warning: previous definition of LIBYAML_VERSION was here
", "stderr_lines": ["/usr/share/gems/gems/psych-2.0.0/lib/psych.rb:98: warning: already initialized constant Psych::VERSION", "/usr/share/ruby/psych.rb:98: warning: previous definition of VERSION was here", "/usr/share/gems/gems/psych-2.0.0/lib/psych.rb:101: warning: already initialized constant Psych::LIBYAML_VERSION", "/usr/share/ruby/psych.rb:101: warning: previous definition of LIBYAML_VERSION was here"], "stdout": "The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x64-mingw32, x86-mswin32. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x64-mingw32 x86-mswin32`.
Fetching gem metadata from https://rubygems.org/................
Fetching gem metadata from https://rubygems.org/..
Resolving dependencies....
RubyGems 2.0.14.1 is not threadsafe, so your gems will be installed one at a time. Upgrade to RubyGems 2.1.0 or higher to enable parallel gem installation.
Using rake 12.3.3
Using i18n 0.7.0
Using minitest 5.11.3
Using thread_safe 0.3.6
Using tzinfo 1.2.5
Using activesupport 4.2.8
Using builder 3.2.3
Using erubis 2.7.0
Using mini_portile2 2.1.0
Using nokogiri 1.6.8.1
Using rails-deprecated_sanitizer 1.0.3
Using rails-dom-testing 1.0.9
Using crass 1.0.4
Using loofah 2.2.3
Using rails-html-sanitizer 1.0.4
Using actionview 4.2.8
Using rack 1.6.11
Using rack-test 0.6.3
Using actionpack 4.2.8
Using globalid 0.4.2
Using activejob 4.2.8
Using mime-types-data 3.2019.0331
Using mime-types 3.2.2
Using mail 2.6.6
Using actionmailer 4.2.8
Using actionpack-xml_parser 1.0.2
Using activemodel 4.2.8
Using arel 6.0.4
Using activerecord 4.2.8
Using public_suffix 2.0.5
Using addressable 2.6.0
Using bundler 1.16.1
Using mini_mime 1.0.2
Using xpath 2.1.0
Using capybara 2.18.0
Using ffi 1.11.1
Using childprocess 0.9.0
Using coderay 1.1.2
Using concurrent-ruby 1.1.5
Using css_parser 1.7.0
Using docile 1.1.5
Using htmlentities 4.3.4
Using thor 0.20.3
Using railties 4.2.8
Using jquery-rails 3.1.5
Using kgio 2.11.2
Using metaclass 0.0.4
Using mimemagic 0.3.3
Using mocha 1.9.0
Using multi_json 1.13.1
Using net-ldap 0.12.1
Using pg 0.18.4
Using protected_attributes 1.1.4
Using ruby-openid 2.3.0
Using rack-openid 1.4.2
Using sprockets 3.7.2
Using sprockets-rails 3.2.1
Using rails 4.2.8
Using raindrops 0.19.0
Using rbpdf-font 1.19.1
Using rbpdf 1.19.8
Using rdoc 4.3.0
Using redcarpet 3.4.0
Using request_store 1.0.5
Fetching rmagick 4.0.0
Installing rmagick 4.0.0 with native extensions
Gem::InstallError: rmagick requires Ruby version >= 2.3.0.
An error occurred while installing rmagick (4.0.0), and Bundler cannot continue.
Make sure that `gem install rmagick -v '4.0.0'` succeeds before bundling.
In Gemfile:
rmagick
", "stdout_lines": ["The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x64-mingw32, x86-mswin32. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x64-mingw32 x86-mswin32`.", "Fetching gem metadata from https://rubygems.org/................", "Fetching gem metadata from https://rubygems.org/..", "Resolving dependencies....", "RubyGems 2.0.14.1 is not threadsafe, so your gems will be installed one at a time. Upgrade to RubyGems 2.1.0 or higher to enable parallel gem installation.", "Using rake 12.3.3", "Using i18n 0.7.0", "Using minitest 5.11.3", "Using thread_safe 0.3.6", "Using tzinfo 1.2.5", "Using activesupport 4.2.8", "Using builder 3.2.3", "Using erubis 2.7.0", "Using mini_portile2 2.1.0", "Using nokogiri 1.6.8.1", "Using rails-deprecated_sanitizer 1.0.3", "Using rails-dom-testing 1.0.9", "Using crass 1.0.4", "Using loofah 2.2.3", "Using rails-html-sanitizer 1.0.4", "Using actionview 4.2.8", "Using rack 1.6.11", "Using rack-test 0.6.3", "Using actionpack 4.2.8", "Using globalid 0.4.2", "Using activejob 4.2.8", "Using mime-types-data 3.2019.0331", "Using mime-types 3.2.2", "Using mail 2.6.6", "Using actionmailer 4.2.8", "Using actionpack-xml_parser 1.0.2", "Using activemodel 4.2.8", "Using arel 6.0.4", "Using activerecord 4.2.8", "Using public_suffix 2.0.5", "Using addressable 2.6.0", "Using bundler 1.16.1", "Using mini_mime 1.0.2", "Using xpath 2.1.0", "Using capybara 2.18.0", "Using ffi 1.11.1", "Using childprocess 0.9.0", "Using coderay 1.1.2", "Using concurrent-ruby 1.1.5", "Using css_parser 1.7.0", "Using docile 1.1.5", "Using htmlentities 4.3.4", "Using thor 0.20.3", "Using railties 4.2.8", "Using jquery-rails 3.1.5", "Using kgio 2.11.2", "Using metaclass 0.0.4", "Using mimemagic 0.3.3", "Using mocha 1.9.0", "Using multi_json 1.13.1", "Using net-ldap 0.12.1", "Using pg 0.18.4", "Using protected_attributes 1.1.4", "Using ruby-openid 2.3.0", "Using rack-openid 1.4.2", "Using sprockets 3.7.2", "Using sprockets-rails 3.2.1", "Using rails 4.2.8", "Using raindrops 0.19.0", "Using rbpdf-font 1.19.1", "Using rbpdf 1.19.8", "Using rdoc 4.3.0", "Using redcarpet 3.4.0", "Using request_store 1.0.5", "Fetching rmagick 4.0.0", "Installing rmagick 4.0.0 with native extensions", "Gem::InstallError: rmagick requires Ruby version >= 2.3.0.", "An error occurred while installing rmagick (4.0.0), and Bundler cannot continue.", "Make sure that `gem install rmagick -v '4.0.0'` succeeds before bundling.", "", "In Gemfile:", " rmagick"]}
I am using this role on a CentOS 7.6 system. Everything seems to be configured correctly. The database is migrated (from a rather old version, yay!) but unicorn will not start. The stderr log has this over and over:
I, [2019-03-14T14:40:13.322666 #15687] INFO -- : Refreshing Gem list
/home/redmine/.gem/ruby/gems/unicorn-5.5.0/lib/unicorn.rb:49:in `block in builder': wrong number of arguments (0 for 2) (ArgumentError)
from /home/redmine/.gem/ruby/gems/unicorn-5.5.0/bin/unicorn_rails:139:in `call'
from /home/redmine/.gem/ruby/gems/unicorn-5.5.0/bin/unicorn_rails:139:in `block in rails_builder'
from /home/redmine/.gem/ruby/gems/unicorn-5.5.0/lib/unicorn/http_server.rb:794:in `call'
from /home/redmine/.gem/ruby/gems/unicorn-5.5.0/lib/unicorn/http_server.rb:794:in `build_app!'
from /home/redmine/.gem/ruby/gems/unicorn-5.5.0/lib/unicorn/http_server.rb:141:in `start'
from /home/redmine/.gem/ruby/gems/unicorn-5.5.0/bin/unicorn_rails:209:in `<top (required)>'
from /home/redmine/bin/unicorn_rails:23:in `load'
from /home/redmine/bin/unicorn_rails:23:in `<main>'
This is in my meta/galaxy_install_info
{install_date: 'Sat Mar 9 22:41:55 2019', version: v2.0.2}
These are the settings I'm using for the install:
vars:
redmine_sql_driver: postgresql
redmine_sql_username: redmine
redmine_sql_password: "{{ postgresql_password }}"
redmine_sql_database_name: redmine
redmine_sql_database_host: 192.168.122.5
centos_base_selinux_packages: false
redmine_domain_name: projects.example.com
redmine_configure_nginx: true
redmine_nginx_config_template: tls
redmine_ssl_certificate_path: /etc/ssl/certs/star_example.com.pem
redmine_ssl_certificate_key_path: /etc/ssl/private/star_example.com.key
redmine_configure_firewalld: false
redmine_enable_smtp_email: true
redmine_smtp_settings_domain: projects.example.com
Any help would be great!
# rpm -qa|grep ruby
rubygem-io-console-0.4.2-34.el7_6.x86_64
rubygem-bigdecimal-1.2.0-34.el7_6.x86_64
rubygem-json-1.7.7-34.el7_6.x86_64
rubygem-psych-2.0.0-34.el7_6.x86_64
ruby-2.0.0.648-34.el7_6.x86_64
rubygems-2.0.14.1-34.el7_6.noarch
ruby-devel-2.0.0.648-34.el7_6.x86_64
ruby-libs-2.0.0.648-34.el7_6.x86_64
ruby-irb-2.0.0.648-34.el7_6.noarch
rubygem-rdoc-4.0.0-34.el7_6.noarch
# rpm -qa|grep nginx
nginx-filesystem-1.12.2-2.el7.noarch
nginx-mod-http-geoip-1.12.2-2.el7.x86_64
nginx-1.12.2-2.el7.x86_64
nginx-mod-http-perl-1.12.2-2.el7.x86_64
nginx-mod-mail-1.12.2-2.el7.x86_64
nginx-mod-stream-1.12.2-2.el7.x86_64
nginx-mod-http-image-filter-1.12.2-2.el7.x86_64
nginx-mod-http-xslt-filter-1.12.2-2.el7.x86_64
nginx-all-modules-1.12.2-2.el7.noarch
Any other output you'd like, let me know!
ansible-role-redmine/tasks/main.yml
Line 138 in ee631dc
fatal: [192.168.23.245]: FAILED! => {"changed": false, "cmd": "/home/redmine/bin/bundler install --gemfile /home/redmine/redmine/Gemfile", "msg": "", "rc": 4, "stderr": "", "stderr_lines": [], "stdout": "\n[!] There was an error parsing
Gemfile: No such file or directory - /home/redmine/redmine/Gemfile. Bundler cannot continue.\n", "stdout_lines": ["", "[!] There was an error parsing
Gemfile: No such file or directory - /home/redmine/redmine/Gemfile. Bundler cannot continue."]}
Use RuntimeDirectory= as per https://www.freedesktop.org/software/systemd/man/systemd.exec.html
Remove the directive that uses mkdir. Specify User= and Group=.
instead of a loop
How to fix it?
TASK [redmine : DB Migrate] ********************************************************************************************************************************************************************************************************* fatal: [10.100.143.40]: FAILED! => {"changed": true, "cmd": "/home/redmine/bin/bundle exec /home/redmine/bin/rake db:migrate", "delta": "0:00:02.512404", "end": "2020-10-01 10:34:11.611178", "msg": "non-zero return code", "rc": 1, "start": "2020-10-01 10:34:09.098774", "stderr": "rake aborted!\nMysql2::Error: Plugin sha256_password could not be loaded: lib64/mariadb/plugin/sha256_password.so: cannot open shared object file: No such file or directory\n/usr/share/gems/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in
connect'\n/usr/share/gems/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in initialize'\n/usr/share/gems/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/mysql2_adapter.rb:22:in
new'\n/usr/share/gems/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/mysql2_adapter.rb:22:in mysql2_connection'\n/usr/share/gems/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:830:in
new_connection'\n/usr/share/gems/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:874:in checkout_new_connection'\n/usr/share/gems/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:853:in
try_to_checkout_new_connection'\n/usr/share/gems/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:814:in acquire_connection'\n/usr/share/gems/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:538:in
checkout'\n/usr/share/gems/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:382:in connection'\n/usr/share/gems/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:1033:in
retrieve_connection'\n/usr/share/gems/gems/activerecord-5.2.4.2/lib/active_record/connection_handling.rb:118:in retrieve_connection'\n/usr/share/gems/gems/activerecord-5.2.4.2/lib/active_record/connection_handling.rb:90:in
connection'\n/usr/share/gems/gems/activerecord-5.2.4.2/lib/active_record/tasks/database_tasks.rb:172:in migrate'\n/usr/share/gems/gems/activerecord-5.2.4.2/lib/active_record/railties/databases.rake:60:in
block (2 levels) in <top (required)>'\n/usr/share/gems/gems/rake-13.0.1/exe/rake:27:in <top (required)>'\n/home/redmine/.gem/ruby/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:63:in
load'\n/home/redmine/.gem/ruby/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:63:in kernel_load'\n/home/redmine/.gem/ruby/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:28:in
run'\n/home/redmine/.gem/ruby/gems/bundler-2.1.4/lib/bundler/cli.rb:476:in exec'\n/home/redmine/.gem/ruby/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/command.rb:27:in
run'\n/home/redmine/.gem/ruby/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in invoke_command'\n/home/redmine/.gem/ruby/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor.rb:399:in
dispatch'\n/home/redmine/.gem/ruby/gems/bundler-2.1.4/lib/bundler/cli.rb:30:in dispatch'\n/home/redmine/.gem/ruby/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/base.rb:476:in
start'\n/home/redmine/.gem/ruby/gems/bundler-2.1.4/lib/bundler/cli.rb:24:in start'\n/home/redmine/.gem/ruby/gems/bundler-2.1.4/exe/bundle:46:in
block in <top (required)>'\n/home/redmine/.gem/ruby/gems/bundler-2.1.4/lib/bundler/friendly_errors.rb:123:in with_friendly_errors'\n/home/redmine/.gem/ruby/gems/bundler-2.1.4/exe/bundle:34:in
<top (required)>'\n/home/redmine/bin/bundle:23:in load'\n/home/redmine/bin/bundle:23:in
connect'", "/usr/share/gems/gems/mysql2-0.5.3/lib/mysql2/client.rb:90:in
initialize'", "/usr/share/gems/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/mysql2_adapter.rb:22:in new'", "/usr/share/gems/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/mysql2_adapter.rb:22:in
mysql2_connection'", "/usr/share/gems/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:830:in new_connection'", "/usr/share/gems/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:874:in
checkout_new_connection'", "/usr/share/gems/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:853:in try_to_checkout_new_connection'", "/usr/share/gems/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:814:in
acquire_connection'", "/usr/share/gems/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:538:in checkout'", "/usr/share/gems/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:382:in
connection'", "/usr/share/gems/gems/activerecord-5.2.4.2/lib/active_record/connection_adapters/abstract/connection_pool.rb:1033:in retrieve_connection'", "/usr/share/gems/gems/activerecord-5.2.4.2/lib/active_record/connection_handling.rb:118:in
retrieve_connection'", "/usr/share/gems/gems/activerecord-5.2.4.2/lib/active_record/connection_handling.rb:90:in connection'", "/usr/share/gems/gems/activerecord-5.2.4.2/lib/active_record/tasks/database_tasks.rb:172:in
migrate'", "/usr/share/gems/gems/activerecord-5.2.4.2/lib/active_record/railties/databases.rake:60:in block (2 levels) in <top (required)>'", "/usr/share/gems/gems/rake-13.0.1/exe/rake:27:in
<top (required)>'", "/home/redmine/.gem/ruby/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:63:in load'", "/home/redmine/.gem/ruby/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:63:in
kernel_load'", "/home/redmine/.gem/ruby/gems/bundler-2.1.4/lib/bundler/cli/exec.rb:28:in run'", "/home/redmine/.gem/ruby/gems/bundler-2.1.4/lib/bundler/cli.rb:476:in
exec'", "/home/redmine/.gem/ruby/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/command.rb:27:in run'", "/home/redmine/.gem/ruby/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in
invoke_command'", "/home/redmine/.gem/ruby/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor.rb:399:in dispatch'", "/home/redmine/.gem/ruby/gems/bundler-2.1.4/lib/bundler/cli.rb:30:in
dispatch'", "/home/redmine/.gem/ruby/gems/bundler-2.1.4/lib/bundler/vendor/thor/lib/thor/base.rb:476:in start'", "/home/redmine/.gem/ruby/gems/bundler-2.1.4/lib/bundler/cli.rb:24:in
start'", "/home/redmine/.gem/ruby/gems/bundler-2.1.4/exe/bundle:46:in block in <top (required)>'", "/home/redmine/.gem/ruby/gems/bundler-2.1.4/lib/bundler/friendly_errors.rb:123:in
with_friendly_errors'", "/home/redmine/.gem/ruby/gems/bundler-2.1.4/exe/bundle:34:in <top (required)>'", "/home/redmine/bin/bundle:23:in
load'", "/home/redmine/bin/bundle:23:in <main>'", "Tasks: TOP => db:migrate", "(See full trace by running task with --trace)"], "stdout": "", "stdout_lines": []}
ansible-role-redmine/tasks/main.yml
Line 73 in ee631dc
FAILED! => {"changed": false, "msg": "This module requires policycoreutils-python"}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.