forked from sagemath/sage
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
2 changed files
with
132 additions
and
5 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 |
---|---|---|
@@ -0,0 +1,126 @@ | ||
name: Build Docker images and push to DockerHub | ||
|
||
on: | ||
workflow_dispatch: | ||
# Allow to run manually | ||
branches: | ||
- 'develop' | ||
- 'docker_hub_gha' | ||
push: | ||
tags: | ||
# Just create image on pushing a tag | ||
- '*' | ||
|
||
jobs: | ||
sagemath-dev: | ||
name: Build Docker image on target make-build and push to DockerHub sagemath-dev | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
|
||
- name: Set tag | ||
# docker/metadata-action@v4 is not used since we need to distinguish | ||
# between latest and develop tags | ||
id: set_tag | ||
run: | | ||
git fetch --depth=1 origin +refs/tags/*:refs/tags/* | ||
TAG_NAME=$(git tag --sort=v:refname | tail -1) | ||
TAG="sagemath/sagemath-dev:$TAG_NAME" | ||
TAG_LIST="$TAG, sagemath/sagemath-dev:develop" | ||
TAG_LIST="$TAG" # don't tag develop until meaning of sagemath-dev is clear | ||
echo "TAG_NAME=$TAG_NAME" >> $GITHUB_ENV | ||
echo "TAG=$TAG" >> $GITHUB_ENV | ||
echo "TAG_LIST=$TAG_LIST" >> $GITHUB_ENV | ||
- name: Update Tag List | ||
id: upd_tag_list | ||
run: | | ||
TAG_LIST="${{ env.TAG_LIST }}, sagemath/sagemath-dev:latest" | ||
TAG_LIST="${{ env.TAG_LIST }}" # don't tag latest until meaning of sagemath-dev is clear | ||
echo "TAG_LIST=$TAG_LIST" >> $GITHUB_ENV | ||
if: "!contains(env.TAG_NAME, 'beta') && !contains(env.TAG_NAME, 'rc')" | ||
|
||
- name: Check env | ||
run: | | ||
echo ${{ env.TAG_NAME }} | ||
echo ${{ env.TAG }} | ||
echo ${{ env.TAG_LIST }} | ||
- name: Set up QEMU | ||
uses: docker/setup-qemu-action@v2 | ||
|
||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v2 | ||
|
||
- name: Login to Docker Hub | ||
uses: docker/login-action@v2 | ||
with: | ||
username: ${{ secrets.DOCKERHUB_USERNAME }} | ||
password: ${{ secrets.DOCKERHUB_TOKEN }} | ||
|
||
- name: Build and push make-build | ||
uses: docker/build-push-action@v4 | ||
with: | ||
context: . | ||
file: docker/Dockerfile | ||
target: make-build # see the corresponding header-note | ||
push: true | ||
tags: ${{ env.TAG_LIST }} | ||
cache-from: type=gha | ||
cache-to: type=gha,mode=max | ||
|
||
sagemath: | ||
needs: sagemath-dev | ||
name: Build Docker image on target sagemath and push to DockerHub sagemath | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
|
||
- name: Set tag | ||
# docker/metadata-action@v4 is not used since we need to distinguish | ||
# between latest and develop tags | ||
id: set_tag | ||
run: | | ||
git fetch --depth=1 origin +refs/tags/*:refs/tags/* | ||
TAG_NAME=$(git tag --sort=v:refname | tail -1) | ||
TAG="sagemath/sagemath:$TAG_NAME" | ||
TAG_LIST="$TAG, sagemath/sagemath:develop" | ||
BASE="sagemath/sagemath-dev:$TAG_NAME" | ||
echo "TAG_NAME=$TAG_NAME" >> $GITHUB_ENV | ||
echo "TAG=$TAG" >> $GITHUB_ENV | ||
echo "TAG_LIST=$TAG_LIST" >> $GITHUB_ENV | ||
echo "BASE=$BASE" >> $GITHUB_ENV | ||
- name: Update Tag List | ||
id: upd_tag_list | ||
run: | | ||
TAG_LIST="${{ env.TAG_LIST }}, sagemath/sagemath:latest" | ||
echo "TAG_LIST=$TAG_LIST" >> $GITHUB_ENV | ||
if: "!contains(env.TAG_NAME, 'beta') && !contains(env.TAG_NAME, 'rc')" | ||
|
||
- name: Set up QEMU | ||
uses: docker/setup-qemu-action@v2 | ||
|
||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v2 | ||
|
||
- name: Login to Docker Hub | ||
uses: docker/login-action@v2 | ||
with: | ||
username: ${{ secrets.DOCKERHUB_USERNAME }} | ||
password: ${{ secrets.DOCKERHUB_TOKEN }} | ||
|
||
- name: Build and push sagemath | ||
uses: docker/build-push-action@v4 | ||
with: | ||
context: . | ||
file: docker/Dockerfile | ||
build-args: | | ||
MAKE_BUILD=${{ env.BASE }} | ||
target: sagemath | ||
push: true | ||
tags: ${{ env.TAG_LIST }} | ||
cache-from: type=gha | ||
cache-to: type=gha,mode=max |
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 |
---|---|---|
|
@@ -70,11 +70,12 @@ | |
|
||
|
||
ARG ARTIFACT_BASE=source-clean | ||
ARG MAKE_BUILD=make-build | ||
|
||
################################################################################ | ||
# Image containing the run-time dependencies for Sage # | ||
################################################################################ | ||
FROM ubuntu:jammy as run-time-dependencies | ||
FROM ubuntu:latest as run-time-dependencies | ||
LABEL maintainer="Erik M. Bray <[email protected]>, Julian Rüth <[email protected]>" | ||
# Set sane defaults for common environment variables. | ||
ENV LC_ALL C.UTF-8 | ||
|
@@ -122,7 +123,7 @@ ARG SAGE_ROOT=/home/sage/sage | |
RUN mkdir -p "$SAGE_ROOT" | ||
WORKDIR $SAGE_ROOT | ||
RUN git init | ||
RUN git remote add trac https://gitlab.com/sagemath/dev/tracmirror.git | ||
RUN git remote add upstream https://github.com/sagemath/sage.git | ||
|
||
################################################################################ | ||
# Image with the build context added, i.e., the directory from which `docker # | ||
|
@@ -155,10 +156,10 @@ WORKDIR $SAGE_ROOT | |
# We create a list of all files present in the artifact-base (with a timestamp | ||
# of now) so we can find out later which files were added/changed/removed. | ||
RUN find . \( -type f -or -type l \) > $HOME/artifact-base.manifest | ||
RUN git fetch "$HOME/sage-context" HEAD \ | ||
RUN git fetch --update-shallow "$HOME/sage-context" HEAD \ | ||
&& if [ -e docker/.commit ]; then \ | ||
git reset `cat docker/.commit` \ | ||
|| ( echo "Could not find commit `cat docker/.commit` in your local Git history. Please merge in the latest built develop branch to fix this: git fetch trac && git merge `cat docker/.commit`." && exit 1 ) \ | ||
|| ( echo "Could not find commit `cat docker/.commit` in your local Git history. Please merge in the latest built develop branch to fix this: git fetch upstream && git merge `cat docker/.commit`." && exit 1 ) \ | ||
else \ | ||
echo "You are building from $ARTIFACT_BASE which has no docker/.commit file. That's a bug unless you are building from source-clean or something similar." \ | ||
&& git reset FETCH_HEAD \ | ||
|
@@ -203,7 +204,7 @@ RUN make build | |
################################################################################ | ||
# Image with a full build of sage and its documentation. # | ||
################################################################################ | ||
FROM make-build as make-all | ||
FROM $MAKE_BUILD as make-all | ||
# The docbuild needs quite some RAM (as of May 2018). It sometimes calls | ||
# os.fork() to spawn an external program which then exceeds easily the | ||
# overcommit limit of the system (no RAM is actually used, but this limit is | ||
|