diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..83a81467 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +.github +.dockerignore +**/.dockerignore \ No newline at end of file diff --git a/.github/workflows/integration-tests-irods.yml b/.github/workflows/integration-tests-irods.yml new file mode 100644 index 00000000..7b80c353 --- /dev/null +++ b/.github/workflows/integration-tests-irods.yml @@ -0,0 +1,40 @@ +name: Run integration tests against iRODS + +on: + push: + branches: + - develop + pull_request: + +jobs: + build: + runs-on: ubuntu-22.04 + if: | + ${{ ! contains(github.event.head_commit.message, '#nointegrationtests') && + ( github.event_name == 'push' || + github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name + ) + }} + steps: + - uses: actions/checkout@v2 + - name: Install dependencies + run: | + sudo apt install -y docker-compose + - uses: docker/setup-buildx-action@v3 + - name: Build utilizing cache + uses: docker/bake-action@v4 + with: + load: true + push: false + set: | + irods-catalog.cache-from=type=gha + irods-catalog.cache-to=type=gha + irods-catalog.tags=irods-catalog + irods-catalog-provider.cache-from=type=gha + irods-catalog-provider.cache-to=type=gha + irods-catalog-provider.tags=irods-catalog-provider + irods-client.cache-from=type=gha + irods-client.cache-to=type=gha + irods-client.tags=irods-client + - name: Run tests using docker-compose + run: docker-compose up --no-build --exit-code-from irods-client diff --git a/README.md b/README.md index b11e1fb9..e41b4741 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # iBridges ## Development status [![Python package](https://github.com/UtrechtUniversity/iBridges/actions/workflows/main.yml/badge.svg?branch=develop)](https://github.com/UtrechtUniversity/iBridges/actions/workflows/main.yml) [![Run integration tests against Yoda](https://github.com/UtrechtUniversity/iBridges/actions/workflows/integration-tests-yoda.yml/badge.svg)](https://github.com/UtrechtUniversity/iBridges/actions/workflows/integration-tests-yoda.yml) +[![Run integration tests against Yoda](https://github.com/UtrechtUniversity/iBridges/actions/workflows/integration-tests-irods.yml/badge.svg?branch=develop)](https://github.com/UtrechtUniversity/iBridges/actions/workflows/integration-tests-irods.yml) ## About diff --git a/docker-compose.yml b/docker-compose.yml index d9e8c479..023e6c12 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,6 +2,7 @@ version: '3' services: irods-catalog: + image: irods-catalog build: context: ./docker/irods_catalog # 5432 is exposed by default and can conflict with other postgres containers. @@ -12,15 +13,19 @@ services: - POSTGRES_PASSWORD=testpassword irods-catalog-provider: + image: irods-catalog-provider build: context: ./docker/irods_catalog_provider depends_on: - irods-catalog irods-client: + image: irods-client build: context: . dockerfile: ./docker/irods_client/Dockerfile depends_on: - irods-catalog-provider tty: true + environment: + - CI=${CI} diff --git a/docker/irods_catalog_provider/Dockerfile_4.2.12 b/docker/irods_catalog_provider/Dockerfile_4.2.12 deleted file mode 100644 index faf62c55..00000000 --- a/docker/irods_catalog_provider/Dockerfile_4.2.12 +++ /dev/null @@ -1,54 +0,0 @@ -FROM ubuntu:18.04 - -ENV DEBIAN_FRONTEND=noninteractive - -RUN apt-get update && \ - apt-get install -y \ - apt-transport-https \ - gnupg \ - wget \ - && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* /tmp/* - -RUN wget -qO - https://packages.irods.org/irods-signing-key.asc | apt-key add - && \ - echo "deb [arch=amd64] https://packages.irods.org/apt/ bionic main" | tee /etc/apt/sources.list.d/renci-irods.list - -RUN apt-get update && \ - apt-get install -y \ - libcurl4-gnutls-dev \ - python3 \ - python3-distro \ - python3-jsonschema \ - python3-pip \ - python3-psutil \ - python3-requests \ - rsyslog \ - unixodbc \ - && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* /tmp/* - -ARG irods_version=4.2.12 -ARG irods_package_version_suffix=-1~bionic -ARG irods_package_version=${irods_version}${irods_package_version_suffix} -ARG irods_resource_plugin_version=${irods_version}.0${irods_package_version_suffix} - -RUN apt-get update && \ - apt-get install -y \ - irods-database-plugin-postgres=${irods_package_version} \ - irods-runtime=${irods_package_version} \ - irods-icommands=${irods_package_version} \ - irods-server=${irods_package_version} \ - irods-resource-plugin-s3=${irods_resource_plugin_version} \ - && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* /tmp/* - -COPY setup-${irods_version}.input / -RUN mv /setup-${irods_version}.input /irods_setup.input - -WORKDIR / -COPY entrypoint.sh . -RUN chmod u+x ./entrypoint.sh -ENTRYPOINT ["./entrypoint.sh"] diff --git a/docker/irods_client/entrypoint.sh b/docker/irods_client/entrypoint.sh index 0d0fd7be..d236b73e 100644 --- a/docker/irods_client/entrypoint.sh +++ b/docker/irods_client/entrypoint.sh @@ -31,4 +31,9 @@ echo $(iadmin lu testuser) cd /ibridges/integration_test pytest . -/bin/bash +result=$? +if [[ -z "$CI" ]]; then + /bin/bash +else + exit $result +fi \ No newline at end of file