-
Notifications
You must be signed in to change notification settings - Fork 450
152 lines (130 loc) · 4.42 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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
name: Release in Pypi/DockerHub
on:
push:
branches:
- main
jobs:
build:
# Any commit message that contains the phrase 'Bump Version' will trigger the release process.
# We have an additional safety mechanism in the upload to PyPI step that requires manual approval.
# This is to prevent accidental releases. All other steps (eg build, upload to GitHub) are reversible
if: ${{ startsWith(github.event.head_commit.message, 'Bump Version') }}
runs-on: ubuntu-latest
defaults:
run:
shell: bash
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Set up Python 3.8
id: setup-python
uses: actions/setup-python@v4
with:
python-version: '3.8'
- name: Install dependencies
run: python -m pip install --upgrade build
- name: Build
run: python -m build
# smoke-test that build is valid
- name: Check wheel contents
run: |
python -m pip install check-wheel-contents
check-wheel-contents dist
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
path: ./dist
#---------------------------------------------------
# Build GitHub Artifacts
#---------------------------------------------------
test-build:
needs: ['build']
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v3
- name: Set up Python 3.8
uses: actions/setup-python@v4
with:
python-version: '3.8'
# Artifacts located in artifact/
- name: Download artifact
uses: actions/download-artifact@v3
- name: Install wheel
run: python -m pip install artifact/*.whl
- name: Set version for tagging
id: set-version
run: |
export PACKAGE_VERSION=$(python -c "import superduperdb as s; print(s.__version__)")
echo "package_version=${PACKAGE_VERSION}" >> $GITHUB_OUTPUT
outputs:
package_version: ${{ steps.set-version.outputs.package_version }}
#---------------------------------------------------
# Publish GitHub Artifacts
#---------------------------------------------------
create-release:
needs: ['test-build']
runs-on: ubuntu-latest
permissions:
contents: write
steps:
# Artifacts located in artifact/
- name: Download artifact
uses: actions/download-artifact@v3
- name: create release
run: >
gh release create ${{ needs.test-build.outputs.package_version }}
--repo ${{ github.repository }} --generate-notes
artifact/*
env:
GH_TOKEN: ${{ github.token }}
#---------------------------------------------------
# Publish SuperDuperDB in Pypi
#---------------------------------------------------
publish-pypi:
needs: ['create-release']
# Environment waits for approval before attempting to upload to PyPI.
# This allows reviewing the files in the release on GitHub.
environment: publish-pypi
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- uses: actions/download-artifact@v3
# Try uploading to Test PyPI first, in case something fails.
- uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: https://test.pypi.org/legacy/
packages-dir: artifact/
- uses: pypa/gh-action-pypi-publish@release/v1
with:
packages-dir: artifact/
#---------------------------------------------------
# Publish SuperDuperDB in DockerHub
#---------------------------------------------------
publish-docker:
needs: ['publish-pypi']
runs-on: ubuntu-latest
steps:
- name: Check out the repo
uses: actions/checkout@v4
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Docker Cache
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Push Base Docker image
run: |
make build_superduperdb
make push_superduperdb
- name: Push Demo Docker image
run: |
make build_demo
make push_demo