CI Univer #12
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI Univer | |
on: | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
release-versions: | |
name: ⚙️ Variables Setup | |
runs-on: ubuntu-latest | |
outputs: | |
release: ${{ steps.by-tag.outputs.release }} | |
latest-release: ${{ steps.latest.outputs.latest-release }} | |
docker-tag: ${{ steps.docker.outputs.docker-tag }} | |
gh-docker-tag: ${{ steps.docker.outputs.gh-docker-tag }} | |
lowercase-repo: ${{ steps.var.outputs.lowercase-repo }} | |
rc-dockerfile: '${{ github.workspace }}/apps/meteor/.docker/Dockerfile' | |
rc-docker-tag: '${{ steps.docker.outputs.gh-docker-tag }}.official' | |
rc-dockerfile-alpine: '${{ github.workspace }}/apps/meteor/.docker/Dockerfile.alpine' | |
rc-docker-tag-alpine: '${{ steps.docker.outputs.gh-docker-tag }}.alpine' | |
node-version: ${{ steps.var.outputs.node-version }} | |
# this is 100% intentional, secrets are not available for forks, so ee-tests will always fail | |
# to avoid this, we are using a dummy license, expiring at 2025-06-31 | |
enterprise-license: X/XumwIkgwQuld0alWKt37lVA90XjKOrfiMvMZ0/RtqsMtrdL9GoAk+4jXnaY1b2ePoG7XSzGhuxEDxFKIWJK3hIKGNTvrd980LgH5sM5+1T4P42ivSpd8UZi0bwjJkCFLIu9RozzYwslGG0IehMxe0S6VjcO0UYlUJtbMCBHuR2WmTAmO6YVU3ln+pZCbrPFaTPSS1RovhKaNCNkZwIx/CLWW8UTXUuFV/ML4PbKKVoa5nvvJwPeatgL7UCnlSD90lfCiiuikpzj/Y/JLkIL6velFbwNxsrxg9iRJ2k0sKheMMSmlTiGzSvZUm+na5WQq91aKGncih+DmaEZA7QGrjp4eoA0dqTk6OmItsy0fHmQhvZIOKNMeO7vNQiLbaSV6rqibrzu7WPpeIvsvL57T1h37USoCSB6+jDqkzdfoqIpz8BxTiJDj1d8xGPJFVrgxoqQqkj9qIP/gCaEz5DF39QFv5sovk4yK2O8fEQYod2d14V9yECYl4szZPMk1IBfCAC2w7czWGHHFonhL+CQGT403y5wmDmnsnjlCqMKF72odqfTPTI8XnCvJDriPMWohnQEAGtTTyciAhNokx/mjAVJ4NeZPcsbm4BjhvJvnjxx/BhYhBBTNWPaCSZzocfrGUj9Z+ZA7BEz+xAFQyGDx3xRzqIXfT0G7w8fvgYJMU= | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
sparse-checkout: | | |
package.json | |
sparse-checkout-cone-mode: false | |
ref: ${{ github.ref }} | |
- id: var | |
run: | | |
LOWERCASE_REPOSITORY=$(echo "${{ github.repository_owner }}" | tr "[:upper:]" "[:lower:]") | |
echo "LOWERCASE_REPOSITORY: ${LOWERCASE_REPOSITORY}" | |
echo "lowercase-repo=${LOWERCASE_REPOSITORY}" >> $GITHUB_OUTPUT | |
NODE_VERSION=$(node -p "require('./package.json').engines.node") | |
echo "NODE_VERSION: ${NODE_VERSION}" | |
echo "node-version=${NODE_VERSION}" >> $GITHUB_OUTPUT | |
- id: by-tag | |
run: | | |
if echo "$GITHUB_REF_NAME" | grep -Eq '^[0-9]+\.[0-9]+\.[0-9]+$' ; then | |
RELEASE="latest" | |
elif echo "$GITHUB_REF_NAME" | grep -Eq '^[0-9]+\.[0-9]+\.[0-9]+-rc\.[0-9]+$' ; then | |
RELEASE="release-candidate" | |
fi | |
echo "RELEASE: ${RELEASE}" | |
echo "release=${RELEASE}" >> $GITHUB_OUTPUT | |
- id: latest | |
run: | | |
LATEST_RELEASE="$( | |
git -c 'versionsort.suffix=-' ls-remote -t --exit-code --refs --sort=-v:refname "https://github.com/$GITHUB_REPOSITORY" '*' | | |
awk -F/ '$NF !~ /rc|beta/ { print $NF; exit }' | |
)" | |
echo "LATEST_RELEASE: ${LATEST_RELEASE}" | |
echo "latest-release=${LATEST_RELEASE}" >> $GITHUB_OUTPUT | |
- id: docker | |
run: | | |
if [[ '${{ github.event_name }}' == 'pull_request' ]]; then | |
DOCKER_TAG="pr-${{ github.event.number }}" | |
else | |
DOCKER_TAG="gh-${{ github.run_id }}" | |
fi | |
echo "DOCKER_TAG: ${DOCKER_TAG}" | |
echo "gh-docker-tag=${DOCKER_TAG}" >> $GITHUB_OUTPUT | |
packages-build: | |
name: 📦 Build Packages | |
needs: [release-versions] | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Github Info | |
run: | | |
echo "GITHUB_ACTION: $GITHUB_ACTION" | |
echo "GITHUB_ACTOR: $GITHUB_ACTOR" | |
echo "GITHUB_REF: $GITHUB_REF" | |
echo "GITHUB_HEAD_REF: $GITHUB_HEAD_REF" | |
echo "GITHUB_BASE_REF: $GITHUB_BASE_REF" | |
echo "github.event_name: ${{ github.event_name }}" | |
cat $GITHUB_EVENT_PATH | |
- name: Set Swap Space | |
uses: pierotofy/set-swap-space@master | |
with: | |
swap-size-gb: 4 | |
- uses: actions/checkout@v4 | |
- name: Setup NodeJS | |
uses: ./.github/actions/setup-node | |
with: | |
node-version: ${{ needs.release-versions.outputs.node-version }} | |
cache-modules: true | |
install: true | |
- name: Cache vite | |
uses: actions/cache@v3 | |
with: | |
path: ./node_modules/.vite | |
key: vite-local-cache-${{ runner.OS }}-${{ hashFiles('package.json') }} | |
restore-keys: | | |
vite-local-cache-${{ runner.os }}- | |
- uses: dtinth/setup-github-actions-caching-for-turbo@v1 | |
- name: Build Rocket.Chat Packages | |
run: yarn build | |
build: | |
name: 📦 Meteor Build - coverage | |
needs: [release-versions, packages-build] | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Collect Workflow Telemetry | |
uses: catchpoint/workflow-telemetry-action@v2 | |
with: | |
theme: dark | |
job_summary: true | |
comment_on_pr: false | |
- name: Github Info | |
run: | | |
echo "GITHUB_ACTION: $GITHUB_ACTION" | |
echo "GITHUB_ACTOR: $GITHUB_ACTOR" | |
echo "GITHUB_REF: $GITHUB_REF" | |
echo "GITHUB_HEAD_REF: $GITHUB_HEAD_REF" | |
echo "GITHUB_BASE_REF: $GITHUB_BASE_REF" | |
echo "github.event_name: ${{ github.event_name }}" | |
cat $GITHUB_EVENT_PATH | |
- uses: actions/checkout@v4 | |
- uses: ./.github/actions/meteor-build | |
with: | |
node-version: ${{ needs.release-versions.outputs.node-version }} | |
coverage: ${{ github.event_name != 'release' }} | |
build-docker-preview: | |
name: 🚢 Build Docker Image (preview) | |
runs-on: ubuntu-20.04 | |
needs: [build, release-versions] | |
if: github.event_name == 'release' || github.ref == 'refs/heads/develop' | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Restore build | |
uses: actions/download-artifact@v3 | |
with: | |
name: build | |
path: /tmp/build | |
- name: Unpack build | |
run: | | |
cd /tmp/build | |
tar xzf Rocket.Chat.tar.gz | |
rm Rocket.Chat.tar.gz | |
- name: Build Docker image | |
id: build-docker-image-preview | |
uses: ./.github/actions/build-docker-image | |
with: | |
root-dir: /tmp/build | |
docker-tag: ${{ needs.release-versions.outputs.gh-docker-tag }} | |
release: preview | |
username: ${{ secrets.CR_USER }} | |
password: ${{ secrets.CR_PAT }} | |
registry: "univer-acr-registry.cn-shenzhen.cr.aliyuncs.com" | |
namespace: "univer" | |
aliyun: 'yes' | |
deploy-k8s: | |
name: DeployK8s | |
runs-on: ubuntu-20.04 | |
needs: [build-docker-preview, release-versions] | |
steps: | |
- uses: peter-evans/repository-dispatch@v2 | |
with: | |
token: ${{ secrets.GH_TOKEN }} | |
repository: dream-num/helm-chart-private | |
event-type: dispatch-rocketchat | |
client-payload: '{"image":"univer-acr-registry-vpc.cn-shenzhen.cr.aliyuncs.com/univer/rocket.chat:${{ needs.release-versions.outputs.gh-docker-tag }}.preview"}' |