You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hey folks, we've decided to start a new series to appreciate contributors (especially new contributors) to the project: Contributor of the Month. This series will be published at the end of each month and will tell the story of the top contributor of the month's adventure in their latest contributions, as selected by the project maintainers.
You may (!) have noticed that today is December 25th and not the end of the month, but as the first post, we decided to publish it a little early. And of course, Merry Christmas!
This cold December's contributor is @zen0bit. He started by implementing a discarded feature in his first contribution (#152) and is now working to complete the project's build documentation (#161). In this post, we'll examine the story of the former.
The subject of this pull request (#152) is implementing an automated workflow for building and releasing new versions. This feature had previously been tested behind the scenes by the project maintainers several times, and each time it was discarded due to different failures. This meant that until now, all releases had to be manually generated and uploaded, a process full of potential errors and time-consuming.
Note: We use a rebase to one commit before merge policy for merging, which causes the loss of the development commit history and their merging into a single commit. Although this policy provides a clean history for the repository, it makes reviewing the PR development process a bit more difficult. Therefore, the development history of this PR, which is provided below, is based on the comments remaining in the PR and the memory of the responsible maintainers. For more information, see Branch Merge Policy.
Pull request #152 was created to close issue #153. This issue, created by @zen0bit himself (yes, after creating the pull request, but only a minute later, don't be too hard on him), was initially submitted as a question (which confused the maintainer for quite some time), and its text also included content from issue #154, which was later separated!
The beginning of this pull request was accompanied by many messes. As expected of any new contributor, he was completely unfamiliar with the repository structure, but it slowly turned into a clean and complete contribution. On December 7th, when the development of this branch began, @coderabbitai and a lesser-known issue in Godot quickly managed to complicate the development (@zen0bit rejected the CodeRabbit review limit twice and made more than 30 minor changes to the workflow) to the point that after specifying the responsible maintainer for the pull request, @mkh-user stopped automatic incremental reviews for this pull request.
After the first two days, the process became a bit more stable. @zen0bit had tried almost all the ways and become familiar with them. After this, a discussion took place about choosing between different options (3 options), and finally, it was decided to export twice to solve the problem mentioned here and then use the outputs. Another issue was the editor error in the export-release outputs, which forced us to establish export-debug as the current standard. Also, to test the correct execution of the release outputs, a download and run workflow was implemented in #155.
Finally, after a few days' break, a week was spent on the final implementation and code review (along with CodeRabbit returning to the reviews), as well as updates to place a number of necessary files next to the executable file. These efforts ultimately led to the merging of this pull request on December 16th (commit e1cf5dd). After this, thanks to the continuous efforts of @zen0bit and not giving up after facing errors many times, Text Forge releases will be automated, and only the release text will be generated manually (see follow-up #173).
Here is a portion of the notes from CodeRabbit, the wonderful automated review bot we use, on the latest code review:
Summary: Adds a new GitHub Actions "Release (2 passes)" workflow that runs a Linux/Windows matrix to export Godot builds with an optional Wine setup and a two-pass export fallback, archives per-platform ZIPs, uploads artifacts, and publishes GitHub releases; also updates export preset paths and a changelog entry.
Implementation diagram:
sequenceDiagram
participant Trigger as Trigger (tag / manual)
participant GH as GitHub Actions
participant Repo as Repository (checkout)
participant Runner as Runner (ubuntu-latest)
participant Wine as Wine setup (optional)
participant ExportAct as Export Action (firebelley/godot-export)
participant Workspace as Workspace / Archiver
participant Artifact as Actions Artifact
participant ReleaseAPI as GitHub Release API
Trigger->>GH: start workflow
GH->>Repo: checkout repository
GH->>Runner: start matrix job (Linux / Windows)
alt requires Wine
Runner->>Wine: install/configure
end
Runner->>ExportAct: run primary export (preset, platform, templates)
alt primary export succeeds
ExportAct-->>Runner: produce build outputs
else primary export fails
Runner->>ExportAct: run fallback export (second pass)
ExportAct-->>Runner: produce build outputs or error
end
Runner->>Workspace: collect outputs + assets -> create ZIP (per-matrix-name)
Workspace-->>Artifact: upload ZIP artifact
Runner->>ReleaseAPI: create/update release and attach ZIP
ReleaseAPI-->>GH: release published/updated
Loading
Also a note from the maintainer regarding the development process: #152 (comment)
This was @zen0bit's first contribution, so we proudly congratulate you on joining the Text Forge contributors with this valuable contribution and hope you enjoyed working with us. We hope to see you just as enthusiastic and capable next time.
This post was an effort by Mahan Khalili (@mkh-user), the maintainer responsible for pull request #152, to acknowledge @zen0bit's contributions as contributor of the month for the Text Forge repository.
Please also keep in mind that Text Forge is currently completely free and does not yet have a donation portal. We kindly ask you to support us by starring the project on GitHub and introducing this editor to your friends so that we can continue to develop this tool for you.
- Sincerely, Mahan Khalili, Software Development Lead
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
Hey folks, we've decided to start a new series to appreciate contributors (especially new contributors) to the project: Contributor of the Month. This series will be published at the end of each month and will tell the story of the top contributor of the month's adventure in their latest contributions, as selected by the project maintainers.
This cold December's contributor is @zen0bit. He started by implementing a discarded feature in his first contribution (#152) and is now working to complete the project's build documentation (#161). In this post, we'll examine the story of the former.
The subject of this pull request (#152) is implementing an automated workflow for building and releasing new versions. This feature had previously been tested behind the scenes by the project maintainers several times, and each time it was discarded due to different failures. This meant that until now, all releases had to be manually generated and uploaded, a process full of potential errors and time-consuming.
Pull request #152 was created to close issue #153. This issue, created by @zen0bit himself (yes, after creating the pull request, but only a minute later, don't be too hard on him), was initially submitted as a question (which confused the maintainer for quite some time), and its text also included content from issue #154, which was later separated!
The beginning of this pull request was accompanied by many messes. As expected of any new contributor, he was completely unfamiliar with the repository structure, but it slowly turned into a clean and complete contribution. On December 7th, when the development of this branch began, @coderabbitai and a lesser-known issue in Godot quickly managed to complicate the development (@zen0bit rejected the CodeRabbit review limit twice and made more than 30 minor changes to the workflow) to the point that after specifying the responsible maintainer for the pull request, @mkh-user stopped automatic incremental reviews for this pull request.
After the first two days, the process became a bit more stable. @zen0bit had tried almost all the ways and become familiar with them. After this, a discussion took place about choosing between different options (3 options), and finally, it was decided to export twice to solve the problem mentioned here and then use the outputs. Another issue was the editor error in the
export-releaseoutputs, which forced us to establishexport-debugas the current standard. Also, to test the correct execution of the release outputs, a download and run workflow was implemented in #155.Finally, after a few days' break, a week was spent on the final implementation and code review (along with CodeRabbit returning to the reviews), as well as updates to place a number of necessary files next to the executable file. These efforts ultimately led to the merging of this pull request on December 16th (commit e1cf5dd). After this, thanks to the continuous efforts of @zen0bit and not giving up after facing errors many times, Text Forge releases will be automated, and only the release text will be generated manually (see follow-up #173).
Here is a portion of the notes from CodeRabbit, the wonderful automated review bot we use, on the latest code review:
Summary: Adds a new GitHub Actions "Release (2 passes)" workflow that runs a Linux/Windows matrix to export Godot builds with an optional Wine setup and a two-pass export fallback, archives per-platform ZIPs, uploads artifacts, and publishes GitHub releases; also updates export preset paths and a changelog entry.
Implementation diagram:
sequenceDiagram participant Trigger as Trigger (tag / manual) participant GH as GitHub Actions participant Repo as Repository (checkout) participant Runner as Runner (ubuntu-latest) participant Wine as Wine setup (optional) participant ExportAct as Export Action (firebelley/godot-export) participant Workspace as Workspace / Archiver participant Artifact as Actions Artifact participant ReleaseAPI as GitHub Release API Trigger->>GH: start workflow GH->>Repo: checkout repository GH->>Runner: start matrix job (Linux / Windows) alt requires Wine Runner->>Wine: install/configure end Runner->>ExportAct: run primary export (preset, platform, templates) alt primary export succeeds ExportAct-->>Runner: produce build outputs else primary export fails Runner->>ExportAct: run fallback export (second pass) ExportAct-->>Runner: produce build outputs or error end Runner->>Workspace: collect outputs + assets -> create ZIP (per-matrix-name) Workspace-->>Artifact: upload ZIP artifact Runner->>ReleaseAPI: create/update release and attach ZIP ReleaseAPI-->>GH: release published/updatedAlso a note from the maintainer regarding the development process: #152 (comment)
This was @zen0bit's first contribution, so we proudly congratulate you on joining the Text Forge contributors with this valuable contribution and hope you enjoyed working with us. We hope to see you just as enthusiastic and capable next time.
Please also keep in mind that Text Forge is currently completely free and does not yet have a donation portal. We kindly ask you to support us by starring the project on GitHub and introducing this editor to your friends so that we can continue to develop this tool for you.
- Sincerely, Mahan Khalili, Software Development Lead
Beta Was this translation helpful? Give feedback.
All reactions