Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

5-containerize-and-version #7

Merged
merged 10 commits into from
Mar 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 63 additions & 0 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
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_virus_id

- name: Build and push Docker image for cenote taker
uses: docker/build-push-action@v5
with:
context: .
file: envs/cenote_taker_env.Dockerfile
push: true
tags: ${{ steps.meta.outputs.tags }}-cenote-taker
labels: ${{ steps.meta.outputs.labels }}

- name: Build and push Docker image for sbx_virus_id
uses: docker/build-push-action@v5
with:
context: .
file: envs/sbx_virus_id.Dockerfile
push: true
tags: ${{ steps.meta.outputs.tags }}-sbx-virus-id
labels: ${{ steps.meta.outputs.labels }}

- name: Build and push Docker image for spades
uses: docker/build-push-action@v5
with:
context: .
file: envs/spades_env.Dockerfile
push: true
tags: ${{ steps.meta.outputs.tags }}-spades
labels: ${{ steps.meta.outputs.labels }}

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

This file was deleted.

15 changes: 15 additions & 0 deletions .github/workflows/pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
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/*
75 changes: 57 additions & 18 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -1,36 +1,75 @@
name: Tests

on:
pull_request:
branches: [ master, main ]
push:
branches: [ master, main ]
workflow_call:
workflow_dispatch:
schedule:
- cron: "0 13 * * 1"

jobs:
jobs:
lint:
name: Lint Code
runs-on: ubuntu-latest

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

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

- 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@v4

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

- name: Install Dependencies
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@v3
uses: actions/checkout@v4

- name: Test with Sunbeam
uses: sunbeam-labs/sbx_test_action@v0
uses: sunbeam-labs/sbx_test_action@v1
with:
sunbeam-version: 'dev'
install-options: '-m'
extension-name: 'sunbeam-labs/sbx_virus_id'
extension-branch-name: ${{ github.head_ref }}

- name: Dump Logs
shell: bash
if: always()
run: tail -n +1 logs/*
other-extensions: "sunbeam-labs/sbx_assembly"

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

- name: Dump Stats
shell: bash
if: always()
run: cat stats/*
#- name: Dump Stats
# shell: bash
# if: always()
# run: cat stats/*
Binary file added .tests/data/reads/LONG_R1.fastq.gz
Binary file not shown.
Binary file added .tests/data/reads/LONG_R2.fastq.gz
Binary file not shown.
Binary file added .tests/data/reads/SHORT_R1.fastq.gz
Binary file not shown.
Binary file added .tests/data/reads/SHORT_R2.fastq.gz
Binary file not shown.
File renamed without changes.
Loading
Loading