use artifacts #72
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: ci/cd | |
| on: | |
| push: | |
| branches: [ '**' ] | |
| tags-ignore: [ '**' ] | |
| jobs: | |
| py-versions: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| matrix: ${{ steps.versions.outputs.matrix }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - id: versions | |
| uses: WIPACrepo/wipac-dev-py-versions-action@v2.5 | |
| ############################################################################ | |
| # LINTERS | |
| ############################################################################ | |
| flake8: | |
| needs: [ py-versions ] | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| py3: ${{ fromJSON(needs.py-versions.outputs.matrix) }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.py3 }} | |
| - uses: WIPACrepo/wipac-dev-flake8-action@v1.3 | |
| with: | |
| max-complexity: 10 # ideal is ~10-15 | |
| mypy: | |
| needs: [ py-versions ] | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| py3: ${{ fromJSON(needs.py-versions.outputs.matrix) }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.py3 }} | |
| - uses: WIPACrepo/wipac-dev-mypy-action@v2.0 | |
| ############################################################################ | |
| # PACKAGING | |
| ############################################################################ | |
| # writable-branch-detect: | |
| # runs-on: ubuntu-latest | |
| # outputs: | |
| # OKAY: ${{ steps.detect.outputs.OKAY }} | |
| # steps: | |
| # - name: is this a bot-writable branch? | |
| # id: detect | |
| # # dependabot can't access normal secrets | |
| # # & don't run non-branch triggers (like tags) | |
| # # & we don't want to trigger an update on PR's merge to main/master/default (which is a branch) | |
| # run: | | |
| # set -euo pipefail | |
| # echo "now: $(date -u +"%Y-%m-%dT%H:%M:%S.%3N")" | |
| # if [[ \ | |
| # ${{github.actor}} != 'dependabot[bot]' && \ | |
| # ${{github.ref_type}} == 'branch' && \ | |
| # ${{format('refs/heads/{0}', github.event.repository.default_branch)}} != ${{github.ref}} \ | |
| # ]]; then | |
| # echo "OKAY=true" >> "$GITHUB_OUTPUT" | |
| # echo "yes, this branch is compatible" | |
| # else | |
| # echo "OKAY=false" >> "$GITHUB_OUTPUT" | |
| # echo "no, this branch is incompatible" | |
| # fi | |
| py-setup: | |
| # needs: [ writable-branch-detect ] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| # if: needs.writable-branch-detect.outputs.OKAY == 'true' | |
| with: | |
| token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} | |
| - uses: WIPACrepo/wipac-dev-py-setup-action@scm | |
| # if: needs.writable-branch-detect.outputs.OKAY == 'true' | |
| with: | |
| pypi_name: 'wipac-dev-actions-testbed' | |
| python_min: 3.12 | |
| author: WIPAC Developers | |
| author_email: developers@icecube.wisc.edu | |
| keywords_comma: "WIPAC, CI/CD, gitops, testbed" | |
| auto_mypy_option: True | |
| py-dependencies: | |
| # needs: [ writable-branch-detect ] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| # if: needs.writable-branch-detect.outputs.OKAY == 'true' | |
| with: | |
| token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} | |
| - uses: WIPACrepo/wipac-dev-py-dependencies-action@v2.1 | |
| # if: needs.writable-branch-detect.outputs.OKAY == 'true' | |
| with: | |
| use_directory: true | |
| ############################################################################ | |
| # TESTS | |
| ############################################################################ | |
| ############################################################################ | |
| # TAG NEW VERSION | |
| ############################################################################ | |
| tag-new-version: | |
| # only run on main/master/default | |
| if: format('refs/heads/{0}', github.event.repository.default_branch) == github.ref | |
| needs: [ | |
| py-versions, | |
| flake8, | |
| mypy, | |
| py-setup, | |
| py-dependencies | |
| ] | |
| runs-on: ubuntu-latest | |
| concurrency: tag-new-version # prevent any possible race conditions | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 # required to see tags and commits | |
| ref: ${{ github.sha }} # in case 'ref' (arg default) has been updated since start | |
| token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} # so a new tag can trigger workflows | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: "${{ fromJSON(needs.py-versions.outputs.matrix)[0] }}" | |
| - uses: WIPACrepo/wipac-dev-next-version-action@main | |
| id: next-version | |
| with: | |
| force-patch-if-no-commit-token: true | |
| ignore-paths: | | |
| .gitignore | |
| assets/** | |
| dependencies-logs/** | |
| resources/foo/** | |
| - name: Tag New Version | |
| if: steps.next-version.outputs.version != '' | |
| run: | | |
| set -euo pipefail | |
| echo "now: $(date -u +"%Y-%m-%dT%H:%M:%S.%3N")" | |
| git tag v${{ steps.next-version.outputs.version }} | |
| git push origin --tags |