Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/deploy-main-branches.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ jobs:
- name: Get Node.js
uses: actions/setup-node@v5
with:
node-version: $NODE_VERSION
node-version: ${{ env.NODE_VERSION }}

- name: Run npm ci
run: npm ci
Expand Down
37 changes: 37 additions & 0 deletions .github/workflows/pr-build-container-image.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: PRs » Build container image

on:
push:
branches-ignore:
- 'dependabot/**'
pull_request:
types:
- opened
- synchronize

jobs:
container-image-build:
runs-on: ubuntu-latest
steps:
- name: Extract metadata (tags, labels)
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.repository }}

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3

- name: Build and push images
uses: docker/build-push-action@v6
with:
push: false # This is handled in another workflow!
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
outputs: type=docker,dest=${{ runner.temp }}/build.tar

- name: Upload docker image to GHA
uses: actions/upload-artifact@v4
with:
name: build
path: ${{ runner.temp }}/build.tar
97 changes: 97 additions & 0 deletions .github/workflows/pr-build-test-branch.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
name: PRs » Build Pull Request Page

on:
pull_request:
types:
- opened
- synchronize

concurrency:
group: pull-request-page
cancel-in-progress: false

env:
NODE_VERSION: 24

jobs:
detect-repo-owner:
runs-on: ubuntu-latest
outputs:
server: ${{ steps.test-server.outputs.server }}
branch: ${{ steps.branch-name.outputs.branch }}
steps:
- name: Checkout sources
uses: actions/checkout@v5

- name: Determine the correct test server
id: test-server
run: echo "server=https://`./.github/get-release-server.sh ${{ github.ref_name }}`" >> $GITHUB_OUTPUT

- name: Determine branch name
id: branch-name
run: |
#Temp becomes something like r/17.x
export TEMP=${{ github.ref_name }}
#Strip the r/ prefix, giving us just 17.x. If this is main/develop this does nothing
echo "branch=${TEMP#r\/}" >> $GITHUB_OUTPUT

build-pr:
runs-on: ubuntu-latest
needs: detect-repo-owner
steps:
- name: Generate build path
run: echo "build=${{github.event.number}}/$(date +%Y-%m-%d_%H-%M-%S)/" >> $GITHUB_OUTPUT
id: build-path

- name: Checkout sources
uses: actions/checkout@v5

- name: Get Node.js
uses: actions/setup-node@v5
with:
node-version: ${{ env.NODE_VERSION }}

- name: Run npm ci
run: npm ci

- name: Build the app
run: |
npm run build
mkdir -p admin-interface-test/${{ steps.build-path.outputs.build }}
mv build/* admin-interface-test/${{ steps.build-path.outputs.build }}/
tar cf ${{ runner.temp }}/build.tar admin-interface-test
env:
VITE_TEST_SERVER_URL: ${{needs.detect-repo-owner.outputs.server}}
NODE_ENV: development
VITE_TEST_SERVER_AUTH: "admin:opencast"

- name: Upload build to GHA
uses: actions/upload-artifact@v4
with:
name: build
path: ${{ runner.temp }}/build.tar


check-no-modified-translations:
name: Translations only via Crowdin
if: github.repository_owner == 'opencast'
runs-on: ubuntu-latest

steps:
- name: Checkout Sources
uses: actions/checkout@v4

- name: Get changed locale files
uses: dorny/paths-filter@v3
id: filter_locales
with:
filters: | # !(pattern) matches anything but pattern
locales:
- 'src/i18n/org/opencastproject/adminui/languages/!lang-(en_US)*.json'

- name: Check for changes in translations
if: steps.filter_locales.outputs.locales == true
uses: actions/github-script@v7
with:
script: |
core.setFailed('You should not alter translations outside of Crowdin.')
32 changes: 14 additions & 18 deletions .github/workflows/pr-deploy-container-image.yml
Original file line number Diff line number Diff line change
@@ -1,27 +1,19 @@
name: PRs » Publish container image
name: PRs » Push container image

on:
push:
branches-ignore:
- 'dependabot/**'
pull_request:
workflow_run:
workflows: ["PRs » Build container image"]
types:
- opened
- synchronize
- completed

jobs:
container-image:
container-image-deploy:
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
pull-requests: write
steps:
- uses: actions/checkout@v5

- name: Prepare commit hash
run: git rev-parse HEAD > commit

- name: Log in to the container registry
uses: docker/login-action@v4
with:
Expand All @@ -36,12 +28,16 @@ jobs:
images: ghcr.io/${{ github.repository }}

- name: Build and push images
uses: docker/build-push-action@v7
uses: docker/build-push-action@v6
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
name: build
path: ${{ runner.temp }}
run-id: ${{ github.event.workflow_run.id }}

- name: Load image
run: |
docker load --input ${{ runner.temp }}/build.tar
docker push ghcr.io/${{ github.repository }}

- name: Add comment
if: github.event_name == 'pull_request'
Expand Down
98 changes: 11 additions & 87 deletions .github/workflows/pr-deploy-test-branch.yml
Original file line number Diff line number Diff line change
@@ -1,75 +1,19 @@
name: PRs » Publish Pull Request Page

on:
pull_request:
workflow_run:
workflows: ["PRs » Build Pull Request Page"]
types:
- opened
- synchronize
- completed

concurrency:
group: pull-request-page
cancel-in-progress: false

env:
NODE_VERSION: 24

jobs:
detect-repo-owner:
if: github.repository_owner == 'opencast'
runs-on: ubuntu-latest
outputs:
server: ${{ steps.test-server.outputs.server }}
branch: ${{ steps.branch-name.outputs.branch }}
steps:
- name: Checkout sources
uses: actions/checkout@v5

- name: Determine the correct test server
id: test-server
run: echo "server=https://`./.github/get-release-server.sh ${{ github.ref_name }}`" >> $GITHUB_OUTPUT

- name: Determine branch name
id: branch-name
run: |
#Temp becomes something like r/17.x
export TEMP=${{ github.ref_name }}
#Strip the r/ prefix, giving us just 17.x. If this is main/develop this does nothing
echo "branch=${TEMP#r\/}" >> $GITHUB_OUTPUT

deploy-pr:
runs-on: ubuntu-latest
needs: detect-repo-owner
steps:
- name: Generate build path
run: echo "build=${{github.event.number}}/$(date +%Y-%m-%d_%H-%M-%S)/" >> $GITHUB_OUTPUT
id: build-path

- name: Checkout sources
uses: actions/checkout@v5

- name: Ensure our node version matches the main repo's version
run: |
[[ "$(curl -s https://raw.githubusercontent.com/opencast/opencast/refs/heads/${{ github.base_ref }}/pom.xml | \
grep node.version | grep -Eo 'v[0-9.]+' | cut -f 1 -d '.' | cut -c 2-)" == "$NODE_VERSION" ]] \
&& exit 0 \
|| (echo "Node version does not match"; exit 1)

- name: Get Node.js
uses: actions/setup-node@v5
with:
node-version: $NODE_VERSION

- name: Run npm ci
run: npm ci

- name: Build the app
run: |
npm run build
env:
VITE_TEST_SERVER_URL: ${{needs.detect-repo-owner.outputs.server}}
NODE_ENV: development
VITE_TEST_SERVER_AUTH: "admin:opencast"

- name: Prepare git
run: |
git config --global user.name "Admin Interface Deployment Bot"
Expand All @@ -95,12 +39,16 @@ jobs:
run: |
git clone -b gh-pages "git@github.com:${{ github.repository_owner }}/admin-interface-test.git" admin-interface-test

- name: Fetch build from GHA
uses: actions/download-artifact@v4
with:
name: build
path: ${{ runner.temp }}/build.tar
run-id: ${{ github.event.workflow_run.id }}

- name: Store build in the clone
env:
DEPLOY_PATH: admin-interface-test/${{ steps.build-path.outputs.build }}
run: |
mkdir -p ${DEPLOY_PATH}
cp -rv build/* ${DEPLOY_PATH}
tar xf ${{ runner.temp }}/build.tar

- name: Cleanup test repository
working-directory: admin-interface-test
Expand Down Expand Up @@ -142,27 +90,3 @@ jobs:
](https://test.admin-interface.opencast.org/${{ steps.build-path.outputs.build }}).

It might take a few minutes for it to become available.

check-no-modified-translations:
name: Translations only via Crowdin
if: github.repository_owner == 'opencast'
runs-on: ubuntu-latest

steps:
- name: Checkout Sources
uses: actions/checkout@v4

- name: Get changed locale files
uses: dorny/paths-filter@v4
id: filter_locales
with:
filters: | # !(pattern) matches anything but pattern
locales:
- 'src/i18n/org/opencastproject/adminui/languages/!lang-(en_US)*.json'

- name: Check for changes in translations
if: steps.filter_locales.outputs.locales == true
uses: actions/github-script@v9
with:
script: |
core.setFailed('You should not alter translations outside of Crowdin.')
2 changes: 1 addition & 1 deletion .github/workflows/pr-test-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
- name: Get Node.js
uses: actions/setup-node@v5
with:
node-version: $NODE_VERSION
node-version: ${{ env.NODE_VERSION }}

- name: Run npm ci
run: npm ci
Expand Down
Loading