Skip to content

CI Test

CI Test #1

Workflow file for this run

name: CI
# release: <default> (release title)
# dispatch (all): Manual release for $target_release_tag
# dispatch (specified): Manual release for $target_release_tag (subproject: $target_subproject)
run-name: |-
${{ github.event_name == 'workflow_dispatch' && format('Manual release for {0}{1}', inputs.target_release_tag, inputs.target_subproject && format(' (subproject: {0})', inputs.target_subproject) || '') || '' }}
on:
push:
paths:
- "*.gradle"
- "gradle.properties"
- "src/**"
- "versions/**"
- ".github/**"
release:
types:
- published
pull_request:
workflow_dispatch:
inputs:
target_subproject:
description: |-
The subproject name(s) of the specified Minecraft version to be released, seperated with ",".
By default all subprojects will be released.
type: string
required: false
default: ''
target_release_tag:
description: |-
The tag of the release you want to append the artifact to.
type: string
required: true
jobs:
show_action_parameters:
runs-on: ubuntu-latest
steps:
- name: Show action parameters
run: |
cat <<EOF > $GITHUB_STEP_SUMMARY
## Action Parameters
- target_subproject: \`${{ inputs.target_subproject }}\`
- target_release_tag: \`${{ inputs.target_release_tag }}\`
EOF
generate_matrix:
if: ${{ github.event_name != 'pull_request' }}
uses: ./.github/workflows/generate_matrix.yml
with:
target_subproject: ${{ inputs.target_subproject }}
validate_target_subproject:
runs-on: ubuntu-latest
steps:
- name: Checkout the sources
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Validate target subproject
if: ${{ github.event_name == 'workflow_dispatch' }}
# ubuntu-22.04 uses Python 3.10.6
run: python3 .github/workflows/scripts/validate_subproject.py
env:
TARGET_SUBPROJECT: ${{ inputs.target_subproject }}
# Ensure the input release tag is valid.
validate_release:
runs-on: ubuntu-latest
steps:
- name: Get github release information
if: ${{ github.event_name == 'workflow_dispatch' }}
uses: cardinalby/[email protected]
env:
GITHUB_TOKEN: ${{ github.token }}
with:
tag: ${{ inputs.target_release_tag }}
prepare_build_info:
if: ${{ !startsWith(github.event.ref, 'refs/tags/') }}
runs-on: ubuntu-latest
outputs:
build_publish: ${{ steps.build_info.outputs.build_publish }}
build_target_subprojects: ${{ steps.subprojects.outputs.subprojects }}
build_version_type: ${{ steps.build_info.outputs.build_version_type }}
publish_channel: ${{ steps.build_info.outputs.publish_channel }}
publish_target_release_tag: ${{ steps.build_info.outputs.publish_target_release_tag }}
steps:
- name: Checkout the sources
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Determining build info
id: build_info
run: |
if [ ${{ github.event_name }} == 'push' ]
then
build_publish=true
build_version_type=BETA
publish_channel=dev
elif [ ${{ github.event_name }} == 'release' ]
then
build_publish=true
build_version_type=RELEASE
publish_channel=stable
publish_target_release_tag=${{ github.event.ref }}
elif [ ${{ github.event_name }} == 'pull_request' ]
then
build_publish=false
build_version_type=PULL_REQUEST
elif [ ${{ github.event_name }} == 'workflow_dispatch' ]
then
build_publish=true
build_version_type=RELEASE
publish_channel=stable
publish_target_release_tag=${{ inputs.target_release_tag }}
else
echo Unknown github event name $GITHUB_EVENT_NAME
exit 1
fi
echo "build_publish=$build_publish" >> $GITHUB_OUTPUT
echo "build_version_type=$build_version_type" >> $GITHUB_OUTPUT
echo "publish_channel=$publish_channel" >> $GITHUB_OUTPUT
echo "publish_target_release_tag=$publish_target_release_tag" >> $GITHUB_OUTPUT
cat <<EOF > $GITHUB_STEP_SUMMARY
## Determining build info
- build_publish: \`$build_publish\`
- build_version_type: \`$build_version_type\`
- publish_channel: \`$publish_channel\`
- publish_target_release_tag: \`$publish_target_release_tag\`
EOF
- name: Determining subprojects
id: subprojects
run: python3 .github/workflows/scripts/determining_subproject.py
env:
TARGET_SUBPROJECT: ${{ github.event.inputs.target_subproject }}
prepare_publish_info:
if: ${{ needs.prepare_build_info.outputs.build_publish == 'true' }}
runs-on: ubuntu-latest
needs:
- prepare_build_info
outputs:
publish_channel: ${{ needs.prepare_build_info.outputs.publish_channel }}
publish_target_release_tag: ${{ needs.prepare_build_info.outputs.publish_target_release_tag }}
steps:
- name: Checkout the sources
uses: actions/checkout@v4
build:
if: ${{ contains(github.event.head_commit.message, '[build skip]') == false }}
needs:
- prepare_build_info
- validate_target_subproject
- validate_release
uses: ./.github/workflows/build.yml
secrets: inherit
with:
build_publish: ${{ needs.prepare_build_info.outputs.build_publish }}
build_version_type: ${{ needs.prepare_build_info.outputs.build_version_type }}
target_subproject: ${{ needs.prepare_build_info.outputs.build_target_subprojects }}
publish:
if: ${{ github.event_name != 'pull_request' }}
strategy:
matrix: ${{ fromJson(needs.generate_matrix.outputs.matrix) }}
needs:
- build
- generate_matrix
- prepare_publish_info
uses: ./.github/workflows/publish.yml
secrets: inherit
with:
publish_channel: ${{ needs.prepare_publish_info.outputs.publish_channel }}
publish_mc_ver: ${{ matrix.mc_ver }}
publish_platform: ${{ matrix.platform }}
publish_target_release_tag: ${{ needs.prepare_publish_info.outputs.publish_target_release_tag }}