kopia lustrzana https://github.com/jupyterhub/repo2docker
131 wiersze
4.0 KiB
YAML
131 wiersze
4.0 KiB
YAML
# This is a GitHub workflow defining a set of jobs with a set of steps.
|
|
# ref: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions
|
|
#
|
|
name: Publish
|
|
|
|
on:
|
|
pull_request:
|
|
paths-ignore:
|
|
- "docs/**"
|
|
- "**.md"
|
|
- "**.rst"
|
|
- ".github/workflows/*"
|
|
- "!.github/workflows/release.yml"
|
|
push:
|
|
paths-ignore:
|
|
- "docs/**"
|
|
- "**.md"
|
|
- "**.rst"
|
|
- ".github/workflows/*"
|
|
- "!.github/workflows/release.yml"
|
|
branches-ignore:
|
|
- "dependabot/**"
|
|
- "pre-commit-ci-update-config"
|
|
tags:
|
|
- "**"
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build-n-publish:
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-python@v4
|
|
with:
|
|
python-version: "3.9"
|
|
|
|
- name: install build requirements
|
|
run: |
|
|
pip install build
|
|
pip freeze
|
|
|
|
- name: build release
|
|
run: |
|
|
python -m build --sdist --wheel .
|
|
ls -l dist
|
|
|
|
# ref: https://github.com/actions/upload-artifact#readme
|
|
- uses: actions/upload-artifact@v3
|
|
with:
|
|
name: repo2docker-${{ github.sha }}
|
|
path: "dist/*"
|
|
if-no-files-found: error
|
|
|
|
# This step is only run when a new tag is pushed
|
|
# all previous steps always run in order to exercise them
|
|
- name: Publish distribution to PyPI
|
|
if: startsWith(github.ref, 'refs/tags')
|
|
uses: pypa/gh-action-pypi-publish@v1.6.4
|
|
with:
|
|
password: ${{ secrets.PYPI_PASSWORD }}
|
|
|
|
publish-docker:
|
|
runs-on: ubuntu-22.04
|
|
env:
|
|
DEFAULT_REGISTRY: quay.io
|
|
IMAGE_NAME: jupyterhub/repo2docker
|
|
|
|
services:
|
|
# So that we can test this in PRs/branches
|
|
local-registry:
|
|
image: registry:2
|
|
ports:
|
|
- 5000:5000
|
|
|
|
steps:
|
|
- name: Should we push this image to a public registry?
|
|
run: |
|
|
if [ "${{ startsWith(github.ref, 'refs/tags/') || (github.ref == 'refs/heads/main') }}" = "true" ]; then
|
|
REGISTRY=$DEFAULT_REGISTRY
|
|
else
|
|
REGISTRY=localhost:5000
|
|
fi
|
|
echo "REGISTRY=$REGISTRY" >> $GITHUB_ENV
|
|
echo "Publishing to $REGISTRY"
|
|
|
|
# versioneer requires the full git history for non-tags
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
# Setup docker to build for multiple platforms, see:
|
|
# https://github.com/docker/build-push-action/tree/v2.4.0#usage
|
|
# https://github.com/docker/build-push-action/blob/v2.4.0/docs/advanced/multi-platform.md
|
|
- name: Set up QEMU (for docker buildx)
|
|
uses: docker/setup-qemu-action@v2
|
|
|
|
- name: Set up Docker Buildx (for multi-arch builds)
|
|
uses: docker/setup-buildx-action@v2
|
|
with:
|
|
# Allows pushing to registry on localhost:5000
|
|
driver-opts: network=host
|
|
|
|
- name: Setup push rights to Docker registry
|
|
if: env.REGISTRY != 'localhost:5000'
|
|
run: |
|
|
docker login -u "${{ secrets.DOCKER_REGISTRY_USERNAME }}" -p "${{ secrets.DOCKER_REGISTRY_TOKEN }}" "${{ env.REGISTRY }}"
|
|
|
|
# when building jupyter/repo2docker:master
|
|
# also push jupyter/repo2docker:1.2.3-3.abcd1234 (replace + with -)
|
|
- name: Get list of repo2docker docker tags
|
|
run: |
|
|
VERSION=$(python3 -c 'import versioneer; print(versioneer.get_version().replace("+", "-"))')
|
|
TAGS="${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:$VERSION"
|
|
if [ "${{ github.ref }}" == "refs/heads/main" ]; then
|
|
TAGS="$TAGS,${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:main"
|
|
fi
|
|
if [ "${{ startsWith(github.ref, 'refs/tags/') }}" = "true" ]; then
|
|
TAGS="$TAGS,${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest"
|
|
fi
|
|
|
|
echo "TAGS=$TAGS"
|
|
echo "TAGS=$TAGS" >> $GITHUB_ENV
|
|
|
|
- name: Build and push repo2docker
|
|
uses: docker/build-push-action@v3
|
|
with:
|
|
context: .
|
|
platforms: linux/amd64,linux/arm64
|
|
push: true
|
|
tags: ${{ env.TAGS }}
|