diff --git a/.github/workflows/close-duplicates.yml b/.github/workflows/close-duplicates.yml index 246ddfb746..ffdb3750b3 100644 --- a/.github/workflows/close-duplicates.yml +++ b/.github/workflows/close-duplicates.yml @@ -13,7 +13,7 @@ jobs: close_duplicates: runs-on: ubuntu-latest steps: - - uses: github/command@v1.2.2 + - uses: github/command@v1.3.0 id: command with: allowed_contexts: "issue" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3be0d1f164..9a95c7c7aa 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -4,9 +4,13 @@ on: workflow_dispatch: inputs: version: - description: 'Release "v1.2.3" or "develop"' + description: 'Release "v1.2.3" or "develop" or "branch-abc"' required: true default: 'develop' + phpversion: + description: 'PHP version' + required: true + default: '8.3' schedule: - cron: '0 3 * * MON' @@ -23,6 +27,11 @@ jobs: if [[ "develop" == "$version" ]]; then git checkout --track origin/develop git pull + elif [[ "$version" == branch* ]]; then + PULLBRANCH=${version:7} + echo "The branch is '$PULLBRANCH' ($version)" + git checkout --track origin/$PULLBRANCH + git pull else git config user.name github-actions git config user.email 41898282+github-actions[bot]@users.noreply.github.com @@ -36,7 +45,7 @@ jobs: - name: Setup PHP uses: shivammathur/setup-php@v2 with: - php-version: '8.3' + php-version: ${{ github.event.inputs.phpversion }} extensions: mbstring, intl, zip, bcmath - name: crowdin action uses: crowdin/github-action@v2 @@ -133,7 +142,7 @@ jobs: rm -rf vendor composer.lock composer update --no-dev --no-scripts --no-plugins -q sudo chown -R runner:docker resources/lang - .ci/phpcs.sh + .ci/phpcs.sh || true - name: Import GPG key uses: crazy-max/ghaction-import-gpg@v6 with: @@ -166,6 +175,16 @@ jobs: tarName=FireflyIII-develop.tar.gz fi + # if this is a branch build, also slightly different variable names. + if [[ "$version" == branch* ]]; then + [[ -z $(git status --untracked-files=normal --porcelain) ]] && echo "this branch is clean, no need to push..." && exit 0; + # branch builds overrule develop + releaseName=$version-$(date +'%Y%m%d') + originalName=$releaseName + zipName=FireflyIII-$version.zip + tarName=FireflyIII-$version.tar.gz + fi + # in both cases, if the release or tag already exists, add ".1" until it no longer exists. tagFound=true tagCount=1 @@ -207,12 +226,13 @@ jobs: gpg --armor --detach-sign $zipName gpg --armor --detach-sign $tarName - # create a development (nightly) release: + # describe the development release. if [[ "develop" == "$version" ]]; then echo 'Develop release.' - # add text to output.txt (instructions) rm output.txt - echo "Bi-weekly development release of Firefly III with the latest fixes, translations and features. Docker users can find this release under the \`develop\` tag." >> output.txt + touch output.txt + sudo chown -R runner:docker output.txt + echo "Weekly development release of Firefly III with the latest fixes, translations and features. Docker users can find this release under the \`develop\` tag." >> output.txt echo "" >> output.txt echo "This release was created on **$(date +'%Y-%m-%d')** and may contain unexpected bugs. Data loss is rare but is not impossible. The releases are signed, and you can verify them using the [Firefly III releases PGP key](https://docs.firefly-iii.org/explanation/more-information/signatures/)." >> output.txt echo "" >> output.txt @@ -220,15 +240,62 @@ jobs: echo "* Or read the upgrade instructions for [Docker](https://docs.firefly-iii.org/how-to/firefly-iii/upgrade/docker/), [Kubernetes](https://docs.firefly-iii.org/how-to/firefly-iii/upgrade/kubernetes/) or [self-managed servers](https://docs.firefly-iii.org/how-to/firefly-iii/upgrade/self-managed/)" >> output.txt echo "" >> output.txt echo ":warning: Please be careful with this pre-release, as it may not work as expected." >> output.txt + fi + # describe a branch release + if [[ "$version" == branch* ]]; then + echo 'Branch release.' + rm output.txt + touch output.txt + sudo chown -R runner:docker output.txt + echo "Irregular BRANCH release of Firefly III. This release contains specific features or changes. Docker users can find this release under the \`$version\` tag." >> output.txt + echo "" >> output.txt + echo "This release was created on **$(date +'%Y-%m-%d')** and may contain unexpected bugs. Data loss is rare but is not impossible. The releases are signed, and you can verify them using the [Firefly III releases PGP key](https://docs.firefly-iii.org/explanation/more-information/signatures/)." >> output.txt + echo "" >> output.txt + echo "* Please read the installation instructions for [Docker](https://docs.firefly-iii.org/how-to/firefly-iii/installation/docker/), [Portainer](https://docs.firefly-iii.org/how-to/firefly-iii/installation/portainer/), [Kubernetes](https://docs.firefly-iii.org/how-to/firefly-iii/installation/kubernetes/) or [self-managed servers](https://docs.firefly-iii.org/how-to/firefly-iii/installation/self-managed/)" >> output.txt + echo "* Or read the upgrade instructions for [Docker](https://docs.firefly-iii.org/how-to/firefly-iii/upgrade/docker/), [Kubernetes](https://docs.firefly-iii.org/how-to/firefly-iii/upgrade/kubernetes/) or [self-managed servers](https://docs.firefly-iii.org/how-to/firefly-iii/upgrade/self-managed/)" >> output.txt + echo "" >> output.txt + echo ":warning: Please be careful with this branch pre-release, as it may not work as expected." >> output.txt + fi + # describe the main release + if [[ "develop" != "$version" ]] && [[ "$version" != branch* ]]; then + sudo chown -R runner:docker output.txt + echo 'Main release.' + echo '' >> output.txt + echo '### Instructions' >> output.txt + echo '' >> output.txt + echo "* Installation instructions for [Docker](https://docs.firefly-iii.org/how-to/firefly-iii/installation/docker/), [Portainer](https://docs.firefly-iii.org/how-to/firefly-iii/installation/portainer/), [Kubernetes](https://docs.firefly-iii.org/how-to/firefly-iii/installation/kubernetes/) or [self-managed servers](https://docs.firefly-iii.org/how-to/firefly-iii/installation/self-managed/)" >> output.txt + echo "* Or read the upgrade instructions for [Docker](https://docs.firefly-iii.org/how-to/firefly-iii/upgrade/docker/), [Kubernetes](https://docs.firefly-iii.org/how-to/firefly-iii/upgrade/kubernetes/) or [self-managed servers](https://docs.firefly-iii.org/how-to/firefly-iii/upgrade/self-managed/)" >> output.txt + echo "* The releases are signed, and you can verify them using the [Firefly III releases PGP key](https://docs.firefly-iii.org/explanation/more-information/signatures/)." >> output.txt + fi + + # create a development release: + if [[ "develop" == "$version" ]]; then # create the release: - echo "Create nightly release." - git tag -a $releaseName -m "Nightly development release '$version' on $(date +'%Y-%m-%d')" + echo "Create develop release." + git tag -a $releaseName -m "Development release '$version' on $(date +'%Y-%m-%d')" + git push origin $releaseName gh release create $releaseName -p --verify-tag \ -t "Development release for $(date +'%Y-%m-%d')" \ -F output.txt + fi + # create a branch release: + if [[ "$version" == branch* ]]; then + + # create the release: + echo "Create branch release." + git tag -a $releaseName -m "Branch release '$version' on $(date +'%Y-%m-%d')" + + git push origin $releaseName + gh release create $releaseName -p --verify-tag \ + -t "Branch release for $(date +'%Y-%m-%d')" \ + -F output.txt + fi + + # create a development (nightly) release: + if [[ "develop" == "$version" ]] || [[ "$version" == branch* ]]; then # add zip file to release. gh release upload $releaseName $zipName gh release upload $releaseName $tarName @@ -247,16 +314,6 @@ jobs: gh release upload $releaseName HEAD.txt else echo 'MAIN (real) release' - sudo chown -R runner:docker output.txt - # add text to output.txt (more instructions) - echo '' >> output.txt - echo '### Instructions' >> output.txt - echo '' >> output.txt - echo "* Installation instructions for [Docker](https://docs.firefly-iii.org/how-to/firefly-iii/installation/docker/), [Portainer](https://docs.firefly-iii.org/how-to/firefly-iii/installation/portainer/), [Kubernetes](https://docs.firefly-iii.org/how-to/firefly-iii/installation/kubernetes/) or [self-managed servers](https://docs.firefly-iii.org/how-to/firefly-iii/installation/self-managed/)" >> output.txt - echo "* Or read the upgrade instructions for [Docker](https://docs.firefly-iii.org/how-to/firefly-iii/upgrade/docker/), [Kubernetes](https://docs.firefly-iii.org/how-to/firefly-iii/upgrade/kubernetes/) or [self-managed servers](https://docs.firefly-iii.org/how-to/firefly-iii/upgrade/self-managed/)" >> output.txt - echo "* The releases are signed, and you can verify them using the [Firefly III releases PGP key](https://docs.firefly-iii.org/explanation/more-information/signatures/)." >> output.txt - - echo "Create default release." git tag -a $releaseName -m "Here be changelog" git push origin $releaseName gh release create $releaseName -F output.txt -t "$releaseName" --verify-tag diff --git a/composer.lock b/composer.lock index 3c3e58f09d..88f6734b8c 100644 --- a/composer.lock +++ b/composer.lock @@ -13558,7 +13558,7 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": {}, + "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, "platform": { @@ -13579,6 +13579,6 @@ "ext-xml": "*", "ext-xmlwriter": "*" }, - "platform-dev": {}, + "platform-dev": [], "plugin-api-version": "2.6.0" }