feat(api): multi lang support for actions #2543
Workflow file for this run
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 | |
on: | |
push: | |
branches: [main, release/*, release] | |
pull_request: | |
jobs: | |
prepare: | |
runs-on: ubuntu-latest | |
outputs: | |
ui: ${{ steps.ui.outputs.any_changed }} | |
api: ${{ steps.api.outputs.any_changed }} | |
engine: ${{ steps.engine.outputs.any_changed }} | |
websocket: ${{ steps.websocket.outputs.any_changed }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: changed files for api | |
id: api | |
uses: tj-actions/changed-files@v41 | |
with: | |
files: | | |
api/** | |
.github/workflows/ci.yml | |
.github/workflows/ci_api.yml | |
.github/workflows/build_api.yml | |
.github/workflows/deploy_api_nightly.yml | |
CHANGELOG.md | |
- name: changed files for ui | |
id: ui | |
uses: tj-actions/changed-files@v41 | |
with: | |
files: | | |
ui/** | |
.github/workflows/ci.yml | |
.github/workflows/ci_ui.yml | |
.github/workflows/build_ui.yml | |
.github/workflows/deploy_ui_nightly.yml | |
CHANGELOG.md | |
- name: changed files for websocket | |
id: websocket | |
uses: tj-actions/changed-files@v41 | |
with: | |
files: | | |
websocket/** | |
.github/workflows/ci.yml | |
.github/workflows/ci_websocket.yml | |
CHANGELOG.md | |
- name: changed files for engine | |
id: engine | |
uses: tj-actions/changed-files@v41 | |
with: | |
files: | | |
engine/** | |
.github/workflows/ci.yml | |
.github/workflows/ci_engine.yml | |
CHANGELOG.md | |
ci-api: | |
needs: prepare | |
if: needs.prepare.outputs.api == 'true' | |
uses: ./.github/workflows/ci_api.yml | |
ci-ui: | |
needs: prepare | |
if: needs.prepare.outputs.ui == 'true' | |
uses: ./.github/workflows/ci_ui.yml | |
ci-websocket: | |
needs: prepare | |
if: needs.prepare.outputs.websocket == 'true' | |
uses: ./.github/workflows/ci_websocket.yml | |
ci-engine: | |
needs: prepare | |
if: needs.prepare.outputs.engine == 'true' | |
uses: ./.github/workflows/ci_engine.yml | |
ci: | |
runs-on: ubuntu-latest | |
needs: | |
- ci-api | |
- ci-ui | |
- ci-websocket | |
- ci-engine | |
if: '!failure()' | |
steps: | |
- run: echo OK | |
ci-collect-info: | |
name: Collect information | |
needs: ci | |
if: '!failure()' | |
runs-on: ubuntu-latest | |
outputs: | |
sha_short: ${{ steps.info.outputs.sha_short || 'blank' }} | |
new_tag: ${{ steps.info.outputs.new_tag || 'blank' }} | |
new_tag_short: ${{ steps.info.outputs.new_tag_short || 'blank' }} | |
name: ${{ steps.info.outputs.name || 'blank' }} | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- name: Fetch tags | |
run: git fetch --prune --unshallow --tags | |
- name: Get info | |
id: info | |
env: | |
BRANCH: ${{github.ref_name}} | |
run: | | |
echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT | |
echo "BRANCH=$BRANCH" | |
if [[ "$BRANCH" = "release" || "$BRANCH" = "release/"* ]]; then | |
TAG=$(git tag --points-at HEAD) | |
if [[ ! -z "$TAG" ]]; then | |
echo "new_tag=$TAG" >> $GITHUB_OUTPUT | |
echo "new_tag_short=${TAG#v}" >> $GITHUB_OUTPUT | |
else | |
echo "name=rc" >> $GITHUB_OUTPUT | |
fi | |
else | |
echo "name=nightly" >> $GITHUB_OUTPUT | |
fi | |
- name: Show info | |
env: | |
SHA_SHORT: ${{ steps.info.outputs.sha_short }} | |
NEW_TAG: ${{ steps.info.outputs.new_tag }} | |
NEW_TAG_SHORT: ${{ steps.info.outputs.new_tag_short }} | |
NAME: ${{ steps.info.outputs.name }} | |
run: echo "sha_short=$SHA_SHORT, new_tag=$NEW_TAG, new_tag_short=$NEW_TAG_SHORT, name=$NAME" | |
build-and-deploy-api: | |
needs: | |
- ci | |
- ci-api | |
- ci-collect-info | |
uses: ./.github/workflows/build_deploy_api.yml | |
if: ${{ !failure() && needs.ci-api.result == 'success' && github.event_name == 'push' && (github.ref_name == 'main' || github.ref_name == 'release' || startsWith(github.ref_name, 'release/')) }} | |
with: | |
sha_short: ${{ needs.ci-collect-info.outputs.sha_short }} | |
new_tag: ${{ needs.ci-collect-info.outputs.new_tag }} | |
new_tag_short: ${{ needs.ci-collect-info.outputs.new_tag_short }} | |
name: ${{ needs.ci-collect-info.outputs.name }} | |
sha: ${{ github.sha }} | |
secrets: inherit | |
build-and-deploy-ui: | |
needs: | |
- ci | |
- ci-ui | |
- ci-collect-info | |
uses: ./.github/workflows/build_deploy_ui.yml | |
if: ${{ !failure() && needs.ci-ui.result == 'success' && github.event_name == 'push' && (github.ref_name == 'main' || github.ref_name == 'release' || startsWith(github.ref_name, 'release/')) }} | |
with: | |
sha_short: ${{ needs.ci-collect-info.outputs.sha_short }} | |
new_tag: ${{ needs.ci-collect-info.outputs.new_tag }} | |
new_tag_short: ${{ needs.ci-collect-info.outputs.new_tag_short }} | |
name: ${{ needs.ci-collect-info.outputs.name }} | |
sha: ${{ github.sha }} | |
secrets: inherit | |
build-and-deploy-websocket: | |
needs: | |
- ci | |
- ci-websocket | |
- ci-collect-info | |
uses: ./.github/workflows/build_deploy_websocket.yml | |
if: ${{ !failure() && needs.ci-websocket.result == 'success' && github.event_name == 'push' && (github.ref_name == 'main' || github.ref_name == 'release' || startsWith(github.ref_name, 'release/')) }} | |
with: | |
sha_short: ${{ needs.ci-collect-info.outputs.sha_short }} | |
new_tag: ${{ needs.ci-collect-info.outputs.new_tag }} | |
new_tag_short: ${{ needs.ci-collect-info.outputs.new_tag_short }} | |
name: ${{ needs.ci-collect-info.outputs.name }} | |
sha: ${{ github.sha }} | |
secrets: inherit |