-
Notifications
You must be signed in to change notification settings - Fork 398
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add Workflow Action to build and upload webapp bundle to Release (#2161)
* fix editorconfig for yml files * add workflow for webapp build on release * filter paths for CI installation worlflow * abort installation if needed download failed * fix SemVer definition * add workflow for webapp bundle build and releases. remove old workflow * add main to version.py * fix prebuild webapp bundle download add download for latest bundle: used if no bundle for the commit is found and force download is set. * changes to webapp build option changed order: kiosk_mode and node option change message to better reflect the behavior. move local build finmessage to the 'yes' case: Download is forced and node is not installed. the message is irritating * add checks for correct version for branch * activate official repo check * set next develop version * Update message * make webapp downloads on forks possible * bugfix elif * add abort if sources failed to load * Updated WEBAPP NODE message * change filename to short hash (10 chars) * add semver ref to version.py
- Loading branch information
1 parent
0e6dbd6
commit 9e65de4
Showing
14 changed files
with
265 additions
and
48 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -15,5 +15,5 @@ indent_size = 4 | |
[*.md] | ||
trim_trailing_whitespace = false | ||
|
||
[*.{js,yaml}] | ||
[*.{js,yaml,yml}] | ||
indent_size = 2 |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,183 @@ | ||
name: Bundle Webapp and Release | ||
|
||
on: | ||
push: | ||
branches: | ||
- 'future3/main' | ||
- 'future3/develop' | ||
|
||
jobs: | ||
|
||
check: | ||
if: ${{ github.repository_owner == 'MiczFlor' }} | ||
runs-on: ubuntu-latest | ||
|
||
outputs: | ||
tag_name: ${{ steps.vars.outputs.tag_name }} | ||
release_type: ${{ steps.vars.outputs.release_type }} | ||
check_abort: ${{ steps.vars.outputs.check_abort }} | ||
|
||
steps: | ||
- uses: actions/checkout@v3 | ||
|
||
- name: Set Output vars | ||
id: vars | ||
env: | ||
BRANCH_NAME: ${{ github.ref_name }} | ||
run: | | ||
# Official SemVer Regex definition | ||
# https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string | ||
# Needed changes to the regex: | ||
# - '?:' capture command needed to be removed as it wasn't working in shell | ||
# - '\d' had to be replaced with [0-9] | ||
# | ||
# Release versions like 1.0.0, 3.5.0, 100.4.50000+metadata | ||
REGEX_VERSION_RELEASE="^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)(\+([0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*))?$" | ||
# | ||
# Prerelease versions like 1.0.0-alpha, 3.5.0-whatsoever.12, 100.4.50000-identifier.12+metadata | ||
REGEX_VERSION_PRERELEASE="^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)(-((0|[1-9][0-9]*|[0-9]*[a-zA-Z-][0-9a-zA-Z-]*)(\.(0|[1-9][0-9]*|[0-9]*[a-zA-Z-][0-9a-zA-Z-]*))*))?(\+([0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*))?$" | ||
# Get the version and calculate release type | ||
VERSION=$(python ./src/jukebox/jukebox/version.py) | ||
if echo "$VERSION" | grep -qoE "$REGEX_VERSION_RELEASE" ; then | ||
RELEASE_TYPE=release | ||
elif echo "$VERSION" | grep -qoE "$REGEX_VERSION_PRERELEASE" ; then | ||
RELEASE_TYPE=prerelease | ||
else | ||
RELEASE_TYPE=none | ||
fi | ||
if [ "$BRANCH_NAME" == 'future3/main' -a "$RELEASE_TYPE" == 'release' ] || [ "$BRANCH_NAME" == 'future3/develop' -a "$RELEASE_TYPE" == 'prerelease' ] ; then | ||
CHECK_ABORT=false | ||
else | ||
echo "::notice title=Abort due to not matching ${RELEASE_TYPE} version for branch!::'${VERSION}' on '${BRANCH_NAME}'" | ||
CHECK_ABORT=true | ||
fi | ||
echo "::group::Output values" | ||
echo "Version: ${VERSION}" | ||
echo "RELEASE_TYPE: ${RELEASE_TYPE}" | ||
echo "BRANCH_NAME: ${BRANCH_NAME}" | ||
echo "CHECK_ABORT: ${CHECK_ABORT}" | ||
echo "tag_name=v${VERSION}" >> $GITHUB_OUTPUT | ||
echo "release_type=${RELEASE_TYPE}" >> $GITHUB_OUTPUT | ||
echo "branch_name=${BRANCH_NAME}" >> $GITHUB_OUTPUT | ||
echo "check_abort=${CHECK_ABORT}" >> $GITHUB_OUTPUT | ||
echo "::endgroup::" | ||
build: | ||
needs: [check] | ||
if: ${{ needs.check.outputs.check_abort == 'false' }} | ||
runs-on: ubuntu-latest | ||
|
||
env: | ||
WEBAPP_ROOT_PATH: ./src/webapp | ||
|
||
outputs: | ||
tag_name: ${{ needs.check.outputs.tag_name }} | ||
release_type: ${{ needs.check.outputs.release_type }} | ||
commit_sha: ${{ steps.vars.outputs.commit_sha }} | ||
webapp_bundle_name: ${{ steps.vars.outputs.webapp_bundle_name }} | ||
webapp_bundle_name_latest: ${{ steps.vars.outputs.webapp_bundle_name_latest }} | ||
|
||
steps: | ||
- uses: actions/checkout@v3 | ||
|
||
- name: Set Output vars | ||
id: vars | ||
env: | ||
COMMIT_SHA: ${{ github.sha }} | ||
run: | | ||
echo "commit_sha=${COMMIT_SHA}" >> $GITHUB_OUTPUT | ||
echo "webapp_bundle_name=webapp-build-${COMMIT_SHA:0:10}.tar.gz" >> $GITHUB_OUTPUT | ||
echo "webapp_bundle_name_latest=webapp-build-latest.tar.gz" >> $GITHUB_OUTPUT | ||
- name: Setup Node.js 20.x | ||
uses: actions/setup-node@v3 | ||
with: | ||
node-version: 20.x | ||
- name: npm install | ||
working-directory: ${{ env.WEBAPP_ROOT_PATH }} | ||
run: npm install | ||
- name: npm build | ||
working-directory: ${{ env.WEBAPP_ROOT_PATH }} | ||
env: | ||
CI: false | ||
run: npm run build | ||
|
||
- name: Create Bundle | ||
working-directory: ${{ env.WEBAPP_ROOT_PATH }} | ||
run: | | ||
tar -czvf ${{ steps.vars.outputs.webapp_bundle_name }} build | ||
- name: Artifact Upload | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: ${{ steps.vars.outputs.webapp_bundle_name }} | ||
path: ${{ env.WEBAPP_ROOT_PATH }}/${{ steps.vars.outputs.webapp_bundle_name }} | ||
retention-days: 5 | ||
|
||
release: | ||
needs: [build] | ||
runs-on: ubuntu-latest | ||
|
||
concurrency: | ||
group: ${{ needs.build.outputs.tag_name }} | ||
|
||
permissions: | ||
contents: write | ||
|
||
steps: | ||
- name: Artifact Download | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: ${{ needs.build.outputs.webapp_bundle_name }} | ||
|
||
- name: Create Release | ||
uses: ncipollo/release-action@v1 | ||
with: | ||
commit: ${{ needs.build.outputs.commit_sha }} | ||
tag: ${{ needs.build.outputs.tag_name }} | ||
body: "Automated Release for ${{ needs.build.outputs.tag_name }}" | ||
makeLatest: 'false' | ||
prerelease: ${{ needs.build.outputs.release_type == 'prerelease' }} | ||
generateReleaseNotes: ${{ needs.build.outputs.release_type == 'release' }} | ||
skipIfReleaseExists: false | ||
allowUpdates: true | ||
removeArtifacts: false | ||
replacesArtifacts: false | ||
omitBodyDuringUpdate: true | ||
omitNameDuringUpdate: true | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Get Release by tag | ||
id: get_release | ||
uses: joutvhu/get-release@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
with: | ||
tag_name: ${{ needs.build.outputs.tag_name }} | ||
|
||
- name: Upload Release Asset | ||
uses: shogo82148/actions-upload-release-asset@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
with: | ||
upload_url: ${{ steps.get_release.outputs.upload_url }} | ||
asset_name: ${{ needs.build.outputs.webapp_bundle_name }} | ||
asset_path: ${{ needs.build.outputs.webapp_bundle_name }} | ||
asset_content_type: application/gzip | ||
overwrite: true | ||
|
||
- name: Upload Release Asset as Latest | ||
uses: shogo82148/actions-upload-release-asset@v1 | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
with: | ||
upload_url: ${{ steps.get_release.outputs.upload_url }} | ||
asset_name: ${{ needs.build.outputs.webapp_bundle_name_latest }} | ||
asset_path: ${{ needs.build.outputs.webapp_bundle_name }} | ||
asset_content_type: application/gzip | ||
overwrite: true |
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
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
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
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
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
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
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
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
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
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
Oops, something went wrong.