Skip to content

schedule: refs/heads/main #23

schedule: refs/heads/main

schedule: refs/heads/main #23

Workflow file for this run

# Project's main software development workflow.
name: 'Workflow'
run-name: '${{ github.event_name }}: ${{ github.ref }}'
on:
issues:
types:
- opened
- edited
- labeled
- assigned
- unassigned
- unlabeled
- locked
- unlocked
issue_comment:
types:
- created
- edited
pull_request:
types:
- opened
- reopened
- synchronize
- ready_for_review
- labeled
pull_request_target:
types:
- opened
push:
schedule:
- cron: '43 23 * * *' # Every day at 23:43 UTC.
- cron: '43 6 * * 6' # Every Saturday at 6:43 UTC.
workflow_dispatch:
inputs:
config:
description: Configuration
type: choice
options:
- disable
- report
- pull
- pull & merge
- commit
default: report
required: true
lint:
description: Lint
type: choice
options:
- disable
- report
- pull
- pull & merge
- commit
default: report
required: true
build:
description: Build
type: boolean
default: false
required: true
test:
description: Test
type: boolean
default: false
required: true
website:
description: Website
type: boolean
default: false
required: true
release:
description: Release v1
type: boolean
default: false
required: true
jobs:
init:
name: Project
# If the event is 'pull_request_target', only run if its from a fork.
# TODO: Remove the first line after PyPackIT finalization.
if: >-
github.repository != 'RepoDynamics/PyPackIT'
&& (
github.event_name != 'pull_request_target'
|| github.event.pull_request.head.repo.full_name != github.repository
)
uses: ./.github/workflows/_manager.yaml
permissions:
contents: write
issues: write
pull-requests: write
# with:
# package-build: ${{ inputs.package-build || false }}
# package-lint: ${{ inputs.package-lint || false }}
# package-test: ${{ inputs.package-test || false }}
# website-build: ${{ inputs.website-build || false }}
# meta-sync: ${{ inputs.meta-sync }}
# hooks: ${{ inputs.hooks }}
# first-major-release: ${{ inputs.first-major-release || false }}
secrets:
repo-admin-token: ${{ secrets.REPO_ADMIN_TOKEN }}
website:
name: Website${{ matrix.config.job-suffix }}
needs: init
if: fromJSON(needs.init.outputs.run).website
permissions:
contents: read
pages: write
id-token: write
environment:
name: GitHub Pages
url: ${{ matrix.config.url }}
strategy:
fail-fast: false
matrix:
config: ${{ fromJSON(needs.init.outputs.website) }}
runs-on: ubuntu-latest
steps:
- uses: RepoDynamics/SphinxDocs@v1
with:
repository: ${{ matrix.config.repository }}
ref: ${{ matrix.config.ref }}
path-env: ${{ matrix.config.path-env }}
path-web: ${{ matrix.config.path-web }}
path-pkg: ${{ matrix.config.path-pkg }}
artifact-name: ${{ matrix.config.artifact-name }}
deploy: ${{ matrix.config.deploy }}
lint:
name: Package Lint${{ matrix.config.job-suffix }}
needs: init
if: fromJSON(needs.init.outputs.run).lint
permissions:
pull-requests: write
security-events: write
actions: read
contents: read
strategy:
fail-fast: false
matrix:
config: ${{ fromJSON(needs.init.outputs.lint) }}
uses: ./.github/workflows/_pkg_lint.yaml
with:
config: ${{ toJSON(matrix.config) }}
test:
name: Package Test${{ matrix.config.job-suffix }}
needs: init
if: fromJSON(needs.init.outputs.run).test
permissions:
id-token: write
strategy:
fail-fast: false
matrix:
config: ${{ fromJSON(needs.init.outputs.test) }}
uses: ./.github/workflows/_pkg_test.yaml
with:
config: ${{ toJSON(matrix.config.config) }}
build:
name: Package Build${{ matrix.config.job-suffix }}
needs: init
if: fromJSON(needs.init.outputs.run).build # fromJSON(needs.init.outputs.config).run.package_build
strategy:
fail-fast: false
matrix:
config: ${{ fromJSON(needs.init.outputs.build) }}
uses: ./.github/workflows/_pkg_build.yaml
with:
config: ${{ toJSON(matrix.config) }}
# metadata: ${{ needs.init.outputs.metadata }}
# ref: ${{ fromJSON(needs.init.outputs.config).checkout.ref }}
# repository: ${{ fromJSON(needs.init.outputs.config).checkout.repository }}
publish-testpypi:
name: 'Package Publish'
needs: [init, build, test, lint]
if: fromJSON(needs.init.outputs.run).publish-testpypi # fromJSON(needs.init.outputs.config).run.package_publish_testpypi
permissions:
id-token: write
uses: ./.github/workflows/_pkg_publish.yaml
with:
config: ${{ needs.init.outputs.publish-testpypi }}
# platform: TestPyPI
# download-url: ${{ fromJSON(needs.init.outputs.config).package.download_url_testpypi }}
# upload-url: ${{ fromJSON(needs.init.outputs.config).package.upload_url_testpypi }}
test-testpypi:
name: 'Package Test: TestPyPI'
needs: [init, publish-testpypi]
if: fromJSON(needs.init.outputs.run).test-testpypi # ${{ !failure() && fromJSON(needs.init.outputs.config).run.package_test_testpypi }}
permissions:
id-token: write
uses: ./.github/workflows/_pkg_test.yaml
with:
config: ${{ needs.init.outputs.test-testpypi }}
# config: ${{ needs.init.outputs.config }}
# metadata: ${{ needs.init.outputs.metadata }}
# package-source: TestPyPI
publish-pypi:
name: 'Package Publish'
needs: [init, test-testpypi]
if: fromJSON(needs.init.outputs.run).publish-pypi # ${{ !failure() && fromJSON(needs.init.outputs.config).run.package_publish_pypi }}
permissions:
id-token: write
uses: ./.github/workflows/_pkg_publish.yaml
with:
config: ${{ needs.init.outputs.publish-pypi }}
# platform: PyPI
# download-url: ${{ fromJSON(needs.init.outputs.config).package.download_url_pypi }}
# upload-url: ${{ fromJSON(needs.init.outputs.config).package.upload_url_pypi }}
#
test-pypi:
name: 'Package Test: PyPI'
needs: [init, publish-pypi]
if: fromJSON(needs.init.outputs.run).test-pypi # ${{ !failure() && fromJSON(needs.init.outputs.config).run.package_test_pypi }}
permissions:
id-token: write
uses: ./.github/workflows/_pkg_test.yaml
with:
config: ${{ needs.init.outputs.test-pypi }}
# config: ${{ needs.init.outputs.config }}
# metadata: ${{ needs.init.outputs.metadata }}
# package-source: PyPI
#
finalize:
name: 'Finalize'
needs: [ init, build, website, test-pypi ]
if: fromJSON(needs.init.outputs.run).finalize
permissions:
contents: write
discussions: write
runs-on: ubuntu-latest
steps:
# - name: Checkout
# uses: actions/checkout@v4
# with:
# ref: ${{ fromJSON(needs.init.outputs.config).checkout.ref }}
- name: 'Download sdist and wheels artifacts'
uses: actions/download-artifact@v3
with:
name: ${{ fromJSON(needs.init.outputs.finalize).release.package-artifact-name }}
path: distribution
- name: 'Download gh-pages artifact'
uses: actions/download-artifact@v3
with:
name: ${{ fromJSON(needs.init.outputs.finalize).release.website-artifact-name }}
path: documentation
- name: 'Zip artifacts'
run: |
mv distribution/dist/*.tar.gz ./
zip -r wheels.zip distribution/dist
zip -r documentation.zip documentation
- name: Release
uses: softprops/action-gh-release@v1
with:
name: ${{ fromJSON(needs.init.outputs.finalize).release.name }}
tag_name: ${{ fromJSON(needs.init.outputs.finalize).release.tag-name }}
body: ${{ fromJSON(needs.init.outputs.finalize).release.body }}
prerelease: ${{ fromJSON(needs.init.outputs.finalize).release.prerelease }}
# discussion_category_name: ${{ fromJSON(needs.init.outputs.finalize).release.discussion_category_name }}
files: |
wheels.zip
documentation.zip
*.tar.gz