Files
AlphaPulldown/.github/workflows/github_actions.yml

253 lines
7.9 KiB
YAML

name: AlphaPulldown-CI-CD
on:
pull_request:
push:
branches:
- main
release:
types: [published]
workflow_dispatch:
permissions:
contents: read
jobs:
smoke-tests:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11"]
defaults:
run:
shell: bash -el {0}
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: conda-incubator/setup-miniconda@v3
with:
environment-file: environment.yml
activate-environment: AlphaPulldown
python-version: ${{ matrix.python-version }}
auto-update-conda: true
use-mamba: true
- run: |
pip install -e .[test]
- run: |
pytest -n auto --dist loadfile test/unit
pytest test/integration
#export PYTHONPATH=$PWD/alphapulldown/analysis_pipeline:$PYTHONPATH
## Test analysis pipeline
#conda install -c bioconda biopandas
#pip install pyrosetta-installer
#python -c 'import pyrosetta_installer; pyrosetta_installer.install_pyrosetta()'
#pytest -s test/test_pdb_analyser.py
#pytest -s test/test_get_good_inter_pae.py
coverage:
runs-on: ubuntu-latest
defaults:
run:
shell: bash -el {0}
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: conda-incubator/setup-miniconda@v3
with:
environment-file: environment.yml
activate-environment: AlphaPulldown
python-version: "3.11"
auto-update-conda: true
use-mamba: true
- run: |
pip install -e .[test]
- run: |
pytest -n auto --dist loadfile test/unit \
--cov=alphapulldown \
--cov-config=.coveragerc \
--cov-report=
pytest test/integration \
--cov=alphapulldown \
--cov-config=.coveragerc \
--cov-append \
--cov-report=
coverage report --skip-covered --show-missing
coverage xml -o coverage.xml
coverage json -o coverage.json
coverage html -d htmlcov
python test/tools/check_function_coverage.py --report-only coverage.json
coverage report --fail-under=25 --skip-covered --show-missing
- name: Prepare coverage site
run: |
mkdir -p _site/coverage
cp -R htmlcov/. _site/coverage/
cat > _site/index.html <<'EOF'
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="refresh" content="0; url=coverage/">
<title>AlphaPulldown Coverage</title>
</head>
<body>
<p>Redirecting to the latest coverage report...</p>
<p><a href="coverage/">Open coverage report</a></p>
</body>
</html>
EOF
- name: Coverage summary
run: |
{
echo "## Coverage reports"
echo ""
echo "- Raw artifact: \`coverage-reports\`"
echo "- HTML entrypoint inside artifact: \`htmlcov/index.html\`"
echo "- Latest browsable HTML report is published from the \`main\` branch via the Pages job."
} >> "$GITHUB_STEP_SUMMARY"
- uses: actions/upload-artifact@v4
with:
name: coverage-reports
path: |
coverage.json
coverage.xml
htmlcov
- name: Upload coverage site artifact
if: github.ref == 'refs/heads/main' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
uses: actions/upload-pages-artifact@v3
with:
path: _site
coverage-pages:
if: github.ref == 'refs/heads/main' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
needs: coverage
runs-on: ubuntu-latest
permissions:
pages: write
id-token: write
contents: read
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- id: deployment
uses: actions/deploy-pages@v4
- name: Pages summary
run: |
{
echo "## Coverage HTML"
echo ""
echo "Latest coverage site: ${{ steps.deployment.outputs.page_url }}"
} >> "$GITHUB_STEP_SUMMARY"
build-alphafold2-container:
runs-on: ubuntu-latest
steps:
- uses: webfactory/ssh-agent@v0.9.0
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
- uses: actions/checkout@v4
- run: rm -rf /opt/hostedtoolcache
- uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- uses: docker/setup-buildx-action@v3
- name: Build and push alphafold2 container
if: github.event_name == 'push'
uses: docker/build-push-action@v5
with:
context: .
file: ./docker/alphafold2.dockerfile
push: true
tags: ${{ secrets.DOCKER_USERNAME }}/alphafold2:latest
ssh: default
- name: Build and push alphafold2 container with version
if: github.event_name == 'release' && github.event.action == 'published'
uses: docker/build-push-action@v5
with:
context: .
file: ./docker/alphafold2.dockerfile
push: true
tags: ${{ secrets.DOCKER_USERNAME }}/alphafold2:${{ github.event.release.tag_name }}
ssh: default
# build-alphalink-container:
# runs-on: ubuntu-latest
# steps:
# - uses: webfactory/ssh-agent@v0.9.0
# with:
# ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
# - uses: actions/checkout@v4
# - run: rm -rf /opt/hostedtoolcache
# - uses: docker/login-action@v3
# with:
# username: ${{ secrets.DOCKER_USERNAME }}
# password: ${{ secrets.DOCKER_PASSWORD }}
# - uses: docker/setup-buildx-action@v3
# - name: Build and push alphalink container
# if: github.event_name == 'push'
# uses: docker/build-push-action@v5
# with:
# context: .
# file: ./docker/alphalink.dockerfile
# push: true
# tags: ${{ secrets.DOCKER_USERNAME }}/alphalink:latest
# ssh: default
# - name: Build and push alphalink container with version
# if: github.event_name == 'release' && github.event.action == 'published'
# uses: docker/build-push-action@v5
# with:
# context: .
# file: ./docker/alphalink.dockerfile
# push: true
# tags: ${{ secrets.DOCKER_USERNAME }}/alphalink:${{ github.event.release.tag_name }}
# ssh: default
build-alphafold3-container:
runs-on: ubuntu-latest
steps:
- uses: webfactory/ssh-agent@v0.9.0
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
- uses: actions/checkout@v4
- run: rm -rf /opt/hostedtoolcache
- uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- uses: docker/setup-buildx-action@v3
- name: Build and push alphafold3 container
if: github.event_name == 'push'
uses: docker/build-push-action@v5
with:
context: .
file: ./docker/alphafold3.dockerfile
push: true
tags: ${{ secrets.DOCKER_USERNAME }}/alphafold3:latest
ssh: default
- name: Build and push alphafold3 container with version
if: github.event_name == 'release' && github.event.action == 'published'
uses: docker/build-push-action@v5
with:
context: .
file: ./docker/alphafold3.dockerfile
push: true
tags: ${{ secrets.DOCKER_USERNAME }}/alphafold3:${{ github.event.release.tag_name }}
ssh: default