Skip to content

Commit

Permalink
Init updates
Browse files Browse the repository at this point in the history
  • Loading branch information
Ulthran committed Mar 21, 2024
1 parent 87fb12e commit 19bf48d
Show file tree
Hide file tree
Showing 13 changed files with 228 additions and 72 deletions.
27 changes: 0 additions & 27 deletions .github/workflows/check_conda_envs.yml

This file was deleted.

36 changes: 36 additions & 0 deletions .github/workflows/dockerhub.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Push to DockerHub

on:
workflow_call:

workflow_dispatch:

jobs:
build-and-push-to-dockerhub:
name: Push Docker image to Docker Hub
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: sunbeamlabs/sbx_template

- name: Build and push Docker image
uses: docker/build-push-action@v5
with:
context: .
file: envs/sbx_template_env.Dockerfile
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
23 changes: 0 additions & 23 deletions .github/workflows/linters.yml

This file was deleted.

14 changes: 14 additions & 0 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
name: Tests

on:
pull_request:
branches:
- main
push:
branches:
- main

jobs:
run-tests:
uses: ./.github/workflows/tests.yml
secrets: inherit
79 changes: 79 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
name: Release

on:
release:
types: [published]

workflow_dispatch:

jobs:
run-tests:
uses: ./.github/workflows/tests.yml
secrets: inherit

check-version:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Get sbx version
shell: bash
run: |
SBX_VER=$(cat VERSION)
echo "SBX_VER=$SBX_VER" >> $GITHUB_ENV
- id: get_version
uses: battila7/get-version-action@v2

- name: Check version
shell: bash
run: |
RELEASE_VERSION=${{ steps.get_version.outputs.version-without-v }}
echo "Release version: ${RELEASE_VERSION}"
echo "Sbx version: ${{ env.SBX_VER }}"
if [[ $RELEASE_VERSION == ${{ env.SBX_VER }} ]]; then
echo "Versions match, continuing..."
else
echo "Versions don't match, exiting..."
exit 1
fi
push-to-dockerhub:
uses: ./.github/workflows/docker.yml
secrets: inherit
needs:
- run-tests
- check-version

test-apptainer:
name: Apptainer Test
runs-on: ubuntu-latest
needs: push-to-dockerhub

steps:
- name: Checkout Code
uses: actions/checkout@v4

- name: Set test env
run: echo "SUNBEAM_TEST_PROFILE=apptainer" >> $GITHUB_ENV

- uses: eWaterCycle/setup-apptainer@v2
with:
apptainer-version: 1.1.2

- name: Test with Sunbeam
uses: sunbeam-labs/sbx_test_action@v1
with:
test-directory: ".tests/e2e/"

- name: Dump Logs
shell: bash
if: always()
run: tail -n +1 logs/*

- name: Dump Stats
shell: bash
if: always()
run: cat stats/*
69 changes: 54 additions & 15 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,32 +5,71 @@ on:
branches: [ master, main ]
push:
branches: [ master, main ]
workflow_call:
workflow_dispatch:
schedule:
- cron: "0 13 * * 1"

jobs:
test-e2e:
name: Test Extension with Sunbeam
jobs:
lint:
name: Lint Code
runs-on: ubuntu-latest

steps:
- name: Checkout Code
uses: actions/checkout@v3

- name: Test with Sunbeam
uses: sunbeam-labs/sbx_test_action@v1
uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: 3.12

test-units:
name: Run Unittests
- name: Install Dependencies
run: pip install black snakefmt

- name: Run Linter
run: |
black --check .
snakefmt --check *.smk
test-unit:
name: Run Extension Unit Tests
runs-on: ubuntu-latest

steps:
- name: Checkout Code
uses: actions/checkout@v3

uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: 3.12

- name: Install Dependencies
run: python -m pip install pytest
run: pip install pytest

- name: Run Unit Tests
run: true #pytest .tests/unit/
# This'll require having a lib within scripts with internal tests

test-e2e:
name: Test Extension with Sunbeam
runs-on: ubuntu-latest
needs:
- test-unit
- lint

steps:
- name: Checkout Code
uses: actions/checkout@v4

- name: Test with Sunbeam
uses: sunbeam-labs/sbx_test_action@v1

- name: Dump Logs
shell: bash
if: always()
run: tail -n +1 logs/*

# TODO: Add demo unit tests
#- name: Run Tests
# run: pytest .tests/unit/
- name: Dump Stats
shell: bash
if: always()
run: cat stats/*
2 changes: 0 additions & 2 deletions .tests/e2e/test_full_run.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import csv
import os
import pytest
import shutil
import subprocess as sp
Expand Down
1 change: 1 addition & 0 deletions VERSION
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0.0.0
2 changes: 1 addition & 1 deletion config.yml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
sbx_template:
example_rule_options: ''
example_rule_options: 'DUMMY STRING'
17 changes: 17 additions & 0 deletions envs/sbx_template_env.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
FROM condaforge/mambaforge:latest

# Setup
WORKDIR /home/sbx_template_env

COPY envs/sbx_template_env.yml ./

# Install environment
RUN conda env create --file sbx_template_env.yml --name sbx_template

ENV PATH="/opt/conda/envs/sbx_template/bin/:${PATH}"

# "Activate" the environment
SHELL ["conda", "run", "-n", "sbx_template", "/bin/bash", "-c"]

# Run
CMD "bash"
2 changes: 2 additions & 0 deletions envs/sbx_template_env.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,5 @@ name: sbx_template
channels:
- conda-forge
- bioconda
dependencies:
- samtools
17 changes: 16 additions & 1 deletion sbx_template.smk
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
def get_template_path() -> Path:
for fp in sys.path:
if fp.split("/")[-1] == "sbx_template":
return Path(fp)
raise Error(
"Filepath for sbx_template not found, are you sure it's installed under extensions/sbx_template?"
)


SBX_TEMPLATE_VERSION = open(get_template_path() / "VERSION").read().strip()

try:
BENCHMARK_FP
except NameError:
Expand Down Expand Up @@ -31,12 +42,14 @@ rule example_rule:
opts=Cfg["sbx_template"]["example_rule_options"],
conda:
"envs/sbx_template_env.yml"
container:
f"docker://sunbeamlabs/sbx_template:{SBX_TEMPLATE_VERSION}"
shell:
"cat {params.opts} {input} >> {output} 2> {log}"


rule example_with_script:
"""Take in big_file1 and copy it to big_file using a python script"""
"""Take in big_file1 and then ignore it and write the results of `samtools --help` to the output using a python script"""
input:
QC_FP / "mush" / "big_file1.txt",
output:
Expand All @@ -47,5 +60,7 @@ rule example_with_script:
BENCHMARK_FP / "example_with_script.tsv"
conda:
"envs/sbx_template_env.yml"
container:
f"docker://sunbeamlabs/sbx_template:{SBX_TEMPLATE_VERSION}"
script:
"scripts/example_with_script.py"
11 changes: 8 additions & 3 deletions scripts/example_with_script.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
from pathlib import Path
import subprocess as sp


args = ["samtools", "--help"]
res = sp.check_output(args)
with open(snakemake.output[0], "wb") as f:
f.write(res)

Path(snakemake.output[0]).symlink_to(snakemake.input[0])
with open(snakemake.log[0], "w") as f:
f.write("File copied!")
f.write("File created!")

0 comments on commit 19bf48d

Please sign in to comment.