From e122d8ab313e904f24da2e6fe18d4f62b3d6cbf0 Mon Sep 17 00:00:00 2001 From: Lars Kiesow Date: Tue, 28 May 2024 01:51:05 +0200 Subject: [PATCH] Automatically deploy pull requests This patch automatically deploys pull requests with static mock data to https://test.admin-interface.opencast.org similar to how the test deployment of the Opencast Editor works. Unfortunately, we cannot set a path prefix for mock data which means that all deployments share the lattest set of mock data. But since they shouldn't change very often, that's probably okay for this to get started. --- .../workflows/{deploy.yml => deploy-main.yml} | 0 .github/workflows/deploy-test.yml | 107 ++++++++++++++++++ 2 files changed, 107 insertions(+) rename .github/workflows/{deploy.yml => deploy-main.yml} (100%) create mode 100644 .github/workflows/deploy-test.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy-main.yml similarity index 100% rename from .github/workflows/deploy.yml rename to .github/workflows/deploy-main.yml diff --git a/.github/workflows/deploy-test.yml b/.github/workflows/deploy-test.yml new file mode 100644 index 0000000000..7550ff796b --- /dev/null +++ b/.github/workflows/deploy-test.yml @@ -0,0 +1,107 @@ +name: Publish Pull Request Page + +on: + pull_request_target: + types: + - opened + - synchronize + +jobs: + main: + runs-on: ubuntu-latest + steps: + - name: generate build path + run: echo "::set-output name=build::${{github.event.number}}/$(date +%Y-%m-%d_%H-%M-%S)/" | sed 's_build::/*_build::_' + id: build-path + + - name: checkout code + uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.ref }} + repository: ${{ github.event.pull_request.head.repo.full_name }} + + - name: get Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + + - name: download dependencies + run: npm ci + + - name: build app + run: npm run build + env: + PUBLIC_URL: /${{ steps.build-path.outputs.build }} + CI: false + + - name: prepare git + run: | + git config --global user.name "Admin Interface Deployment Bot" + git config --global user.email "cloud@opencast.org" + + - name: prepare GitHub SSH key + env: + DEPLOY_KEY: ${{ secrets.DEPLOY_KEY_TEST }} + run: | + install -dm 700 ~/.ssh/ + echo "${DEPLOY_KEY}" > ~/.ssh/id_ed25519 + chmod 600 ~/.ssh/id_ed25519 + ssh-keyscan github.com >> ~/.ssh/known_hosts + + - name: wait for previous workflows to finish + uses: softprops/turnstyle@v1 + with: + same-branch-only: false + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: clone repository + run: | + git clone "git@github.com:opencast/opencast-admin-interface-test.git" admin-interface-test + + - name: switch to gh-pages branch + working-directory: admin-interface-test + run: | + git checkout gh-pages + + - name: include mock data + working-directory: admin-interface-test + run: cp -rv ../test/GET/* . + + - name: store build + working-directory: admin-interface-test + env: + DEPLOY_PATH: ${{ steps.build-path.outputs.build }} + run: | + mkdir -p ${DEPLOY_PATH} + cp -rv ../build/* ${DEPLOY_PATH} + + - name: generate index.html + working-directory: admin-interface-test + run: | + echo '' >> index.html + + - name: commit new version + working-directory: admin-interface-test + run: | + git add . + git commit -m "Build ${{ steps.build-path.outputs.build }}" + + - name: push updates + working-directory: admin-interface-test + run: | + git push origin gh-pages + + - name: add comment with deployment location + uses: thollander/actions-comment-pull-request@v2 + with: + message: > + This pull request is deployed at + [test.admin-interface.opencast.org/${{ steps.build-path.outputs.build }} + ](https://test.admin-interface.opencast.org/${{ steps.build-path.outputs.build }}). + + It might take a few minutes for it to become available.