ant-media / Ant-Media-Server

Ant Media Server is a live streaming engine software that provides adaptive, ultra low latency streaming by using WebRTC technology with ~0.5 seconds latency. Ant Media Server is auto-scalable and it can run on-premise or on-cloud.
https://antmedia.io
Other
4.25k stars 622 forks source link

Research on Maven Reactor and Deploying all submodules on CI #114

Closed mekya closed 6 years ago

mekya commented 6 years ago

Ant Media Server consists of sub projects which are mainly https://github.com/ant-media/ant-media-server-parent https://github.com/ant-media/Ant-Media-Server https://github.com/ant-media/Ant-Media-Server-Common https://github.com/ant-media/Ant-Media-Server-Service https://github.com/ant-media/red5-plugins/tree/master/tomcat https://github.com/ant-media/WebRTCApp https://gitlab.com/Ant-Media/SampleApp https://gitlab.com/Ant-Media/ManagementConsole_AngularApp

Enterprise Edition has these projects as well https://gitlab.com/Ant-Media/Ant-Media-Enterprise https://gitlab.com/Ant-Media/WebRTCApp4Enterprise

What we want is finding a simple way to build all these projects and make deployments to maven repos automatically. Keep in mind that https://gitlab.com/Ant-Media/Ant-Media-Enterprise will not be deployed to Maven. All the other subprojects may be deployed automatically when it is pushed to repo.

Btw, parent pom(https://github.com/ant-media/ant-media-server-parent) contains all version information of submodules.

maydin commented 6 years ago

@mekya when will these projects will be deployed to maven? If you trigger deploy automatically when they are pushed to repo, how will you define the version number?

mekya commented 6 years ago

Yeah trigger deploy automatically, version number is being fetched from parent pom

maydin commented 6 years ago

@mekya could you please send me the central maven repo url that is used with username and password.

mekya commented 6 years ago

I am sending username and password to your e-mail.

Community Edition is deployed in these lines. It is deployed to mvn for all commits(including snapshots) It is deployed to github if it is in master branch and it is tagged.

deploy:
  - provider: script
    script: "mvn deploy -P assemble -DskipTests --quiet --settings mvn-settings.xml"
    skip_cleanup: true
    on:
      tags: false
      all_branches: true
  - provider: releases
    api_key: $GITHUB_OAUTH_TOKEN
    file_glob: true
    file: "target/ant-media-server-community*.zip"
    skip_cleanup: true
    name: "Ant Media Server Community $(date +'%F-%T')"
    prerelease: true
    on:
      tags: true
      branch: master

When packaging the server below project should be deployed in advance

Our mission is provide required improvements or arrangements to deploy all these things with one command

maydin commented 6 years ago

1)All the pom versions could be updated with http://www.mojohaus.org/versions-maven-plugin/.

2)Dependency update check could be done with this plugin for each dependencies. if there is a new version of a dependency, build can produce a warning or fail.

3)Another solution could be to depend on "latest" version of dependencies and each module could deploy its new version to maven repo with CI.

mekya commented 6 years ago

@mekya review

maydin commented 6 years ago

Travis ve deploy script'i eklenenler: Parent,Ant-Media-Server-Common,Ant-Media-Server-Service,WebRTCApp

Kalan isler: LiveApp,ConsoleApp github'a tasinmasi ve travis-deploy eklenmesi gpg'nin traviste calistirilmasi Tomcat Plugin tasinamamistir cunku deploy etmiyoruz maven'a, bize ait degil. Ant-Media-Server hali hazirda deploy ediliyor

SNAPSHOT condition calismamisti, sonra lokalimde denedim calisti, ve sonra da travis'te de logladim ve calistigi goruldu.