diff --git a/.github/workflows/acceptance-tests.yml b/.github/workflows/acceptance-tests.yml new file mode 100644 index 00000000..e7396932 --- /dev/null +++ b/.github/workflows/acceptance-tests.yml @@ -0,0 +1,155 @@ +name: Acceptance tests + +on: + pull_request: + types: + - opened + - edited + - synchronize + - reopened + - closed + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + check-deploy: + runs-on: ubuntu-22.04 + outputs: + pr-contains-string: ${{ steps.deploy-comment.outputs.pr-contains-string }} + renku: ${{ steps.deploy-comment.outputs.renku}} + renku-core: ${{ steps.deploy-comment.outputs.renku-core}} + renku-gateway: ${{ steps.deploy-comment.outputs.renku-gateway}} + renku-graph: ${{ steps.deploy-comment.outputs.renku-graph}} + renku-notebooks: ${{ steps.deploy-comment.outputs.renku-notebooks}} + renku-ui: ${{ steps.deploy-comment.outputs.renku-ui}} + renku-data-services: ${{ steps.deploy-comment.outputs.renku-data-services}} + amalthea: ${{ steps.deploy-comment.outputs.amalthea}} + test-enabled: ${{ steps.deploy-comment.outputs.test-enabled}} + extra-values: ${{ steps.deploy-comment.outputs.extra-values}} + steps: + - uses: actions/checkout@v4.1.7 + - id: deploy-comment + uses: SwissDataScienceCenter/renku-actions/check-pr-description@v1.12.3 + with: + string: /deploy + pr_ref: ${{ github.event.number }} + + deploy-pr: + if: github.event.action != 'closed' + needs: [check-deploy] + runs-on: ubuntu-22.04 + environment: + name: ci-renku-${{ github.event.number }} + url: https://ci-renku-${{ github.event.number }}.dev.renku.ch + steps: + - uses: actions/checkout@v4.1.7 + - name: renku build and deploy + if: needs.check-deploy.outputs.pr-contains-string == 'true' + uses: SwissDataScienceCenter/renku-actions/deploy-renku@v1.12.3 + env: + DOCKER_PASSWORD: ${{ secrets.RENKU_DOCKER_PASSWORD }} + DOCKER_USERNAME: ${{ secrets.RENKU_DOCKER_USERNAME }} + GITLAB_TOKEN: ${{ secrets.DEV_GITLAB_TOKEN }} + KUBECONFIG: "${{ github.workspace }}/renkubot-kube.config" + RENKU_ANONYMOUS_SESSIONS: true + RENKU_RELEASE: ci-renku-${{ github.event.number }} + RENKU_VALUES_FILE: "${{ github.workspace }}/values.yaml" + RENKU_VALUES: ${{ secrets.COMBINED_CHARTS_CI_RENKU_VALUES }} + RENKUBOT_KUBECONFIG: ${{ secrets.RENKUBOT_DEV_KUBECONFIG }} + TEST_ARTIFACTS_PATH: "tests-artifacts-${{ github.sha }}" + renku: "${{ needs.check-deploy.outputs.renku }}" + renku_core: "${{ needs.check-deploy.outputs.renku-core }}" + renku_gateway: "${{ needs.check-deploy.outputs.renku-gateway }}" + renku_graph: "${{ needs.check-deploy.outputs.renku-graph }}" + renku_notebooks: "${{ needs.check-deploy.outputs.renku-notebooks }}" + renku_ui: "${{ needs.check-deploy.outputs.renku-ui }}" + renku_data_services: "${{ needs.check-deploy.outputs.renku-data-services }}" + renku_search: "@${{ github.head_ref }}" + amalthea: "${{ needs.check-deploy.outputs.amalthea }}" + extra_values: "${{ needs.check-deploy.outputs.extra-values }}" + - name: Check existing renkubot comment + if: needs.check-deploy.outputs.pr-contains-string == 'true' + uses: peter-evans/find-comment@v3 + id: findcomment + with: + issue-number: ${{ github.event.pull_request.number }} + comment-author: "RenkuBot" + - name: Create comment pre deploy + if: ${{ steps.findcomment.outputs.comment-id == 0 && + needs.check-deploy.outputs.pr-contains-string == 'true' }} + uses: peter-evans/create-or-update-comment@v4 + with: + token: ${{ secrets.RENKUBOT_GITHUB_TOKEN }} + issue-number: ${{ github.event.pull_request.number }} + body: | + You can access the deployment of this PR at https://ci-renku-${{ github.event.number }}.dev.renku.ch + selenium-acceptance-tests: + needs: [check-deploy, deploy-pr] + if: github.event.action != 'closed' && needs.check-deploy.outputs.pr-contains-string == 'true' && needs.check-deploy.outputs.test-enabled == 'true' + runs-on: ubuntu-22.04 + steps: + - uses: SwissDataScienceCenter/renku-actions/test-renku@v1.12.3 + with: + kubeconfig: ${{ secrets.RENKUBOT_DEV_KUBECONFIG }} + renku-release: renku-ci-ds-${{ github.event.number }} + gitlab-token: ${{ secrets.DEV_GITLAB_TOKEN }} + persist: "${{ needs.check-deploy.outputs.persist }}" + s3-results-access-key: ${{ secrets.ACCEPTANCE_TESTS_BUCKET_ACCESS_KEY }} + s3-results-secret-key: ${{ secrets.ACCEPTANCE_TESTS_BUCKET_SECRET_KEY }} + test-timeout-mins: "60" + + cypress-acceptance-tests: + if: | + github.event.action != 'closed' && + needs.check-deploy.outputs.pr-contains-string == 'true' && + (needs.check-deploy.outputs.test-enabled == 'true' || needs.check-deploy.outputs.test-cypress-enabled == 'true') + needs: [check-deploy, deploy-pr] + runs-on: ubuntu-22.04 + + strategy: + fail-fast: false + max-parallel: 1 + matrix: + tests: [publicProject, updateProjects, useSession] + + steps: + - name: Extract Renku repository reference + run: echo "RENKU_REFERENCE=`echo '${{ needs.check-deploy.outputs.renku }}' | cut -d'@' -f2`" >> $GITHUB_ENV + - uses: SwissDataScienceCenter/renku-actions/test-renku-cypress@v1.12.3 + with: + e2e-target: ${{ matrix.tests }} + renku-reference: ${{ env.RENKU_REFERENCE }} + renku-release: renku-ci-ds-${{ github.event.number }} + test-user-password: ${{ secrets.RENKU_BOT_DEV_PASSWORD }} + + cleanup: + needs: check-deploy + if: github.event.action == 'closed' && needs.check-deploy.outputs.pr-contains-string == 'true' + runs-on: ubuntu-22.04 + steps: + - name: Find deplyoment url + uses: peter-evans/find-comment@v3 + id: deploymentUrlMessage + with: + issue-number: ${{ github.event.pull_request.number }} + comment-author: "RenkuBot" + body-includes: "Tearing down the temporary RenkuLab deplyoment" + - name: Create comment deployment url + if: steps.deploymentUrlMessage.outputs.comment-id == 0 + uses: peter-evans/create-or-update-comment@v4 + with: + token: ${{ secrets.RENKUBOT_GITHUB_TOKEN }} + issue-number: ${{ github.event.pull_request.number }} + body: | + Tearing down the temporary RenkuLab deplyoment for this PR. + - name: renku teardown + uses: SwissDataScienceCenter/renku-actions/cleanup-renku-ci-deployments@v1.12.3 + env: + HELM_RELEASE_REGEX: "^renku-ci-ds-${{ github.event.number }}$" + GITLAB_TOKEN: ${{ secrets.DEV_GITLAB_TOKEN }} + RENKUBOT_KUBECONFIG: ${{ secrets.RENKUBOT_DEV_KUBECONFIG }} + MAX_AGE_SECONDS: 0 + DELETE_NAMESPACE: "true" + diff --git a/chartpress.yml b/chartpress.yml new file mode 100644 index 00000000..6a0983ce --- /dev/null +++ b/chartpress.yml @@ -0,0 +1,18 @@ +charts: + - name: helm-chart/renku-search + resetTag: latest + imagePrefix: renku/ + repo: + git: SwissDataScienceCenter/helm-charts + published: https://swissdatasciencecenter.github.io/helm-charts + paths: + - . + images: + search-provision: + contextPath: . + dockerfilePath: Dockerfile # todo: use proper dockerfile + valuesPath: search.searchProvision.image + search-api: + contextPath: . + dockerfilePath: Dockerfile # todo: use proper dockerfile + valuesPath: search.searchApi.image