-
Notifications
You must be signed in to change notification settings - Fork 710
156 lines (135 loc) · 4.47 KB
/
libnvme-release-python.yml
File metadata and controls
156 lines (135 loc) · 4.47 KB
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
153
154
155
156
---
# SPDX-License-Identifier: GPL-2.0-or-later
#
# This file is part of nvme.
# Copyright (c) 2026 SUSE LLC
#
# Authors: Daniel Wagner <[email protected]>
name: Release Python
on:
push:
branches: [master]
tags:
- '**'
workflow_dispatch:
inputs:
tag:
description: 'Tag to check out'
required: false
jobs:
build_sdist:
name: Build source distribution
runs-on: ubuntu-latest
env:
PYTHON_VERSION: "3.10"
container:
image: ghcr.io/linux-nvme/debian:latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Allow workspace
run: |
git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Build sdist
run: |
pipx run build --sdist
- name: Validate sdist
run: |
pipx run twine check dist/*.tar.gz
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
path: dist/*.tar.gz
retention-days: 5
build_test_sdist:
name: Build test source distribution
runs-on: ubuntu-latest
env:
PYTHON_VERSION: "3.10"
container:
image: ghcr.io/linux-nvme/debian.python:latest
steps:
- name: Check out repository (with tags)
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0 # Required for `git describe`
- name: Allow workspace
run: |
git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Configure git identity for CI
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Compute dev version from git
id: version
run: |
TAG=$(git describe --tags --abbrev=0)
REV=$(git rev-list HEAD --count)
BASE_VERSION="${TAG#v}"
VERSION="${BASE_VERSION}.dev${REV}"
echo "dev_version=$VERSION" >> $GITHUB_OUTPUT
echo "Computed dev version: $VERSION"
- name: Patch project version in meson.build
env:
DEV_VERSION: ${{ steps.version.outputs.dev_version }}
run: |
sed -i -e "/^project(/,/)/ s/^\(\s*\)version:\s*.*/\1version: '${DEV_VERSION}',/" meson.build
- name: Commit CI version bump
env:
DEV_VERSION: ${{ steps.version.outputs.dev_version }}
run: |
git add meson.build
git commit -m "ci: set project version to ${DEV_VERSION}"
- name: Build sdist
run: |
pipx run build --sdist
- name: Validate sdist
run: |
pipx run twine check dist/*.tar.gz
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: test_pypi
path: dist/*.tar.gz
retention-days: 5
upload_test_pypi:
needs: [build_test_sdist]
runs-on: ubuntu-latest
env:
PYTHON_VERSION: "3.10"
environment: pypi
permissions:
id-token: write
if: github.repository == 'linux-nvme/nvme-cli' && github.ref_type == 'branch'
steps:
- uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0
with:
name: test_pypi
path: dist
- name: Publish package to TestPyPI
uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
with:
repository-url: https://test.pypi.org/legacy/
#skip_existing: true
upload_pypi:
needs: [build_sdist]
runs-on: ubuntu-latest
env:
PYTHON_VERSION: "3.10"
environment: pypi
permissions:
id-token: write
if: startsWith(github.ref, 'refs/tags/v') && github.repository == 'linux-nvme/nvme-cli'
steps:
- name: Check if it is a release tag
id: check-tag
run: |
if [[ ${{ github.event.ref }} =~ ^refs/tags/v([0-9]+\.[0-9]+)(\.[0-9]+)?(-rc[0-9]+)?$ ]]; then
echo ::set-output name=match::true
fi
- name: Download artifiact
uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v8.0.0
if: steps.check-tag.outputs.match == 'true'
with:
name: artifact
path: dist
- name: Publish package to PyPI
uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
if: steps.check-tag.outputs.match == 'true'