forked from jupyterhub/jupyter-remote-desktop-proxy
-
Notifications
You must be signed in to change notification settings - Fork 0
131 lines (114 loc) · 4.25 KB
/
release.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# 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: Release
# Always tests wheel building, but only publish to PyPI on pushed tags.
on:
# pull_request:
# paths-ignore:
# - "docs/**"
# - ".github/workflows/*.yaml"
# - "!.github/workflows/release.yaml"
push:
paths-ignore:
- "docs/**"
- ".github/workflows/*.yaml"
- "!.github/workflows/release.yaml"
branches-ignore:
- "dependabot/**"
- "pre-commit-ci-update-config"
tags: ["**"]
workflow_dispatch:
jobs:
build-release:
runs-on: ubuntu-22.04
permissions:
# id-token=write is required for pypa/gh-action-pypi-publish, and the PyPI
# project needs to be configured to trust this workflow.
#
# ref: https://github.com/jupyterhub/team-compass/issues/648
#
id-token: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: install build package
run: |
pip install --upgrade pip
pip install build
pip freeze
- name: build release
run: |
python -m build --sdist --wheel .
ls -l dist
- name: test to see if built js file is in the package
run: |
tar -tvf dist/*.tar.gz | grep dist/viewer.js
unzip -l dist/*.whl | grep dist/viewer.js
- name: publish to pypi
uses: pypa/gh-action-pypi-publish@release/v1
if: startsWith(github.ref, 'refs/tags/')
publish-images:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
include:
- vncserver: tigervnc
- vncserver: turbovnc
steps:
- uses: actions/checkout@v4
- name: Set up QEMU (for docker buildx)
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx (for multi-arch builds)
uses: docker/setup-buildx-action@v3
- name: Make decisions on pushing and suffix (based on vnc server chosen)
id: decisions
run: |
if [ "${{ startsWith(github.ref, 'refs/tags/') || (github.ref == 'refs/heads/main') }}" = "true" ]; then
echo "push=true" >> $GITHUB_OUTPUT
else
echo "push=false" >> $GITHUB_OUTPUT
fi
# We provide image tags with -tigervnc and -turbovnc suffixes to allow
# for an explicit choice, but also ship with a default choice of
# TigerVNC.
if [ "${{ matrix.vncserver == 'tigervnc' }}" == "true" ]; then
echo 'suffix="",-${{ matrix.vncserver }}' >> $GITHUB_OUTPUT
else
echo "suffix=-${{ matrix.vncserver }}" >> $GITHUB_OUTPUT
fi
# For builds triggered by a git tag 1.2.3, we calculate image tags like:
# [{prefix}:1.2.3, {prefix}:1.2, {prefix}:1, {prefix}:latest]
#
# More details at
# https://github.com/jupyterhub/action-major-minor-tag-calculator.
#
- name: Get image tags
id: tags
uses: jupyterhub/action-major-minor-tag-calculator@v3
with:
githubToken: ${{ secrets.GITHUB_TOKEN }}
prefix: "quay.io/jupyterhub/jupyter-remote-desktop-proxy:"
suffix: ${{ steps.decisions.outputs.suffix }}
branchRegex: ^\w[\w-.]*$
defaultTag: quay.io/jupyterhub/jupyter-remote-desktop-proxy:noref
- name: Login to container registry
# Credentials to Quay.io was setup by...
# 1. Creating a [Robot Account](https://quay.io/organization/jupyterhub?tab=robots)
# 2. Giving it push permissions to the image repository
# 3. Adding Robot Account credentials as workflow environment secrets
if: steps.decisions.outputs.push == 'true'
run: |
docker login -u "${{ secrets.QUAY_USERNAME }}" -p "${{ secrets.QUAY_PASSWORD }}" quay.io
- name: Build and push image
uses: docker/build-push-action@v5
with:
build-args: |
vncserver=${{ matrix.vncserver }}
context: .
platforms: linux/amd64,linux/arm64
push: ${{ steps.decisions.outputs.push }}
tags: ${{ join(fromJson(steps.tags.outputs.tags)) }}