Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

ci: Automate the release process #302

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 15 commits into from
Oct 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 0 additions & 30 deletions 30 .github/workflows/_changelog_entry_check.yaml

This file was deleted.

30 changes: 0 additions & 30 deletions 30 .github/workflows/_version_conflict_check.yaml

This file was deleted.

90 changes: 90 additions & 0 deletions 90 .github/workflows/pre_release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
name: Create a pre-release

on:
# Trigger a beta version release (pre-release) on push to the master branch.
push:
branches:
- master
tags-ignore:
- "**" # Ignore all tags to prevent duplicate builds when tags are pushed.

jobs:
release_metadata:
if: "!startsWith(github.event.head_commit.message, 'docs') && !startsWith(github.event.head_commit.message, 'ci') && startsWith(github.repository, 'apify/')"
name: Prepare release metadata
runs-on: ubuntu-latest
outputs:
version_number: ${{ steps.release_metadata.outputs.version_number }}
tag_name: ${{ steps.release_metadata.outputs.tag_name }}
changelog: ${{ steps.release_metadata.outputs.changelog }}
existing_changelog_path: CHANGELOG.md
steps:
- uses: apify/workflows/git-cliff-release@main
id: release_metadata
name: Prepare release metadata
with:
release_type: prerelease

lint_check:
name: Lint check
uses: apify/workflows/.github/workflows/python_lint_check.yaml@main

type_check:
name: Type check
uses: apify/workflows/.github/workflows/python_type_check.yaml@main

unit_tests:
name: Unit tests
uses: apify/workflows/.github/workflows/python_unit_tests.yaml@main

integration_tests:
name: Integration tests
uses: apify/workflows/.github/workflows/python_integration_tests.yaml@main
secrets: inherit

update_changelog:
name: Update changelog
needs: [release_metadata, lint_check, type_check, unit_tests, integration_tests]
uses: apify/workflows/.github/workflows/python_bump_and_update_changelog.yaml@main
with:
version_number: ${{ needs.release_metadata.outputs.version_number }}
changelog: ${{ needs.release_metadata.outputs.changelog }}
secrets:
APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}

publish_to_pypi:
name: Publish to PyPI
needs: [release_metadata, update_changelog]
runs-on: ubuntu-latest
permissions:
contents: write
id-token: write # Required for OIDC authentication.
environment:
name: pypi
url: https://pypi.org/project/apify
steps:
- name: Prepare distribution
uses: apify/workflows/prepare-pypi-distribution@main
with:
package_name: apify
is_prerelease: "yes"
version_number: ${{ needs.release_metadata.outputs.version_number }}
ref: ${{ needs.update_changelog.changelog_commitish }}
# Publishes the package to PyPI using PyPA official GitHub action with OIDC authentication.
- name: Publish package to PyPI
uses: pypa/gh-action-pypi-publish@release/v1

trigger_docker_build:
name: Trigger Docker image build
needs: [release_metadata, update_changelog]
runs-on: ubuntu-latest
steps:
- # Trigger building the Python Docker images in apify/apify-actor-docker repo
name: Trigger Docker image build
run: |
gh api -X POST "/repos/apify/apify-actor-docker/dispatches" \
-F event_type=build-python-images \
-F client_payload[release_tag]=beta \
-F client_payload[apify_version]=${{ needs.release_metadata.outputs.version_number }}
env:
GH_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
119 changes: 119 additions & 0 deletions 119 .github/workflows/release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
name: Create a release

on:
# Trigger a stable version release via GitHub's UI, with the ability to specify the type of release.
workflow_dispatch:
inputs:
release_type:
description: Release type
required: true
type: choice
default: auto
options:
- auto
- custom
- patch
- minor
- major
custom_version:
description: The custom version to bump to (only for "custom" type)
required: false
type: string
default: ""

jobs:
release_metadata:
name: Prepare release metadata
runs-on: ubuntu-latest
outputs:
version_number: ${{ steps.release_metadata.outputs.version_number }}
tag_name: ${{ steps.release_metadata.outputs.tag_name }}
changelog: ${{ steps.release_metadata.outputs.changelog }}
release_notes: ${{ steps.release_metadata.outputs.release_notes }}
steps:
- uses: apify/workflows/git-cliff-release@main
name: Prepare release metadata
id: release_metadata
with:
release_type: ${{ inputs.release_type }}
custom_version: ${{ inputs.custom_version }}
existing_changelog_path: CHANGELOG.md

lint_check:
name: Lint check
uses: apify/workflows/.github/workflows/python_lint_check.yaml@main

type_check:
name: Type check
uses: apify/workflows/.github/workflows/python_type_check.yaml@main

unit_tests:
name: Unit tests
uses: apify/workflows/.github/workflows/python_unit_tests.yaml@main

integration_tests:
name: Integration tests
uses: apify/workflows/.github/workflows/python_integration_tests.yaml@main
secrets: inherit

update_changelog:
name: Update changelog
needs: [release_metadata, lint_check, type_check, unit_tests, integration_tests]
uses: apify/workflows/.github/workflows/python_bump_and_update_changelog.yaml@main
with:
version_number: ${{ needs.release_metadata.outputs.version_number }}
changelog: ${{ needs.release_metadata.outputs.changelog }}
secrets:
APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}

create_github_release:
name: Create github release
needs: [release_metadata, update_changelog]
runs-on: ubuntu-latest
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Create release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ needs.release_metadata.outputs.tag_name }}
name: ${{ needs.release_metadata.outputs.version_number }}
target_commitish: ${{ needs.update_changelog.outputs.changelog_commitish }}
body: ${{ needs.release_metadata.outputs.release_notes }}

publish_to_pypi:
name: Publish to PyPI
needs: [release_metadata, update_changelog]
runs-on: ubuntu-latest
permissions:
contents: write
id-token: write # Required for OIDC authentication.
environment:
name: pypi
url: https://pypi.org/project/apify
steps:
- name: Prepare distribution
uses: apify/workflows/prepare-pypi-distribution@main
with:
package_name: apify
is_prerelease: ""
version_number: ${{ needs.release_metadata.outputs.version_number }}
ref: ${{ needs.update_changelog.outputs.changelog_commitish }}
# Publishes the package to PyPI using PyPA official GitHub action with OIDC authentication.
- name: Publish package to PyPI
uses: pypa/gh-action-pypi-publish@release/v1

trigger_docker_build:
name: Trigger Docker image build
needs: [release_metadata, update_changelog]
runs-on: ubuntu-latest
steps:
- # Trigger building the Python Docker images in apify/apify-actor-docker repo
name: Trigger Docker image build
run: |
gh api -X POST "/repos/apify/apify-actor-docker/dispatches" \
-F event_type=build-python-images \
-F client_payload[release_tag]=latest \
-F client_payload[apify_version]=${{ needs.release_metadata.outputs.version_number }}
env:
GH_TOKEN: ${{ secrets.APIFY_SERVICE_ACCOUNT_GITHUB_TOKEN }}
10 changes: 0 additions & 10 deletions 10 .github/workflows/run_code_checks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,6 @@ jobs:
name: Unit tests
uses: apify/workflows/.github/workflows/python_unit_tests.yaml@main

# TODO: remove this once https://github.com/apify/apify-sdk-python/issues/241 is resolved
changelog_entry_check:
name: Changelog entry check
uses: ./.github/workflows/_changelog_entry_check.yaml

# TODO: remove this once https://github.com/apify/apify-sdk-python/issues/241 is resolved
version_conflict_check:
name: Version conflict check
uses: ./.github/workflows/_version_conflict_check.yaml

docs_check:
name: Docs check
uses: apify/workflows/.github/workflows/python_docs_check.yaml@main
Expand Down
Loading
Morty Proxy This is a proxified and sanitized view of the page, visit original site.