diff --git a/.github/scripts/test_release_workflow.py b/.github/scripts/test_release_workflow.py index 6a55650..53f1b1d 100644 --- a/.github/scripts/test_release_workflow.py +++ b/.github/scripts/test_release_workflow.py @@ -5,8 +5,8 @@ from pathlib import Path import shutil import shlex -import subprocess import sys +import subprocess import tempfile import textwrap import unittest @@ -28,6 +28,7 @@ for stamps in ['normal', 'stamps']] MATRIX115 = ['World upgrade matrix', 'Prepare verified migration inputs', 'Validate release workflow'] + ['Historical world shard ' + str(i) for i in range(6)] CORE117 = ['Build, test, and audit', 'Analyze Java', 'Validation', 'Validate release workflow'] +CORE118 = ['Check hosted work policy', 'Build and audit locally qualified archives', 'Analyze Java', 'Validation', 'Validate release workflow'] MATRIX117 = [] MATRIX116 = ['World upgrade matrix', 'Prepare verified migration inputs', 'Validate release workflow'] + ['Historical world shard ' + str(i) for i in range(12)] MATRIX = [origin + ' / ' + stamps for origin in @@ -67,13 +68,14 @@ def validate(self, minecraft, names=None, mutation=None, release_exists=False, w '1.14.4': ('114041', 'master-1.14.4', '28.2.26'), '1.15.2': ('115021', 'master-1.15.2', '31.2.57'), '1.16.5': ('116051', 'master-1.16.5', '36.2.42'), - '1.17.1': ('117011', 'master-1.17.1', '37.1.1')}[minecraft] + '1.17.1': ('117011', 'master-1.17.1', '37.1.1'), + '1.18.2': ('118021', 'master-1.18.2', '40.3.12')}[minecraft] version = '2.4.2.' + suffix files={name:'C'*64 for name in ['main.jar','sources.jar','javadoc.jar','release.pom','CHANGELOG.txt','SHA256SUMS']} receipt={'schema':1,'source':SHA,'version':version,'files':files,'evidence_sha256':'F'*64,'qualified_locally':True,'manual_accepted':True} if local_receipt is not None:receipt=local_receipt values = dict(minecraft_version=minecraft, forge_version=forge, loader_name='forge', loader_code='1', - java_version='16' if minecraft=='1.17.1' else '8', java_toolchain_version='16.0.2+7' if minecraft=='1.17.1' else '8.0.502+7', gradle_java_version='17', mod_id='lootablebodies', + java_version='17' if minecraft=='1.18.2' else '16' if minecraft=='1.17.1' else '8', java_toolchain_version='17.0.20.1+1' if minecraft=='1.18.2' else '16.0.2+7' if minecraft=='1.17.1' else '8.0.502+7', gradle_java_version='17', mod_id='lootablebodies', mod_artifact='LootableBodies', mod_group='zone.moddev.mc.lootablebodies', mod_license='LGPL-2.1-only', curseforge_project_id='240968', mod_version=version) if mutation: @@ -83,12 +85,14 @@ def validate(self, minecraft, names=None, mutation=None, release_exists=False, w '1.14.4': MATRIX114 + ['Validate release workflow'], '1.15.2': MATRIX115, '1.16.5': MATRIX116}.get(minecraft, []) if names is None else names if minecraft=='1.17.1' and names is None:checks=CORE117+MATRIX117 + if minecraft=='1.18.2' and names is None:checks=CORE118 def command(args, **options): if args[0] == 'git': return SHA + '\n' - if '/actions/workflows/native117.yml/' in args[-1]: - row=dict(id=117,head_sha=SHA,head_branch='master-1.17.1',event='push',path='.github/workflows/native117.yml',conclusion='success') + if any('/actions/workflows/native'+code+'.yml/' in args[-1] for code in ['117','118']): + code='118' if minecraft=='1.18.2' else '117' + row=dict(id=int(code),head_sha=SHA,head_branch=branch,event='push',path='.github/workflows/native'+code+'.yml',conclusion='success') if qualification:row.update(qualification) return json.dumps({'workflow_runs':[row]}) if '/actions/workflows/' in args[-1]: @@ -107,12 +111,12 @@ def existing(args, **options): 'MINECRAFT_VERSION': minecraft, 'SOURCE_BRANCH': branch, 'GITHUB_OUTPUT': str(Path(directory) / 'output'), 'LOCAL_QUALIFICATION':json.dumps(receipt) if receipt else ''}), \ - patch('pathlib.Path.read_text', side_effect=['\n'.join(k+'='+v for k,v in values.items()),json.dumps({'files':files})]), \ + patch('pathlib.Path.read_text', side_effect=['\n'.join(k+'='+v for k,v in values.items()),json.dumps({'files':files,'local_qualification_complete':True,'qualification_integrity_status':'verified'})]), \ patch('subprocess.check_output', side_effect=command), patch('subprocess.run', side_effect=existing): exec(compile(code, 'release-preflight', 'exec'), {}) - def test_future_118_candidate_cannot_dispatch_publication(self): - code, values = self.select('2.4.9.118021') + def test_future_119_candidate_cannot_dispatch_publication(self): + code, values = self.select('2.4.10.119041') self.assertNotEqual(0, code) self.assertEqual({}, values) @@ -284,6 +288,39 @@ def test_117_promotes_exact_six_files_and_rejects_changed_or_extra_bytes(self): with self.assertRaises(SystemExit):exec(compile(code,'extra-native117-promotion','exec'),{}) finally:os.chdir(previous) + def test_118_routes_to_the_accepted_target_and_requires_only_artifact_checks(self): + code,values=self.select('2.4.9.118021') + self.assertEqual(0,code);self.assertEqual('master-1.18.2',values['source_branch']) + self.validate('1.18.2') + for missing in CORE118: + with self.subTest(missing=missing),self.assertRaises(SystemExit): + self.validate('1.18.2',names=[x for x in CORE118 if x!=missing]) + + def test_118_rejects_other_run_inputs_missing_receipt_audit_or_java(self): + for mutation in [{'head_sha':'b'*40},{'head_branch':'master-1.17.1'},{'event':'pull_request'},{'path':'.github/workflows/native117.yml'},{'conclusion':'failure'}]: + with self.subTest(mutation=mutation),self.assertRaises(SystemExit):self.validate('1.18.2',qualification=mutation) + for kwargs in [{'audit_success':False},{'local_receipt':{}},{'mutation':{'java_version':'8'}},{'mutation':{'java_toolchain_version':'17.0.1+12'}}]: + with self.subTest(kwargs=kwargs),self.assertRaises(SystemExit):self.validate('1.18.2',**kwargs) + + def test_118_staging_downloads_exact_inputs_without_build_tests_or_sdk(self): + workflow=WORKFLOW.read_text() + step=workflow.split('- name: Verify all six native118 bytes before publication',1)[1].split(' - name:',1)[0] + self.assertIn('python3 -B tools/native118_build.py --bundle build/release/bundle',step) + for forbidden in ['gradlew','native_runtime','unittest','prepare_native','xvfb']:self.assertNotIn(forbidden,step) + legacy=workflow.split('- name: Build, test and audit the release',1)[1].split(' - name:',1)[0] + self.assertIn("minecraft_version != '1.18.2'",legacy) + + def test_identity_changes_are_rejected(self): + for mutation in [{'mod_id': 'other'}, {'minecraft_version': '1.10.2'}, {'mod_license': 'CC0-1.0'}]: + with self.subTest(mutation=mutation), self.assertRaises(SystemExit): + self.validate('1.11.2', mutation=mutation) + + def test_existing_release_is_not_uploaded_again(self): + with self.assertRaises(SystemExit): + self.validate('1.10.2', release_exists=True) + + + def run_staging_fixture(self,root,version,mutation=None): bundle=root/'build/release/bundle';bundle.mkdir(parents=True) prefix='LootableBodies-'+version @@ -308,14 +345,16 @@ def run_staging_fixture(self,root,version,mutation=None): code=code.replace("python3 - <<'PY'",shlex.quote(Path(sys.executable).as_posix())+" - <<'PY'") return subprocess.run([shell,'-lc',code],cwd=root,env=env,capture_output=True,text=True) + def test_staging_uses_only_the_promoted_six_file_bundle(self): - for version in ['2.4.7.116051','2.4.8.117011']: + for version in ['2.4.7.116051','2.4.8.117011','2.4.9.118021']: with self.subTest(version=version),tempfile.TemporaryDirectory() as d: root=Path(d);result=self.run_staging_fixture(root,version) self.assertEqual(0,result.returncode,result.stdout+'\n'+result.stderr) self.assertFalse((root/'build/release/SHA256SUMS').exists()) self.assertIn('LootableBodies-'+version+'.jar',(root/'summary.txt').read_text()) + def test_staging_missing_or_extra_file_fails_before_upload(self): for mutation in ['missing','extra']: with self.subTest(mutation=mutation),tempfile.TemporaryDirectory() as d: @@ -323,14 +362,6 @@ def test_staging_missing_or_extra_file_fails_before_upload(self): self.assertNotEqual(0,result.returncode) self.assertIn('missing or unexpected files',result.stdout+result.stderr) - def test_identity_changes_are_rejected(self): - for mutation in [{'mod_id': 'other'}, {'minecraft_version': '1.10.2'}, {'mod_license': 'CC0-1.0'}]: - with self.subTest(mutation=mutation), self.assertRaises(SystemExit): - self.validate('1.11.2', mutation=mutation) - - def test_existing_release_is_not_uploaded_again(self): - with self.assertRaises(SystemExit): - self.validate('1.10.2', release_exists=True) def test_112_artifact_audit_skips_only_explicitly_scoped_out_builds(self): text=WORKFLOW.with_name('artifact-audit-1.12.yml').read_text() @@ -354,6 +385,7 @@ def job(name,conclusion,status='completed'):return dict(name=name,conclusion=con self.assertIn("needs: scope",text) self.assertIn("if: needs.scope.outputs.required == 'true'",text) + def test_tag_at_another_commit_is_rejected(self): with self.assertRaises(SystemExit): self.validate('1.10.2', wrong_tag=True) diff --git a/.github/workflows/artifact-audit-1.18.yml b/.github/workflows/artifact-audit-1.18.yml new file mode 100644 index 0000000..e14f0b5 --- /dev/null +++ b/.github/workflows/artifact-audit-1.18.yml @@ -0,0 +1,48 @@ +name: Audit LootableBodies 1.18 artifacts +run-name: Audit 1.18.2 artifacts from ${{ github.event.workflow_run.head_sha }} +on: + workflow_run: + workflows: [LootableBodies 1.18 CI] + types: [completed] +permissions: + contents: read + actions: read +jobs: + audit: + if: >- + github.repository == 'MinecraftModDevelopmentMods/LootableBodies' && + github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.event == 'push' && + github.event.workflow_run.head_branch == 'master-1.18.2' + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + with: + ref: ${{ github.event.workflow_run.head_sha }} + - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8 + with: + name: LootableBodies-1.18.2-${{ github.event.workflow_run.head_sha }} + run-id: ${{ github.event.workflow_run.id }} + github-token: ${{ github.token }} + path: audited + - name: Independently verify every locally qualified byte + env: + SOURCE_SHA: ${{ github.event.workflow_run.head_sha }} + run: | + python3 -B tools/native118_build.py --bundle audited + python3 - <<'PY' + import json,os + from pathlib import Path + accepted=json.loads(Path('.github/release118.json').read_text()) + Path('independent-audit.json').write_text(json.dumps({'source':os.environ['SOURCE_SHA'],'files':accepted['files'],'all_six_exact':True,'identical_to_locally_audited_bundle':True},indent=2)+'\n') + PY + # Exact hashes reuse the local class61/licence/identity/mapping audit. + # This independent receipt is a byte match, not a fresh gameplay run or + # another Gradle/Forge preparation. The build job audits new archives. + - name: Retain independent audit evidence + if: always() + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 + with: + name: native118-independent-audit-${{ github.event.workflow_run.head_sha }} + if-no-files-found: error + path: independent-audit.json diff --git a/.github/workflows/deploy-release.yml b/.github/workflows/deploy-release.yml index c752689..45ecf5e 100644 --- a/.github/workflows/deploy-release.yml +++ b/.github/workflows/deploy-release.yml @@ -5,7 +5,7 @@ on: workflow_dispatch: inputs: release_version: - description: Complete version from gradle.properties, ending in 110021, 111021, 112021, 113021, 114041, 115021, 116051 or 117011. + description: Complete version from gradle.properties, ending in 110021, 111021, 112021, 113021, 114041, 115021, 116051, 117011 or 118021. required: true type: string curseforge_release_level: @@ -20,7 +20,7 @@ on: default: false type: boolean local_qualification: - description: Hash-bound local qualification receipt, required for the 1.17.1 release. + description: Hash-bound local qualification receipt, required for the 1.17.1 and 1.18.2 releases. required: false default: '' type: string @@ -54,7 +54,7 @@ jobs: set -euo pipefail [[ "$GITHUB_REPOSITORY" == 'MinecraftModDevelopmentMods/LootableBodies' ]] [[ "$GITHUB_REF" == 'refs/heads/master-1.12' ]] - [[ "$RELEASE_VERSION" =~ ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(110021|111021|112021|113021|114041|115021|116051|117011)$ ]] + [[ "$RELEASE_VERSION" =~ ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(110021|111021|112021|113021|114041|115021|116051|117011|118021)$ ]] case "$RELEASE_VERSION" in *.110021) minecraft_version=1.10.2; source_branch=1.10.2 ;; *.111021) minecraft_version=1.11.2; source_branch=1.11.2-dev ;; @@ -64,6 +64,7 @@ jobs: *.115021) minecraft_version=1.15.2; source_branch=master-1.15.2 ;; *.116051) minecraft_version=1.16.5; source_branch=master-1.16.5 ;; *.117011) minecraft_version=1.17.1; source_branch=master-1.17.1 ;; + *.118021) minecraft_version=1.18.2; source_branch=master-1.18.2 ;; *) exit 1 ;; esac echo "minecraft_version=$minecraft_version" >> "$GITHUB_OUTPUT" @@ -96,14 +97,17 @@ jobs: '1.14.4': ('master-1.14.4', '28.2.26', '114041'), '1.15.2': ('master-1.15.2', '31.2.57', '115021'), '1.16.5': ('master-1.16.5', '36.2.42', '116051'), - '1.17.1': ('master-1.17.1', '37.1.1', '117011')} + '1.17.1': ('master-1.17.1', '37.1.1', '117011'), + '1.18.2': ('master-1.18.2', '40.3.12', '118021')} branch, forge, suffix = targets[minecraft] if os.environ['SOURCE_BRANCH'] != branch: raise SystemExit('The selected branch does not match its Minecraft version') native17 = minecraft == '1.17.1' + native18 = minecraft == '1.18.2' + locally_qualified = native17 or native18 expected = {'minecraft_version': minecraft, 'forge_version': forge, - 'loader_name': 'forge', 'loader_code': '1', 'java_version': '16' if native17 else '8', - 'java_toolchain_version': '16.0.2+7' if native17 else '8.0.502+7', 'gradle_java_version': '17', + 'loader_name': 'forge', 'loader_code': '1', 'java_version': '17' if native18 else '16' if native17 else '8', + 'java_toolchain_version': '17.0.20.1+1' if native18 else '16.0.2+7' if native17 else '8.0.502+7', 'gradle_java_version': '17', 'mod_id': 'lootablebodies', 'mod_artifact': 'LootableBodies', 'mod_group': 'zone.moddev.mc.lootablebodies', 'mod_license': 'LGPL-2.1-only', 'curseforge_project_id': '240968'} @@ -131,8 +135,10 @@ jobs: required.update(['Validate release workflow', 'Prepare verified migration inputs', 'World upgrade matrix'] + ['Historical world shard ' + str(i) for i in range(6 if minecraft == '1.15.2' else 12)]) qualification_run = '' - if native17: + if locally_qualified: required = {'Build, test, and audit', 'Analyze Java', 'Validation', 'Validate release workflow'} + if native18: + required = {'Check hosted work policy', 'Build and audit locally qualified archives', 'Analyze Java', 'Validation', 'Validate release workflow'} # The authorised local controller rehashes actual gameplay proof # before dispatch. Hosted CI verifies its exact source/artifact # binding; it does not rerun games or claim a fresh gameplay pass. @@ -141,7 +147,11 @@ jobs: except (ValueError,TypeError): raise SystemExit('A local qualification receipt is required') keys={'schema','source','version','files','evidence_sha256','qualified_locally','manual_accepted'} - accepted=json.loads(Path('.github/release117.json').read_text())['files'] + target_code='118' if native18 else '117' + metadata=json.loads(Path(f'.github/release{target_code}.json').read_text()) + accepted=metadata['files'] + if native18 and (metadata.get('local_qualification_complete') is not True or metadata.get('qualification_integrity_status')!='verified'): + raise SystemExit('The local 1.18.2 qualification declaration is incomplete') if (not isinstance(local,dict) or set(local)!=keys or type(local['schema']) is not int or local['schema']!=1 or local['source']!=sha or local['version']!=version or local['files']!=accepted or local['qualified_locally'] is not True or local['manual_accepted'] is not True @@ -149,17 +159,17 @@ jobs: or local['evidence_sha256']=='0'*64): raise SystemExit('Local qualification is missing or belongs to another source/artifact bundle') runs = json.loads(subprocess.check_output(['gh', 'api', - f'repos/{repo}/actions/workflows/native117.yml/runs?event=push&branch=master-1.17.1&head_sha={sha}&per_page=100'], text=True))['workflow_runs'] - exact = [r for r in runs if r['head_sha'] == sha and r['head_branch'] == 'master-1.17.1' - and r['event'] == 'push' and r['path'] == '.github/workflows/native117.yml'] + f'repos/{repo}/actions/workflows/native{target_code}.yml/runs?event=push&branch={branch}&head_sha={sha}&per_page=100'], text=True))['workflow_runs'] + exact = [r for r in runs if r['head_sha'] == sha and r['head_branch'] == branch + and r['event'] == 'push' and r['path'] == f'.github/workflows/native{target_code}.yml'] if not exact or max(exact, key=lambda r:r['id'])['conclusion'] != 'success': - raise SystemExit('No successful exact-merge native117 build and unit checks') + raise SystemExit('No successful exact-merge locally qualified artifact build') qualification_run = str(max(exact, key=lambda r:r['id'])['id']) for name in required: matching = [check for check in checks if check['name'] == name] if not matching or max(matching, key=lambda c: c['id'])['conclusion'] != 'success': raise SystemExit(f'The selected commit has no successful {name} check') - if minecraft in ('1.11.2', '1.12.2', '1.13.2', '1.14.4', '1.15.2', '1.16.5', '1.17.1'): + if minecraft in ('1.11.2', '1.12.2', '1.13.2', '1.14.4', '1.15.2', '1.16.5', '1.17.1', '1.18.2'): target = minecraft.rsplit('.', 1)[0] audits = json.loads(subprocess.check_output(['gh', 'api', f'repos/{repo}/actions/workflows/artifact-audit-{target}.yml/runs?event=workflow_run&per_page=100'], text=True))['workflow_runs'] @@ -193,29 +203,36 @@ jobs: with: ref: ${{ needs.preflight.outputs.release_sha }} - name: Install Mavenizer Java + if: needs.preflight.outputs.minecraft_version != '1.18.2' uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5 with: distribution: temurin java-version: '25.0.3+9.0.LTS' - name: Install production Java + if: needs.preflight.outputs.minecraft_version != '1.18.2' uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5 with: distribution: temurin - java-version: ${{ needs.preflight.outputs.minecraft_version == '1.17.1' && '16.0.2+7' || '8.0.502+7' }} + java-version: ${{ needs.preflight.outputs.minecraft_version == '1.18.2' && '17.0.20.1+1' || needs.preflight.outputs.minecraft_version == '1.17.1' && '16.0.2+7' || '8.0.502+7' }} - name: Install Gradle Java + if: needs.preflight.outputs.minecraft_version != '1.18.2' uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5 with: distribution: temurin - java-version: '17.0.1+12' + java-version: ${{ needs.preflight.outputs.minecraft_version == '1.18.2' && '17.0.20.1+1' || '17.0.1+12' }} - name: Pin the production toolchain + if: needs.preflight.outputs.minecraft_version != '1.18.2' run: | - if [ '${{ needs.preflight.outputs.minecraft_version }}' = '1.17.1' ]; then + if [ '${{ needs.preflight.outputs.minecraft_version }}' = '1.18.2' ]; then + echo "LOOTABLEBODIES_JAVA17_HOME=$JAVA_HOME_17_X64" >> "$GITHUB_ENV" + elif [ '${{ needs.preflight.outputs.minecraft_version }}' = '1.17.1' ]; then echo "LOOTABLEBODIES_JAVA16_HOME=$JAVA_HOME_16_X64" >> "$GITHUB_ENV" else echo "LOOTABLEBODIES_JAVA8_HOME=$JAVA_HOME_8_X64" >> "$GITHUB_ENV" fi echo "LOOTABLEBODIES_MAVENIZER_JAVA_HOME=$JAVA_HOME_25_X64" >> "$GITHUB_ENV" - name: Set up Gradle + if: needs.preflight.outputs.minecraft_version != '1.18.2' uses: gradle/actions/setup-gradle@9c971963bec38e04b3d30dcc455b5382be2fdbfb # v6 - name: Download the qualified native117 six-file bundle if: needs.preflight.outputs.minecraft_version == '1.17.1' @@ -237,8 +254,19 @@ jobs: PY chmod +x ./gradlew ./gradlew verifyPreparedReleaseArtifacts -PpreparedReleaseDir=build/release/bundle --no-daemon --stacktrace + - name: Download the qualified native118 six-file bundle + if: needs.preflight.outputs.minecraft_version == '1.18.2' + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8 + with: + name: LootableBodies-1.18.2-${{ needs.preflight.outputs.release_sha }} + run-id: ${{ needs.preflight.outputs.qualification_run }} + github-token: ${{ github.token }} + path: build/release/bundle + - name: Verify all six native118 bytes before publication + if: needs.preflight.outputs.minecraft_version == '1.18.2' + run: python3 -B tools/native118_build.py --bundle build/release/bundle - name: Build, test and audit the release - if: needs.preflight.outputs.minecraft_version != '1.17.1' + if: needs.preflight.outputs.minecraft_version != '1.17.1' && needs.preflight.outputs.minecraft_version != '1.18.2' run: | chmod +x ./gradlew ./gradlew clean build javadoc verifyEclipseProductionClasspath prepareReleaseBundle \ @@ -343,15 +371,17 @@ jobs: uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5 with: distribution: temurin - java-version: ${{ needs.preflight.outputs.minecraft_version == '1.17.1' && '16.0.2+7' || '8.0.502+7' }} + java-version: ${{ needs.preflight.outputs.minecraft_version == '1.18.2' && '17.0.20.1+1' || needs.preflight.outputs.minecraft_version == '1.17.1' && '16.0.2+7' || '8.0.502+7' }} - name: Install Gradle Java uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5 with: distribution: temurin - java-version: '17.0.1+12' + java-version: ${{ needs.preflight.outputs.minecraft_version == '1.18.2' && '17.0.20.1+1' || '17.0.1+12' }} - name: Pin the production toolchain run: | - if [ '${{ needs.preflight.outputs.minecraft_version }}' = '1.17.1' ]; then + if [ '${{ needs.preflight.outputs.minecraft_version }}' = '1.18.2' ]; then + echo "LOOTABLEBODIES_JAVA17_HOME=$JAVA_HOME_17_X64" >> "$GITHUB_ENV" + elif [ '${{ needs.preflight.outputs.minecraft_version }}' = '1.17.1' ]; then echo "LOOTABLEBODIES_JAVA16_HOME=$JAVA_HOME_16_X64" >> "$GITHUB_ENV" else echo "LOOTABLEBODIES_JAVA8_HOME=$JAVA_HOME_8_X64" >> "$GITHUB_ENV" diff --git a/.github/workflows/release-workflow-checks.yml b/.github/workflows/release-workflow-checks.yml index 9ac4472..a5e6f3f 100644 --- a/.github/workflows/release-workflow-checks.yml +++ b/.github/workflows/release-workflow-checks.yml @@ -24,7 +24,7 @@ jobs: - name: Check release workflow syntax run: >- "$RUNNER_TEMP/actionlint/actionlint" -shellcheck= -pyflakes= - .github/workflows/build.yml .github/workflows/migration-matrix.yml .github/workflows/deploy-release.yml .github/workflows/release-workflow-checks.yml .github/workflows/artifact-audit-1.11.yml .github/workflows/artifact-audit-1.12.yml .github/workflows/artifact-audit-1.13.yml .github/workflows/artifact-audit-1.14.yml .github/workflows/artifact-audit-1.15.yml .github/workflows/artifact-audit-1.16.yml .github/workflows/artifact-audit-1.17.yml + .github/workflows/build.yml .github/workflows/migration-matrix.yml .github/workflows/deploy-release.yml .github/workflows/release-workflow-checks.yml .github/workflows/artifact-audit-1.11.yml .github/workflows/artifact-audit-1.12.yml .github/workflows/artifact-audit-1.13.yml .github/workflows/artifact-audit-1.14.yml .github/workflows/artifact-audit-1.15.yml .github/workflows/artifact-audit-1.16.yml .github/workflows/artifact-audit-1.17.yml .github/workflows/artifact-audit-1.18.yml - name: Test version selection and publication checks run: python3 .github/scripts/test_release_workflow.py -v