Skip to content

Commit fef0874

Browse files
janbucharApify Release Bot
andauthored
ci: Use the release-metadata action (#597)
- closes #598 --------- Co-authored-by: Apify Release Bot <noreply@apify.com>
1 parent da11612 commit fef0874

9 files changed

Lines changed: 175 additions & 435 deletions

File tree

.github/workflows/_publish_to_pypi.yaml

Lines changed: 0 additions & 70 deletions
This file was deleted.

.github/workflows/pre_release.yaml

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
name: Create a pre-release
2+
3+
on:
4+
# Trigger a beta version release (pre-release) on push to the master branch.
5+
push:
6+
branches:
7+
- master
8+
tags-ignore:
9+
- "**" # Ignore all tags to prevent duplicate builds when tags are pushed.
10+
11+
jobs:
12+
release_metadata:
13+
name: Prepare release metadata
14+
runs-on: ubuntu-latest
15+
outputs:
16+
version_number: ${{ steps.release_metadata.outputs.version_number }}
17+
tag_name: ${{ steps.release_metadata.outputs.tag_name }}
18+
changelog: ${{ steps.release_metadata.outputs.changelog }}
19+
steps:
20+
- uses: apify/workflows/git-cliff-release@main
21+
id: release_metadata
22+
name: Prepare release metadata
23+
with:
24+
release_type: prerelease
25+
26+
lint_check:
27+
name: Lint check
28+
uses: apify/workflows/.github/workflows/python_lint_check.yaml@main
29+
30+
type_check:
31+
name: Type check
32+
uses: apify/workflows/.github/workflows/python_type_check.yaml@main
33+
34+
unit_tests:
35+
name: Unit tests
36+
uses: apify/workflows/.github/workflows/python_unit_tests.yaml@main
37+
38+
update_changelog:
39+
name: Update changelog
40+
needs: [release_metadata, lint_check, type_check, unit_tests]
41+
uses: apify/workflows/.github/workflows/python_bump_and_update_changelog.yaml@main
42+
with:
43+
version_number: ${{ needs.release_metadata.outputs.version_number }}
44+
changelog: ${{ needs.release_metadata.outputs.changelog }}
45+
secrets:
46+
APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
47+
48+
publish_to_pypi:
49+
name: Publish to PyPI
50+
needs: [release_metadata, update_changelog]
51+
runs-on: ubuntu-latest
52+
permissions:
53+
contents: write
54+
id-token: write # Required for OIDC authentication.
55+
environment:
56+
name: pypi
57+
url: https://pypi.org/project/crawlee
58+
steps:
59+
- name: Prepare distribution
60+
uses: apify/workflows/prepare-pypi-distribution@main
61+
with:
62+
package_name: crawlee
63+
is_prerelease: "yes"
64+
version_number: ${{ needs.release_metadata.outputs.version_number }}
65+
ref: ${{ needs.update_changelog.changelog_commitish }}
66+
# Publishes the package to PyPI using PyPA official GitHub action with OIDC authentication.
67+
- name: Publish package to PyPI
68+
uses: pypa/gh-action-pypi-publish@release/v1
69+
70+
# TODO: add job for publish package to Conda
71+
# https://github.com/apify/crawlee-python/issues/104

.github/workflows/release.yaml

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
name: Create a release
2+
3+
on:
4+
# Trigger a stable version release via GitHub's UI, with the ability to specify the type of release.
5+
workflow_dispatch:
6+
inputs:
7+
release_type:
8+
description: Release type
9+
required: true
10+
type: choice
11+
default: auto
12+
options:
13+
- auto
14+
- custom
15+
- patch
16+
- minor
17+
- major
18+
custom_version:
19+
description: The custom version to bump to (only for "custom" type)
20+
required: false
21+
type: string
22+
default: ""
23+
24+
jobs:
25+
release_metadata:
26+
if: "!startsWith(github.event.head_commit.message, 'docs') && !startsWith(github.event.head_commit.message, 'ci')"
27+
name: Prepare release metadata
28+
runs-on: ubuntu-latest
29+
outputs:
30+
version_number: ${{ steps.release_metadata.outputs.version_number }}
31+
tag_name: ${{ steps.release_metadata.outputs.tag_name }}
32+
changelog: ${{ steps.release_metadata.outputs.changelog }}
33+
release_notes:: ${{ steps.release_metadata.outputs.release_notes }}
34+
steps:
35+
- uses: apify/workflows/git-cliff-release@main
36+
name: Prepare release metadata
37+
id: release_metadata
38+
with:
39+
release_type: ${{ inputs.release_type }}
40+
custom_version: ${{ inputs.custom_version }}
41+
42+
lint_check:
43+
name: Lint check
44+
uses: apify/workflows/.github/workflows/python_lint_check.yaml@main
45+
46+
type_check:
47+
name: Type check
48+
uses: apify/workflows/.github/workflows/python_type_check.yaml@main
49+
50+
unit_tests:
51+
name: Unit tests
52+
uses: apify/workflows/.github/workflows/python_unit_tests.yaml@main
53+
54+
update_changelog:
55+
name: Update changelog
56+
needs: [release_metadata, lint_check, type_check, unit_tests]
57+
uses: apify/workflows/.github/workflows/python_bump_and_update_changelog.yaml@main
58+
with:
59+
version_number: ${{ needs.release_metadata.outputs.version_number }}
60+
changelog: ${{ needs.release_metadata.outputs.changelog }}
61+
secrets:
62+
APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
63+
64+
create_github_release:
65+
name: Create github release
66+
needs: [release_metadata, update_changelog]
67+
runs-on: ubuntu-latest
68+
env:
69+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
70+
steps:
71+
- name: Create release
72+
uses: softprops/action-gh-release@v2
73+
with:
74+
tag_name: ${{ needs.release_metadata.outputs.tag_name }}
75+
name: ${{ needs.release_metadata.outputs.version_number }}
76+
target_commitish: ${{ needs.update_changelog.outputs.changelog_commitish }}
77+
body: ${{ needs.release_metadata.outputs.release_notes }}
78+
79+
publish_to_pypi:
80+
name: Publish to PyPI
81+
needs: [release_metadata, update_changelog]
82+
runs-on: ubuntu-latest
83+
permissions:
84+
contents: write
85+
id-token: write # Required for OIDC authentication.
86+
environment:
87+
name: pypi
88+
url: https://pypi.org/project/crawlee
89+
steps:
90+
- name: Prepare distribution
91+
uses: apify/workflows/prepare-pypi-distribution@main
92+
with:
93+
package_name: crawlee
94+
is_prerelease: ""
95+
version_number: ${{ needs.release_metadata.outputs.version_number }}
96+
ref: ${{ needs.update_changelog.changelog_commitish }}
97+
# Publishes the package to PyPI using PyPA official GitHub action with OIDC authentication.
98+
- name: Publish package to PyPI
99+
uses: pypa/gh-action-pypi-publish@release/v1
100+
101+
# TODO: add job for publish package to Conda
102+
# https://github.com/apify/crawlee-python/issues/104

0 commit comments

Comments
 (0)