Skip to content

Commit 78d5c15

Browse files
vdyeldennington
authored andcommitted
release: create draft GitHub release with packages & installers
- create release & uploads artifact using Octokit - use job "if" condition to handle uploading signed *or* unsigned .deb Co-authored-by: Lessley Dennington <[email protected]>
1 parent ae9dae2 commit 78d5c15

File tree

1 file changed

+109
-0
lines changed

1 file changed

+109
-0
lines changed

.github/workflows/build-git-installers.yml

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -699,3 +699,112 @@ jobs:
699699
path: |
700700
*.deb
701701
# End build and sign Debian package
702+
703+
create-github-release:
704+
runs-on: ubuntu-latest
705+
permissions:
706+
contents: write
707+
needs:
708+
- create-linux-artifacts
709+
- create-macos-artifacts
710+
- windows_artifacts
711+
- prereqs
712+
if: |
713+
success() ||
714+
(needs.create-linux-artifacts.result == 'skipped' &&
715+
needs.create-macos-artifacts.result == 'success' &&
716+
needs.windows_artifacts.result == 'success')
717+
steps:
718+
- name: Download Windows portable (x86_64)
719+
uses: actions/download-artifact@v4
720+
with:
721+
name: win-portable-x86_64
722+
path: win-portable-x86_64
723+
724+
- name: Download Windows portable (aarch64)
725+
uses: actions/download-artifact@v4
726+
with:
727+
name: win-portable-aarch64
728+
path: win-portable-aarch64
729+
730+
- name: Download Windows installer (x86_64)
731+
uses: actions/download-artifact@v4
732+
with:
733+
name: win-installer-x86_64
734+
path: win-installer-x86_64
735+
736+
- name: Download Windows installer (aarch64)
737+
uses: actions/download-artifact@v4
738+
with:
739+
name: win-installer-aarch64
740+
path: win-installer-aarch64
741+
742+
- name: Download macOS artifacts
743+
uses: actions/download-artifact@v4
744+
with:
745+
name: macos-artifacts
746+
path: macos-artifacts
747+
748+
- name: Download Debian package
749+
uses: actions/download-artifact@v4
750+
with:
751+
name: linux-artifacts
752+
path: deb-package
753+
754+
- uses: actions/github-script@v6
755+
with:
756+
script: |
757+
const fs = require('fs');
758+
const path = require('path');
759+
760+
var releaseMetadata = {
761+
owner: context.repo.owner,
762+
repo: context.repo.repo
763+
};
764+
765+
// Create the release
766+
var tagName = "${{ needs.prereqs.outputs.tag_name }}";
767+
var createdRelease = await github.rest.repos.createRelease({
768+
...releaseMetadata,
769+
draft: true,
770+
tag_name: tagName,
771+
name: tagName
772+
});
773+
releaseMetadata.release_id = createdRelease.data.id;
774+
775+
// Uploads contents of directory to the release created above
776+
async function uploadDirectoryToRelease(directory, includeExtensions=[]) {
777+
return fs.promises.readdir(directory)
778+
.then(async(files) => Promise.all(
779+
files.filter(file => {
780+
return includeExtensions.length==0 || includeExtensions.includes(path.extname(file).toLowerCase());
781+
})
782+
.map(async (file) => {
783+
var filePath = path.join(directory, file);
784+
github.rest.repos.uploadReleaseAsset({
785+
...releaseMetadata,
786+
name: file,
787+
headers: {
788+
"content-length": (await fs.promises.stat(filePath)).size
789+
},
790+
data: fs.createReadStream(filePath)
791+
});
792+
}))
793+
);
794+
}
795+
796+
await Promise.all([
797+
// Upload Windows x86_64 artifacts
798+
uploadDirectoryToRelease('win-installer-x86_64', ['.exe']),
799+
uploadDirectoryToRelease('win-portable-x86_64', ['.exe']),
800+
801+
// Upload Windows aarch64 artifacts
802+
uploadDirectoryToRelease('win-installer-aarch64', ['.exe']),
803+
uploadDirectoryToRelease('win-portable-aarch64', ['.exe']),
804+
805+
// Upload Mac artifacts
806+
uploadDirectoryToRelease('macos-artifacts'),
807+
808+
// Upload Ubuntu artifacts
809+
uploadDirectoryToRelease('deb-package')
810+
]);

0 commit comments

Comments
 (0)