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.