Welcome to mirror list, hosted at ThFree Co, Russian Federation.

phpunit-mysql.yml « workflows « .github - github.com/nextcloud/files_retention.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 96a187fd451d3b9e9532109c81541d62336769ab (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
143
144
# This workflow is provided via the organization template repository
#
# https://github.com/nextcloud/.github
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization

name: PHPUnit

on:
  pull_request:
    paths:
      - '.github/workflows/**'
      - 'appinfo/**'
      - 'lib/**'
      - 'templates/**'
      - 'tests/**'
      - 'vendor/**'
      - 'vendor-bin/**'
      - '.php-cs-fixer.dist.php'
      - 'composer.json'
      - 'composer.lock'

permissions:
  contents: read

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

env:
  # Location of the phpunit.xml and phpunit.integration.xml files
  PHPUNIT_CONFIG: ./tests/phpunit.xml
  PHPUNIT_INTEGRATION_CONFIG: ./tests/phpunit.integration.xml

jobs:
  phpunit-mysql:
    runs-on: ubuntu-latest

    strategy:
      matrix:
        php-versions: ['7.4', '8.0', '8.1']
        server-versions: ['master']

    services:
      mysql:
        image: mariadb:10.5
        ports:
          - 4444:3306/tcp
        env:
          MYSQL_ROOT_PASSWORD: rootpassword
        options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 5

    steps:
      - name: Set app env
        run: |
          # Split and keep last
          echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV

      - name: Enable ONLY_FULL_GROUP_BY MySQL option
        run: |
          echo "SET GLOBAL sql_mode=(SELECT CONCAT(@@sql_mode,',ONLY_FULL_GROUP_BY'));" | mysql -h 127.0.0.1 -P 4444 -u root -prootpassword
          echo "SELECT @@sql_mode;" | mysql -h 127.0.0.1 -P 4444 -u root -prootpassword

      - name: Checkout server
        uses: actions/checkout@v3
        with:
          submodules: true
          repository: nextcloud/server
          ref: ${{ matrix.server-versions }}

      - name: Checkout app
        uses: actions/checkout@v3
        with:
          path: apps/${{ env.APP_NAME }}

      - name: Set up php ${{ matrix.php-versions }}
        uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php-versions }}
          tools: phpunit
          extensions: mbstring, iconv, fileinfo, intl, mysql, pdo_mysql
          coverage: none

      - name: Check composer file existence
        id: check_composer
        uses: andstor/file-existence-action@v1
        with:
          files: apps/${{ env.APP_NAME }}/composer.json

      - name: Set up PHPUnit
        # Only run if phpunit config file exists
        if: steps.check_composer.outputs.files_exists == 'true'
        working-directory: apps/${{ env.APP_NAME }}
        run: composer i

      - name: Set up Nextcloud
        env:
          DB_PORT: 4444
        run: |
          mkdir data
          ./occ maintenance:install --verbose --database=mysql --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass password
          ./occ app:enable --force ${{ env.APP_NAME }}

      - name: Check PHPUnit config file existence
        id: check_phpunit
        uses: andstor/file-existence-action@v1
        with:
          files: apps/${{ env.APP_NAME }}/${{ env.PHPUNIT_CONFIG }}

      - name: PHPUnit
        # Only run if phpunit config file exists
        if: steps.check_phpunit.outputs.files_exists == 'true'
        working-directory: apps/${{ env.APP_NAME }}
        run: ./vendor/phpunit/phpunit/phpunit -c ${{ env.PHPUNIT_CONFIG }}

      - name: Check PHPUnit integration config file existence
        id: check_integration
        uses: andstor/file-existence-action@v1
        with:
          files: apps/${{ env.APP_NAME }}/${{ env.PHPUNIT_INTEGRATION_CONFIG }}

      - name: Run Nextcloud
        # Only run if phpunit integration config file exists
        if: steps.check_integration.outputs.files_exists == 'true'
        run: php -S localhost:8080 &

      - name: PHPUnit integration
        # Only run if phpunit integration config file exists
        if: steps.check_integration.outputs.files_exists == 'true'
        working-directory: apps/${{ env.APP_NAME }}
        run: ./vendor/phpunit/phpunit/phpunit -c ${{ env.PHPUNIT_INTEGRATION_CONFIG }}

  summary:
    permissions:
      contents: none
    runs-on: ubuntu-latest
    needs: phpunit-mysql

    if: always()

    name: phpunit-mysql-summary

    steps:
      - name: Summary status
        run: if ${{ needs.phpunit-mysql.result != 'success' }}; then exit 1; fi