aboutsummaryrefslogtreecommitdiffstats
path: root/.github/workflows/integration-sqlite.yml
blob: 596906f6fa55fe990bf208fbd53cc82aaef5b983 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
name: Integration sqlite

on:
  pull_request:
    paths:
      # Only running on PR for this file to save CI time (otherwise pgsql only)
      - '.github/workflows/integration-sqlite.yml'

  push:
    branches:
      - main
      - master
      - stable*

permissions:
  contents: read

concurrency:
  group: integration-sqlite-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

jobs:
  changes:
    runs-on: ubuntu-latest

    outputs:
      # FIXME src: ${{ steps.changes.outputs.src}}
      src: 'true'

    steps:
      - uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # v2.11.1
        id: changes
        continue-on-error: true
        with:
          filters: |
            src:
              - '.github/workflows/**'
              - '3rdparty/**'
              - '**/*.php'
              - '**/lib/**'
              - '**/tests/**'
              - '**/vendor-bin/**'
              - 'build/integration/**'
              - '.php-cs-fixer.dist.php'
              - 'composer.json'
              - 'composer.lock'

  integration-sqlite:
    runs-on: ubuntu-latest

    needs: changes
    if: needs.changes.outputs.src != 'false'

    strategy:
      fail-fast: false
      matrix:
        test-suite:
          - 'capabilities_features'
          - 'collaboration_features'
          - 'comments_features'
          - 'dav_features'
          - 'features'
          - 'federation_features'
          - 'files_features'
          - 'filesdrop_features'
          #- 'ldap_features'
          - 'remoteapi_features'
          - 'setup_features'
          - 'sharees_features'
          - 'sharing_features'
          - 'videoverification_features'

        php-versions: ['8.2']
        spreed-versions: ['main']

    steps:
      - name: Checkout server
        uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
        with:
          submodules: true

      - name: Checkout Talk app
        if: ${{ matrix.test-suite == 'videoverification_features' }}
        uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2
        with:
          repository: nextcloud/spreed
          path: apps/spreed
          ref: ${{ matrix.spreed-versions }}

      - name: Set up php ${{ matrix.php-versions }}
        uses: shivammathur/setup-php@c5fc0d8281aba02c7fda07d3a70cc5371548067d # v2
        with:
          php-version: ${{ matrix.php-versions }}
          # https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
          extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, imagick, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
          coverage: none
          ini-file: development
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: Set up production dependencies
        run: composer i --no-dev

      - name: Set up behat dependencies
        working-directory: build/integration
        run: composer i

      - name: Set up Talk dependencies
        if: ${{ matrix.test-suite == 'videoverification_features' }}
        working-directory: apps/spreed
        run: composer i --no-dev

      - name: Set up Nextcloud
        env:
          DB_PORT: 4444
        run: |
          mkdir data
          ./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
          ./occ config:system:set hashing_default_password --value=true --type=boolean

      - name: Run integration
        working-directory: build/integration
        run: bash run.sh ${{ matrix.test-suite }}

      - name: Print logs
        if: always()
        run: |
          cat data/nextcloud.log

  summary:
    permissions:
      contents: none
    runs-on: ubuntu-latest
    needs: [changes, integration-sqlite]

    if: always()

    name: integration-sqlite-summary

    steps:
      - name: Summary status
        run: if ${{ needs.changes.outputs.src != 'false' && needs.integration-sqlite.result != 'success' }}; then exit 1; fi