Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CI/CD] remove travis, add gh actions: windows and osx builds, build windows nightly, check if dt runs... #6603

Merged
merged 76 commits into from
Nov 3, 2020

Conversation

johnny-bit
Copy link
Member

@johnny-bit johnny-bit commented Oct 22, 2020

Try speeding up jobs...

//EDIT:
Well... this started as a "try to speed up jobs" but is now great effort to test both build and run of darktable (at least darktable-cli) on all 3 supported OSes.

I wonder what else could be done here :)

@johnny-bit
Copy link
Member Author

If anybody wants to try mac packaging in nightly, here's the file:

name: Nightly Macos PKG
# TODO: move to nightly.yml after finalizing here.
on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  macOS:
    name: macOS.${{ matrix.compiler.compiler }}.${{ matrix.target }}
    runs-on: macos-latest
    strategy:
      fail-fast: true
      matrix:
        compiler:
          - { compiler: XCode,   CC: cc, CXX: c++ }
        btype: [ Release ]
        target:
          - skiptest
    env:
      CC: ${{ matrix.compiler.CC }}
      CXX: ${{ matrix.compiler.CXX }}
      SRC_DIR: ${{ github.workspace }}/src
      BUILD_DIR: ${{ github.workspace }}/build
      INSTALL_PREFIX: ${{ github.workspace }}/install
      CMAKE_BUILD_TYPE: ${{ matrix.btype }}
      GENERATOR: Ninja
      TARGET: ${{ matrix.target }}
      DYLD_FALLBACK_LIBRARY_PATH: /opt/local/lib
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true
          path: src
      - name: Install MacportsCI
        run: |
          curl -LO https://raw.githubusercontent.com/GiovanniBussi/macports-ci/master/macports-ci
          source ./macports-ci install
          #sudo echo "buildfromsource always" >> /opt/local/etc/macports/macports.conf
          #sudo echo "macosx_deployment_target 10.7" >> /opt/local/etc/macports/macports.conf
          #sudo echo "cxx_stdlib libc++" >> /opt/local/etc/macports/macports.conf
          echo "+no_gnome +no_x11 +quartz -x11 -gnome" | sudo tee -a /opt/local/etc/macports/variants.conf
          mkdir -p ~/ports/devel/gnutls/files \
                   ~/ports/lang/python37/files \
                   ~/ports/lang/python38/files \
                   ~/ports/graphics/GraphicsMagick/files \
                   ~/ports/graphics/ImageMagick/files \
                   ~/ports/textproc \
                   ~/ports/science
          cp -R "$(port dir gnutls)" ~/ports/devel
          curl -Lo ~/ports/devel/gnutls/files/patch.diff https://raw.github.com/darktable-org/darktable/master/packaging/macosx/gnutls-disable-connectx.diff
          cp -R "$(port dir python37)" ~/ports/lang
          curl -Lo ~/ports/lang/python37/files/patch.diff https://raw.github.com/darktable-org/darktable/master/packaging/macosx/python36-stack_size.diff
          cp -R "$(port dir python38)" ~/ports/lang
          curl -Lo ~/ports/lang/python38/files/patch.diff https://raw.github.com/darktable-org/darktable/master/packaging/macosx/python38-stack_size.diff
          cp -R "$(port dir GraphicsMagick)" ~/ports/graphics
          curl -Lo ~/ports/graphics/GraphicsMagick/files/patch.diff https://raw.github.com/darktable-org/darktable/master/packaging/macosx/gm-deployment_target.diff
          cp -R "$(port dir ImageMagick)" ~/ports/graphics
          curl -Lo ~/ports/graphics/ImageMagick/files/patch.diff https://raw.github.com/darktable-org/darktable/master/packaging/macosx/im-stdlib.diff
          echo "patchfiles-append patch.diff" >> ~/ports/devel/gnutls/Portfile
          echo "patchfiles-append patch.diff" >> ~/ports/lang/python37/Portfile
          echo "patchfiles-append patch.diff" >> ~/ports/lang/python38/Portfile
          echo "patchfiles-append patch.diff" >> ~/ports/graphics/GraphicsMagick/Portfile
          echo "patchfiles-append patch.diff" >> ~/ports/graphics/ImageMagick/Portfile
          cp -R "$(port dir pugixml)" ~/ports/textproc
          curl -L https://raw.github.com/darktable-org/darktable/master/packaging/macosx/pugixml-stdlib.patch | patch -d ~/ports -p0
          cp -R "$(port dir librsvg)" ~/ports/graphics
          curl -L https://raw.github.com/darktable-org/darktable/master/packaging/macosx/librsvg-nocargo.patch | patch -d ~/ports -p0
          cp -R "$(port dir gmic)" ~/ports/science
          curl -L https://raw.github.com/darktable-org/darktable/master/packaging/macosx/gmic-minimal.patch | patch -d ~/ports -p0
          sudo portindex ~/ports
          source ./macports-ci localports ~/ports
          echo $DYLD_LIBRARY_PATH
          echo $DYLD_FALLBACK_LIBRARY_PATH
          export DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib
          sudo port install git exiv2 libgphoto2 gtk-osx-application-gtk3 lensfun librsvg libsoup openexr json-glib flickcurl GraphicsMagick openjpeg lua webp libsecret pugixml osm-gps-map adwaita-icon-theme tango-icon-theme intltool iso-codes libomp gmic
      - name: macports log upload
        if: ${{ failure() }}
        uses: 'actions/upload-artifact@v2'
        with:
          name: macports_logs.${{ github.sha }}
          path: /opt/local/var/macports/logs/*/*/main.log
          retention-days: 1
      - name: Get gtk-mac-bundler
        run: |
          curl -O https://ftp.gnome.org/pub/gnome/sources/gtk-mac-bundler/0.7/gtk-mac-bundler-0.7.4.tar.xz
          tar -xf gtk-mac-bundler-0.7.4.tar.xz
          cd gtk-mac-bundler-0.7.4
          patch -p1 < ${SRC_DIR}/packaging/macosx/gtk-mac-bundler-0.7.4.patch
          make install
      - name: Build and Install
        run: |
          cmake -E make_directory "${BUILD_DIR}";
          cmake -E make_directory "${INSTALL_PREFIX}";
          cd "${BUILD_DIR}"
          cmake "${SRC_DIR}" \
            -DCMAKE_BUILD_TYPE="$CMAKE_BUILD_TYPE" \
            -DCMAKE_CXX_FLAGS=-stdlib=libc++ \
            -DOpenMP_C_INCLUDE_DIR=/opt/local/include/libomp \
            -DOpenMP_CXX_INCLUDE_DIR=/opt/local/include/libomp \
            -DCMAKE_LIBRARY_PATH=/opt/local/lib/libomp \
            -DBINARY_PACKAGE_BUILD=ON \
            -DRAWSPEED_ENABLE_LTO=ON \
            -DBUILD_CURVE_TOOLS=ON \
            -DBUILD_NOISE_TOOLS=ON
          make
          sudo make install
      - name: Package
        run: |
          cd "${SRC_DIR}/packaging/macosx"
          ./make-app-bundle
      - name: Package upload
        uses: 'actions/upload-artifact@v2'
        with:
          name: darktable.${{ github.sha }}.macos.zip
          path: ${{ env.SRC_DIR }}/packaging/macosx/darktable-*.dmg
          retention-days: 1

I'm pretty much done for now :/

@aurelienpierre
Copy link
Member

What happened with Travis ?

@johnny-bit
Copy link
Member Author

https://blog.travis-ci.com/2020-11-02-travis-ci-new-billing

Basically makes OS travis usage a "trial" that could apply for "build extension" on "per-case basis" if os project manages to exceed 10000 credits (which equals to 1000 minutes which equals to ~20 builds of dt per month since on travis usual build takes 5-6 minutes). Also renders my recent osx build not viable: GH ones are far faster + travis osx builds cost 5x normal linux build and due to travis config takes 4-5x as long as windows build so free tier would be enough to do 4 osx builds.

@johnny-bit
Copy link
Member Author

Well... I think this shoiuld be ready... @TurboGit - what do you think? Should I add IRC job? or merge as-is?

@johnny-bit johnny-bit changed the title [CI/CD] speedup travis, add gh actions: windows and osx builds, build windows test packages [CI/CD] remove travis, add gh actions: windows and osx builds, build windows nightly, check if dt runs... Nov 2, 2020
@TurboGit TurboGit self-requested a review November 3, 2020 07:03
@TurboGit TurboGit added the feature: redesign current features to rewrite label Nov 3, 2020
@TurboGit
Copy link
Member

TurboGit commented Nov 3, 2020

Thanks, merging now.

@TurboGit TurboGit merged commit 29fda29 into darktable-org:master Nov 3, 2020
@johnny-bit johnny-bit deleted the travis_revamp_v2 branch November 3, 2020 11:52
@chhil
Copy link

chhil commented Nov 3, 2020

Will these nightly builds be accessible to users on the bleeding edge of DT?

@johnny-bit
Copy link
Member Author

johnny-bit commented Nov 3, 2020 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature: redesign current features to rewrite
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants