Minor change #50
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
--- | |
# SPDX-FileCopyrightText: (c) 2025 ale5000 | |
# SPDX-License-Identifier: GPL-3.0-or-later | |
name: "Auto-nightly" | |
permissions: {} | |
on: | |
push: | |
branches: | |
- "main" | |
concurrency: | |
group: "${{ github.repository_id }}-${{ github.workflow }}" | |
cancel-in-progress: true | |
jobs: | |
base-job: | |
name: "Nightly" | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write # Needed to create a tag | |
steps: | |
- name: "Checkout sources" | |
uses: actions/checkout@v4 | |
- name: "Setup Java" | |
uses: actions/setup-java@v4 | |
with: | |
distribution: "temurin" | |
java-version: "17" | |
- name: "Build nightly" | |
id: "build" | |
shell: bash | |
run: | | |
# Building nightly... | |
BUILD_TYPE='oss' '${{ github.workspace }}/build.sh' | |
- name: "ZIP info" | |
run: | | |
# Retrieve informations... | |
ZIP_FOLDER='${{ steps.build.outputs.ZIP_FOLDER }}' | |
ZIP_FILENAME='${{ steps.build.outputs.ZIP_FILENAME }}' | |
ZIP_VERSION='${{ steps.build.outputs.ZIP_VERSION }}' | |
ZIP_SHORT_COMMIT_ID='${{ steps.build.outputs.ZIP_SHORT_COMMIT_ID }}' | |
ZIP_BUILD_TYPE='${{ steps.build.outputs.ZIP_BUILD_TYPE }}' | |
ZIP_BUILD_TYPE_SUPPORTED='${{ steps.build.outputs.ZIP_BUILD_TYPE_SUPPORTED }}' | |
ZIP_IS_ALPHA='${{ steps.build.outputs.ZIP_IS_ALPHA }}' | |
ZIP_SHA256='${{ steps.build.outputs.ZIP_SHA256 }}' | |
ZIP_MD5='${{ steps.build.outputs.ZIP_MD5 }}' | |
# Displaying informations... | |
printf '%s\n' "::notice::Filename: ${ZIP_FILENAME:-Missing}" | |
printf '%s\n' "::notice::Version: ${ZIP_VERSION:-Missing}" | |
printf '%s\n' "::notice::Short commit ID: ${ZIP_SHORT_COMMIT_ID:-Missing}" | |
printf '%s\n' "::notice::Build type: ${ZIP_BUILD_TYPE:?}" | |
printf '%s\n' "::notice::Build type supported: ${ZIP_BUILD_TYPE_SUPPORTED:?}" | |
printf '%s\n' "::notice::Is alpha: ${ZIP_IS_ALPHA:-Missing}" | |
printf '%s\n' "::notice::SHA-256: ${ZIP_SHA256:-Missing}" | |
printf '%s\n' "::notice::MD5: ${ZIP_MD5:-Missing}" | |
: "${ZIP_FOLDER:?}" || exit "${?}" | |
- name: "Do we need to release?" | |
id: "release-decision" | |
shell: bash | |
run: | | |
# Do we need to release? | |
git fetch -q origin | |
CREATE_RELEASE='false' | |
IS_LATEST_COMMIT='false' | |
if test '${{ github.sha }}' = "$(git log -n 1 --pretty='%H' 'origin/main' || :)"; then | |
IS_LATEST_COMMIT='true' | |
fi | |
if test "${IS_LATEST_COMMIT:?}" = 'true' && '${{ steps.build.outputs.ZIP_BUILD_TYPE_SUPPORTED == 'true' && steps.build.outputs.ZIP_IS_ALPHA == 'true' && github.event_name != 'pull_request' }}'; then | |
CREATE_RELEASE='true' | |
fi | |
printf 'CREATE_RELEASE=%s\n' "${CREATE_RELEASE:?}" >> "${GITHUB_OUTPUT?}" | |
printf '%s\n' "${CREATE_RELEASE:?}" | |
- name: "Delete previous nightly release" | |
uses: actions/github-script@v7 | |
if: "${{ steps.release-decision.outputs.CREATE_RELEASE == 'true' }}" | |
with: | |
retries: 3 | |
script: | | |
/* jshint esversion: 6 */ | |
const response = await github.rest.repos.getReleaseByTag({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
tag: 'nightly' | |
}).catch(response => response); | |
if(response && response.status === 404) { | |
// There is no previous nightly release, nothing to do | |
} else if(response && response.status >= 200 && response.status < 300 && response.data && response.data.id && response.data.tag_name === 'nightly') { | |
await github.rest.repos.deleteRelease({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
release_id: response.data.id | |
}); | |
console.log('Previous nightly release deleted: ' + response.data.name + ' (' + response.data.id + ')'); | |
} else { | |
if(response && response.message) console.error('::error::' + response.message); | |
throw new Error('getReleaseByTag failed.'); | |
} | |
await github.rest.git.updateRef({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
ref: 'tags/nightly', | |
sha: context.sha, | |
force: true | |
}).then(response => { | |
console.log('Previous nightly tag updated.'); | |
}).catch(error => { | |
if(error.status !== 422 || error.message !== 'Reference does not exist') throw error; | |
}); | |
- name: "Create nightly release" | |
uses: softprops/action-gh-release@v2 | |
if: "${{ steps.release-decision.outputs.CREATE_RELEASE == 'true' }}" | |
with: | |
name: "Nightly build" | |
tag_name: "nightly" | |
target_commitish: "${{ github.sha }}" | |
body: "Latest automatically built ZIP (unstable development snapshot)\n\nSHA-256: ${{ steps.build.outputs.ZIP_SHA256 }}" | |
append_body: false | |
generate_release_notes: false | |
make_latest: false | |
draft: false | |
prerelease: true | |
files: "${{ steps.build.outputs.ZIP_FOLDER }}/*.zip*" | |
fail_on_unmatched_files: true | |
- name: "Upload artifacts" | |
uses: actions/upload-artifact@v4 | |
if: "${{ steps.build.outputs.ZIP_BUILD_TYPE_SUPPORTED == 'true' }}" | |
with: | |
name: "${{ github.event.repository.name }}-${{ steps.build.outputs.ZIP_VERSION }}-${{ steps.build.outputs.ZIP_SHORT_COMMIT_ID }}-${{ steps.build.outputs.ZIP_BUILD_TYPE }} archive (extract it)" | |
path: "${{ steps.build.outputs.ZIP_FOLDER }}/*.zip*" | |
if-no-files-found: "error" | |
retention-days: 7 |