From 962d76312361495b2857f6ef36043fbec8aee911 Mon Sep 17 00:00:00 2001 From: e-belfer Date: Tue, 13 Aug 2024 12:05:01 -0400 Subject: [PATCH] Restore actual test --- .github/workflows/release.yml | 231 ++++++++++++++++------------------ 1 file changed, 111 insertions(+), 120 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c73b9a735f..60009b4f33 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,128 +9,119 @@ jobs: build-distribution: name: Build catalystcoop.pudl distribution for PyPI runs-on: ubuntu-latest + if: github.event.pull_request.head.repo.fork == false steps: - - name: Dump context - run: echo '${{ toJSON(github) }}' - - name: test-conditional - if: github.event.pull_request.head.repo.fork == true - run: echo "I'm a fork!" - # build-distribution: - # name: Build catalystcoop.pudl distribution for PyPI - # runs-on: ubuntu-latest - # if: github.repository == 'catalyst-cooperative/pudl' - # steps: - # - name: Checkout source - # uses: actions/checkout@v4 - # with: - # fetch-depth: 2 - # - name: Set up Python - # uses: actions/setup-python@v5 - # with: - # python-version: "3.12" - # - name: Build source and wheel distributions - # run: | - # python -m pip install --upgrade build twine - # python -m build - # twine check --strict dist/* - # - name: Store the distribution packages - # uses: actions/upload-artifact@v4 - # with: - # name: python-package-distributions - # path: dist/ + - name: Checkout source + uses: actions/checkout@v4 + with: + fetch-depth: 2 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + - name: Build source and wheel distributions + run: | + python -m pip install --upgrade build twine + python -m build + twine check --strict dist/* + - name: Store the distribution packages + uses: actions/upload-artifact@v4 + with: + name: python-package-distributions + path: dist/ - # publish-test-pypi: - # name: Upload release to PyPI Test Server - # if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v20') - # needs: - # - build-distribution - # runs-on: ubuntu-latest - # environment: - # name: test-pypi - # url: https://test.pypi.org/p/catalystcoop.pudl - # permissions: - # id-token: write - # steps: - # - name: Download all the dists - # uses: actions/download-artifact@v4 - # with: - # name: python-package-distributions - # path: dist/ - # - name: Publish distribution to PyPI Test Server - # uses: pypa/gh-action-pypi-publish@release/v1 - # with: - # repository-url: https://test.pypi.org/legacy/ + publish-test-pypi: + name: Upload release to PyPI Test Server + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v20') + needs: + - build-distribution + runs-on: ubuntu-latest + environment: + name: test-pypi + url: https://test.pypi.org/p/catalystcoop.pudl + permissions: + id-token: write + steps: + - name: Download all the dists + uses: actions/download-artifact@v4 + with: + name: python-package-distributions + path: dist/ + - name: Publish distribution to PyPI Test Server + uses: pypa/gh-action-pypi-publish@release/v1 + with: + repository-url: https://test.pypi.org/legacy/ - # publish-pypi: - # name: Upload release to PyPI - only if test release is successful! - # if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v20') - # needs: - # - publish-test-pypi - # runs-on: ubuntu-latest - # environment: - # name: pypi - # url: https://pypi.org/p/catalystcoop.pudl - # permissions: - # id-token: write - # steps: - # - name: Download all the dists - # uses: actions/download-artifact@v4 - # with: - # name: python-package-distributions - # path: dist/ - # - name: Publish distribution to PyPI - # uses: pypa/gh-action-pypi-publish@release/v1 + publish-pypi: + name: Upload release to PyPI - only if test release is successful! + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v20') + needs: + - publish-test-pypi + runs-on: ubuntu-latest + environment: + name: pypi + url: https://pypi.org/p/catalystcoop.pudl + permissions: + id-token: write + steps: + - name: Download all the dists + uses: actions/download-artifact@v4 + with: + name: python-package-distributions + path: dist/ + - name: Publish distribution to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 - # publish-github: - # name: Release package on GitHub - # if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v20') - # needs: - # - publish-test-pypi - # runs-on: ubuntu-latest - # permissions: - # contents: write - # id-token: write - # steps: - # - name: Download all the dists - # uses: actions/download-artifact@v4 - # with: - # name: python-package-distributions - # path: dist/ - # - name: Sign dist with Sigstore - # uses: sigstore/gh-action-sigstore-python@v3.0.0 - # with: - # inputs: ./dist/*.tar.gz ./dist/*.whl - # - name: Upload artifact signatures to GitHub Release - # env: - # GITHUB_TOKEN: ${{ github.token }} - # run: >- - # gh release create '${{ github.ref_name }}' ./dist/*.tar.gz ./dist/*.whl - # --title 'PUDL ${{ github.ref_name }}' - # --generate-notes - # --repo '${{ github.repository }}' + publish-github: + name: Release package on GitHub + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v20') + needs: + - publish-test-pypi + runs-on: ubuntu-latest + permissions: + contents: write + id-token: write + steps: + - name: Download all the dists + uses: actions/download-artifact@v4 + with: + name: python-package-distributions + path: dist/ + - name: Sign dist with Sigstore + uses: sigstore/gh-action-sigstore-python@v3.0.0 + with: + inputs: ./dist/*.tar.gz ./dist/*.whl + - name: Upload artifact signatures to GitHub Release + env: + GITHUB_TOKEN: ${{ github.token }} + run: >- + gh release create '${{ github.ref_name }}' ./dist/*.tar.gz ./dist/*.whl + --title 'PUDL ${{ github.ref_name }}' + --generate-notes + --repo '${{ github.repository }}' - # notify-slack: - # if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v20') - # runs-on: ubuntu-latest - # needs: - # - publish-github - # steps: - # - name: Inform the Codemonkeys - # uses: 8398a7/action-slack@v3 - # continue-on-error: true - # with: - # status: custom - # fields: workflow,job,commit,repo,ref,author,took - # custom_payload: | - # { - # username: 'action-slack', - # icon_emoji: ':octocat:', - # attachments: [{ - # color: '${{ needs.publish-github.result }}' === 'success' ? 'good' : '${{ needs.publish-github.result }}' === 'failure' ? 'danger' : 'warning', - # text: `${process.env.AS_REPO}@${process.env.AS_REF}\n ${process.env.AS_WORKFLOW} (${process.env.AS_COMMIT})\n by ${process.env.AS_AUTHOR}\n Status: ${{ needs.publish-github.result }}`, - # }] - # } - # env: - # GITHUB_TOKEN: ${{ github.token }} # required - # SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} # required - # MATRIX_CONTEXT: ${{ toJson(matrix) }} # required + notify-slack: + if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v20') + runs-on: ubuntu-latest + needs: + - publish-github + steps: + - name: Inform the Codemonkeys + uses: 8398a7/action-slack@v3 + continue-on-error: true + with: + status: custom + fields: workflow,job,commit,repo,ref,author,took + custom_payload: | + { + username: 'action-slack', + icon_emoji: ':octocat:', + attachments: [{ + color: '${{ needs.publish-github.result }}' === 'success' ? 'good' : '${{ needs.publish-github.result }}' === 'failure' ? 'danger' : 'warning', + text: `${process.env.AS_REPO}@${process.env.AS_REF}\n ${process.env.AS_WORKFLOW} (${process.env.AS_COMMIT})\n by ${process.env.AS_AUTHOR}\n Status: ${{ needs.publish-github.result }}`, + }] + } + env: + GITHUB_TOKEN: ${{ github.token }} # required + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} # required + MATRIX_CONTEXT: ${{ toJson(matrix) }} # required