Docker deploy tests #27
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Tests - Deploy | |
on: | |
pull_request: | |
paths: | |
- '.github/workflows/tests-deploy.yml' | |
- 'lib/**' | |
push: | |
branches: [main] | |
paths: | |
- '.github/workflows/tests-deploy.yml' | |
- 'lib/**' | |
workflow_dispatch: | |
jobs: | |
nc-host-app-docker: | |
runs-on: ubuntu-22.04 | |
name: NC In Host • ${{ matrix.server-version }} • 🐘${{ matrix.php-version }} | |
strategy: | |
fail-fast: false | |
matrix: | |
php-version: [ '8.1' ] | |
server-version: [ 'stable27' ] | |
include: | |
- server-version: "master" | |
php-version: "8.2" | |
services: | |
postgres: | |
image: ghcr.io/nextcloud/continuous-integration-postgres-14:latest | |
ports: | |
- 4444:5432/tcp | |
env: | |
POSTGRES_USER: root | |
POSTGRES_PASSWORD: rootpassword | |
POSTGRES_DB: nextcloud | |
options: --health-cmd pg_isready --health-interval 5s --health-timeout 2s --health-retries 5 | |
steps: | |
- name: Set app env | |
run: echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV | |
- name: Checkout server | |
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 | |
with: | |
submodules: true | |
repository: nextcloud/server | |
ref: ${{ matrix.server-version }} | |
- name: Checkout AppEcosystemV2 | |
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 | |
with: | |
path: apps/${{ env.APP_NAME }} | |
- name: Set up php ${{ matrix.php-versions }} | |
uses: shivammathur/setup-php@4bd44f22a98a19e0950cbad5f31095157cc9621b # v2 | |
with: | |
php-version: ${{ matrix.php-versions }} | |
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, pgsql, pdo_pgsql | |
coverage: none | |
ini-file: development | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Check composer file existence | |
id: check_composer | |
uses: andstor/file-existence-action@20b4d2e596410855db8f9ca21e96fbe18e12930b # v2 | |
with: | |
files: apps/${{ env.APP_NAME }}/composer.json | |
- name: Set up dependencies | |
if: steps.check_composer.outputs.files_exists == 'true' | |
working-directory: apps/${{ env.APP_NAME }} | |
run: composer i | |
- name: Set up & run Nextcloud | |
env: | |
DB_PORT: 4444 | |
run: | | |
mkdir data | |
./occ maintenance:install --verbose --database=pgsql --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 loglevel --value=0 | |
./occ config:system:set debug --value=true --type=boolean | |
./occ config:system:set allow_local_remote_servers --value true | |
./occ app:enable --force ${{ env.APP_NAME }} | |
php -S localhost 8080 & | |
- name: Test deploy | |
run: | | |
./occ app_ecosystem_v2:daemon:register docker-install Docker unix-socket /var/run/docker.sock http://localhost:8080/index.php | |
./occ app_ecosystem_v2:app:register \ | |
"$(./occ app_ecosystem_v2:app:deploy app_python_skeleton 1 --info-xml https://raw.githubusercontent.com/cloud-py-api/py_app_v2-skeleton/main/appinfo/info.xml)" | |
./occ app_ecosystem_v2:app:enable app_python_skeleton | |
./occ app_ecosystem_v2:app:disable app_python_skeleton | |
- name: Check logs | |
run: | | |
fgrep -iq 'Hello from app_python_skeleton :)' data/nextcloud.log | |
fgrep -iq 'Bye bye from app_python_skeleton :(' data/nextcloud.log | |
- name: Save container ingo & logs | |
if: always() | |
run: | | |
docker inspect app_python_skeleton | json_pp > container.json | |
docker logs app_python_skeleton > container.log 2>&1 | |
- name: Upload Container info | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: nc_host_app_docker_${{ matrix.server-version }}_${{ matrix.php-version }}_container.json | |
path: container.json | |
if-no-files-found: warn | |
- name: Upload Container logs | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: nc_host_app_docker_${{ matrix.server-version }}_${{ matrix.php-version }}_container.log | |
path: container.log | |
if-no-files-found: warn | |
- name: Upload NC logs | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: nc_host_app_docker_${{ matrix.server-version }}_${{ matrix.php-version }}_nextcloud.log | |
path: data/nextcloud.log | |
if-no-files-found: warn | |
- name: Setup tmate session | |
if: always() | |
uses: mxschmitt/action-tmate@v3 | |
# nc-docker-app-docker: | |
# runs-on: ubuntu-22.04 | |
# name: NC In Docker • ${{ env.docker-image }} | |
# env: | |
# docker-image: ghcr.io/juliushaertl/nextcloud-dev-php81:latest | |
# | |
# steps: | |
# - name: Create container | |
# run: | | |
# docker run --name nextcloud --rm -d -p 8080:80 -v /var/run/docker.sock:/var/run/docker.sock ${{ env.docker-image }} | |
# sudo chmod /var/run/docker.sock 766 | |
# sleep 120s | |
# | |
# - name: Install AppEcosystemV2 | |
# run: | | |
# docker exec -w /var/www/html/apps nextcloud git clone https://github.com/cloud-py-api/app_ecosystem_v2.git | |
# docker exec nextcloud patch -p 1 -i apps/app_ecosystem_v2/base_php.patch | |
# docker exec nextcloud sudo -u www-data php occ app:enable app_ecosystem_v2 | |
# docker exec nextcloud sudo -u www-data php occ app_ecosystem_v2:daemon:register \ | |
# docker-install Docker unix-socket /var/run/docker.sock http://localhost:8080/index.php --net=bridge | |
# docker exec nextcloud sudo -u www-data php occ app_ecosystem_v2:app:register | |
# "$(./occ app_ecosystem_v2:app:deploy app_python_skeleton 1 --info-xml https://raw.githubusercontent.com/cloud-py-api/py_app_v2-skeleton/main/appinfo/info.xml)" | |
# docker exec nextcloud sudo -u www-data php occ app_ecosystem_v2:app:enable app_python_skeleton | |
# docker exec nextcloud sudo -u www-data php occ app_ecosystem_v2:app:disable app_python_skeleton | |
# | |
# - name: Check logs | |
# run: | | |
# docker exec nextcloud sudo -u www-data fgrep -iq 'Hello from app_python_skeleton :)' data/nextcloud.log | |
# docker exec nextcloud sudo -u www-data fgrep -iq 'Bye bye from app_python_skeleton :(' data/nextcloud.log | |
# | |
# - name: Save container ingo & logs | |
# if: always() | |
# run: | | |
# docker inspect app_python_skeleton | json_pp > container.json | |
# docker logs app_python_skeleton > container.log 2>&1 | |
# docker cp /var/www/html/data/nextcloud.log nextcloud.log | |
# | |
# - name: Upload Container info | |
# if: always() | |
# uses: actions/upload-artifact@v3 | |
# with: | |
# name: nc_docker_app_docker_${{ matrix.server-version }}_${{ matrix.php-version }}_container.json | |
# path: container.json | |
# if-no-files-found: warn | |
# | |
# - name: Upload Container logs | |
# if: always() | |
# uses: actions/upload-artifact@v3 | |
# with: | |
# name: nc_docker_app_docker_${{ matrix.server-version }}_${{ matrix.php-version }}_container.log | |
# path: container.log | |
# if-no-files-found: warn | |
# | |
# - name: Upload NC logs | |
# if: always() | |
# uses: actions/upload-artifact@v3 | |
# with: | |
# name: nc_docker_app_docker_${{ matrix.server-version }}_${{ matrix.php-version }}_nextcloud.log | |
# path: nextcloud.log | |
# if-no-files-found: warn | |
# | |
# - name: Setup tmate session | |
# if: always() | |
# uses: mxschmitt/action-tmate@v3 0 |