Skip to content
82 changes: 30 additions & 52 deletions .github/workflows/dist.yml → .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Prepare source distributions and wheels
name: Release

on:
push:
Expand All @@ -12,71 +12,42 @@ on:
- '[0-9]+.[0-9]+.[0-9]+.rc[0-9]+'
pull_request:
paths:
- '.github/workflows/dist.yml'
- '.github/workflows/release.yml'
workflow_dispatch:
# Allow to run manually

jobs:

release_dist:

# This job first checks whether "configure --enable-download-from-upstream-url"
# (the default since #32390) is needed.
#
# In this way, we check that all necessary package tarballs
# have already been uploaded to the Sage server at the time
# of pushing a release tag.
#
# It also uses "bootstrap -D", thus checking that the "configure"
# tarball has been uploaded to the Sage server at the time
# of pushing a release tag.

package_tarballs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install bootstrap prerequisites
run: |
sudo DEBIAN_FRONTEND=noninteractive apt-get update
sudo DEBIAN_FRONTEND=noninteractive apt-get install $(build/bin/sage-get-system-packages debian _bootstrap _prereq)
- name: make dist (--disable-download-from-upstream-url)
id: make_dist
run: |
./bootstrap -D && ./configure --disable-download-from-upstream-url && make dist
env:
MAKE: make -j8
- name: make download (--disable-download-from-upstream-url)
id: make_download
run: |
make -k download DOWNLOAD_PACKAGES=":all: --no-file huge"
env:
MAKE: make -j8
- name: Reconfigure with --enable-download-from-upstream-url
if: (success() || failure()) && (steps.make_dist.outcome != 'success' || steps.make_download.outcome != 'success')

- name: Configure
run: |
./bootstrap
./configure
- name: make dist (--enable-download-from-upstream-url)
if: (success() || failure()) && steps.make_dist.outcome != 'success'
run: |
make dist
env:
MAKE: make -j8
- name: make download (--enable-download-from-upstream-url)
if: (success() || failure()) && steps.make_download.outcome != 'success'

- name: Download tarballs of all packages
run: |
make -k download DOWNLOAD_PACKAGES=":all: --no-file huge --allow-upstream"
env:
MAKE: make -j8
build/bin/sage-package download :all: --no-file huge --allow-upstream

- name: Remove what cannot be distributed
if: success() || failure()
run: |
rm -f upstream/*do-not-distribute*

- name: List files
run: |
ls -l upstream

- uses: actions/upload-artifact@v4
if: success() || failure()
with:
path: |
dist/*.tar.gz
upstream
name: release_dist
path: upstream
name: package_tarballs

sdists:

Expand Down Expand Up @@ -118,30 +89,37 @@ jobs:
if: env.CAN_DEPLOY == 'true'

release:
needs: [release_dist, sdists]
needs: [package_tarballs, sdists]
runs-on: ubuntu-latest
if: github.ref_type == 'tag'
permissions:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am waiting for a reply.

contents: write
discussions: write
steps:
- uses: actions/download-artifact@v4
with:
name: release_dist
name: package_tarballs
path: tarballs

- uses: actions/download-artifact@v4
with:
name: dist
path: dist

- name: Create release assets
- name: List files
run: |
ls -l -R dist
ls -l -R tarballs

- name: Create release
uses: softprops/action-gh-release@v2
with:
files: |
dist/*
upstream/*
token: ${{ secrets.RELEASE_CREATION_TOKEN }}
tarballs/*
token: ${{ github.ref_type == 'tag' && secrets.RELEASE_CREATION_TOKEN || 'FAIL' }}
generate_release_notes: true
prerelease: ${{ contains(github.ref_name, 'beta') || contains(github.ref_name, 'rc') }}
discussion_category_name: announcements
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
discussion_category_name: announcements

I'm not opposed to replacing the sage-release mailing list like you suggested, but I agree with @kwankyu that there should be a discussion about it first on sage-devel.

If we do decide to announce releases on GitHub Discussions, I would really prefer that we have a dedicated "Release Announcements" category and keep the regular "Announcements" category for more substantial/important announcements (otherwise people will likely mute the announcements channel and miss important announcements).

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As for testing it here for a few weeks before bringing it to sage-devel, I think looking at the conky repo you linked which does this is sufficient for getting a feel for it. My feeling from looking at https://github.com/brndnmtthws/conky/discussions/categories/general is that the automated posts to a category that has other uses will flood the category and make it hard to find more important discussions (which is why I would want a dedicated category for this).

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can create a dedicated category (perhaps "Releases" or "Release Announcements") when sage-devel decides to switch to github discussion.

I don't know if posting release announcements to a dedicated category is possible, by the way.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can create a dedicated category (perhaps "Releases" or "Release Announcements") when sage-devel decides to switch to github discussion.

I don't know if posting release announcements to a dedicated category is possible, by the way.

In the workflow @tobiasdiez gives the name of the category to post to, so it should just be a matter of changing that to whatever you name the discussion category for release announcements.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've now renamed the category to "Release". Since it's easy to just delete the category with all it's posts again, this should give a suitable testing env. But if you feel this should be discussed on sage-devel before testing it out in the sage repo, may I ask you to open such a discussion?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will post an announcement after this PR is merged, that releases are now also on GH discussions and that people are invited to try to post/interact there and that after some testing phase we can decide to replace sage-release or to end the experiment.

I worry that this will give the impression to the community that switching to GH discussion is already implemented and we are forcing the community to adopt it.

I agree with: "... looking at the conky repo you linked which does this is sufficient for getting a feel for it."

I don't know what to write before this PR is merged, as there is nothing for people to see or try out yet. So what was your idea to post now to sage-devel?

Just ask the community to look around the conky repo, and propose replacing the sage-release to release announcements in our own github discussion.

Copy link
Contributor Author

@tobiasdiez tobiasdiez Sep 23, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the suggestion, but I still think it's better to give people an actual preview of how it would look like instead of a copy in some random, unrelated repo. Especially since this preview very simple to implement and can be reverted easily.

I also don't have time at the moment to write something suitable for sage-devel...

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@vbraun Your opinion?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My opinion is that these notes are only needed for real releases.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This issue is still disputed.


build_wheels:
# Temporarily disabled due to build errors
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
10.4

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
10.4

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
10.4
Loading