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

Add support for configurable containers engines #963

Merged
merged 147 commits into from
Oct 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
147 commits
Select commit Hold shift + click to select a range
7147bfe
Add initial Exacloud page to documentation
lbeckman314 May 6, 2024
af00d03
Update Exacloud support
lbeckman314 May 7, 2024
fc3d277
Clean up console debug output
lbeckman314 May 7, 2024
9dbef33
Add default Worker engine ('docker')
lbeckman314 May 8, 2024
a3a3445
Update configurable Container Engine commands
lbeckman314 May 9, 2024
8ec817b
Revert changes to docker implementation and add engine interface
lbeckman314 May 10, 2024
afc5825
Update Exacloud/Container Engine implementation
lbeckman314 May 15, 2024
28905c0
Update ContainerEngine interface
lbeckman314 May 16, 2024
703cf44
Rename ContainerEngine to ContainerType
lbeckman314 May 16, 2024
83d6e1c
Add initial Exadocker unit test
lbeckman314 May 17, 2024
39584ad
Update TaskService to pass config to Funnel worker
lbeckman314 May 17, 2024
1d93375
Add small fix in HPC Template config
lbeckman314 May 17, 2024
1c4221d
Update worker config path in HPC Template
lbeckman314 May 17, 2024
53bb0cb
Add debugging from Exacloud testing
lbeckman314 May 20, 2024
a422b82
Update input/output working example (md5sum)
lbeckman314 May 24, 2024
021eeef
Update docker.go to implement ContainerEngine interface
lbeckman314 May 30, 2024
8e2474c
Remove exadocker implementation in favor of docker
lbeckman314 May 30, 2024
f5acbab
Add initial HPC documentation and example
lbeckman314 May 30, 2024
5450366
Update docker and kin-openapi to compatible versions
lbeckman314 May 31, 2024
2269fd1
Update util/openapi2proto/main.go with latest kin-openapi version
lbeckman314 May 31, 2024
8648580
Update github.com/docker/docker to latest version
lbeckman314 May 31, 2024
75647ce
Update Docker client creation in tests
lbeckman314 May 31, 2024
997d3c2
Add `WithAPIVersionNegotiation` to docker client creation
lbeckman314 May 31, 2024
56e74c2
Rename 'Driver' to 'DriverCommand' in ContainerConfig
lbeckman314 May 31, 2024
a9411bb
Fix minor linting errors
lbeckman314 Jun 1, 2024
ee25bd5
Update GitHub Actions workflow (linting)
lbeckman314 Jun 1, 2024
449e144
fix: updated config check in hpc_backend.go
lbeckman314 Jun 1, 2024
f5df70f
Revert tabs/space change in storage/local.go
lbeckman314 Jun 1, 2024
6374d2f
Update output copying in scratch directory
lbeckman314 Jun 18, 2024
f27f302
Update compliance-test.yaml
lbeckman314 Jun 18, 2024
0f36f11
Debug: add tmate step to Nextflow test
lbeckman314 Jun 20, 2024
c0cc2a8
Update Nextflow tests
lbeckman314 Jun 20, 2024
69bddbe
Update file copying behavior for Nextflow tests
lbeckman314 Jun 20, 2024
2af9c4d
Update local file copying behavior to support directory dests
lbeckman314 Jun 20, 2024
0f14338
Update local dest for files with glob patterns
lbeckman314 Jun 20, 2024
85ce5de
Update Base64Encode test to match Github Actions test
lbeckman314 Jun 20, 2024
56ec776
Fix Base64Encoding test value
lbeckman314 Jun 20, 2024
4bbec3f
Revert glob output change based on TesOutput spec
lbeckman314 Jun 21, 2024
ece1266
Debug: Add tmate step to Nextflow tests
lbeckman314 Jun 21, 2024
c81d0a7
Update wildcard file output destination
lbeckman314 Jun 21, 2024
f7905e5
Add initial command templating for container engines
lbeckman314 Jul 23, 2024
edc1600
Add initial Docker/ContainerEngine tests
lbeckman314 Jul 23, 2024
9caa800
Merge branch 'develop' into feature/container-engines
lbeckman314 Jul 24, 2024
615b46a
Merge branch 'develop' into feature/container-engines
lbeckman314 Jul 24, 2024
b3e6066
Run `go mod tidy`
lbeckman314 Jul 24, 2024
20c5238
Update Github Actions
lbeckman314 Jul 24, 2024
80bf9a7
Update container engine IO and command execution
lbeckman314 Jul 25, 2024
0660edc
Re-enable all tests for container engines
lbeckman314 Jul 26, 2024
9e71330
Update test suite
lbeckman314 Jul 26, 2024
bd1e79b
Nextflow test debug
lbeckman314 Jul 26, 2024
59fce8b
Nextflow test debug
lbeckman314 Jul 26, 2024
d0f6824
Nextflow test debug
lbeckman314 Jul 26, 2024
90b69f4
Nextflow test debug
lbeckman314 Jul 26, 2024
d9fb95f
Update compliance test workflow
lbeckman314 Jul 26, 2024
60de248
Update S3 tests
lbeckman314 Jul 26, 2024
582b834
Update S3 tests
lbeckman314 Jul 26, 2024
f405231
Add comments and clean up debug statements
lbeckman314 Jul 26, 2024
d891fc3
Clean up code for 0.11.1-rc.1 release
lbeckman314 Jul 26, 2024
0bdd604
Add container command event to match existing pattern
lbeckman314 Jul 27, 2024
eac39ef
Update .goreleaser.yaml to replace deprecated fields
lbeckman314 Jul 27, 2024
d7272d4
Update Nextflow instructions
lbeckman314 Jul 31, 2024
87fbe0b
Update K8s support and documentation
lbeckman314 Sep 10, 2024
976aee0
Update README.md
lbeckman314 Sep 10, 2024
f5ed646
fix: add support for wildcards in AWS S3 paths
lbeckman314 Sep 12, 2024
42fe597
Add support for wildcards in AWS S3 output paths
lbeckman314 Sep 17, 2024
a570bf3
Update actions/upload-artifact to v4 in Github Actions
lbeckman314 Sep 18, 2024
119b554
Update version to 0.11.1-rc.4 in Makefile
lbeckman314 Sep 18, 2024
f8db3a5
Fix bug where FileMapper output was being overwritten in every loop
lbeckman314 Sep 19, 2024
6705410
Add initial Exacloud page to documentation
lbeckman314 May 6, 2024
59d806b
Update Exacloud support
lbeckman314 May 7, 2024
780e7ca
Clean up console debug output
lbeckman314 May 7, 2024
cff593d
Add default Worker engine ('docker')
lbeckman314 May 8, 2024
2759b97
Update configurable Container Engine commands
lbeckman314 May 9, 2024
ea70dfb
Revert changes to docker implementation and add engine interface
lbeckman314 May 10, 2024
71b1374
Update Exacloud/Container Engine implementation
lbeckman314 May 15, 2024
a233488
Update ContainerEngine interface
lbeckman314 May 16, 2024
4745850
Rename ContainerEngine to ContainerType
lbeckman314 May 16, 2024
2082c42
Add initial Exadocker unit test
lbeckman314 May 17, 2024
bbea59a
Update TaskService to pass config to Funnel worker
lbeckman314 May 17, 2024
6de2a83
Add small fix in HPC Template config
lbeckman314 May 17, 2024
6f008c5
Update worker config path in HPC Template
lbeckman314 May 17, 2024
2f9e8d1
Add debugging from Exacloud testing
lbeckman314 May 20, 2024
989a9bf
Update input/output working example (md5sum)
lbeckman314 May 24, 2024
7337d78
Update docker.go to implement ContainerEngine interface
lbeckman314 May 30, 2024
a19a2c4
Remove exadocker implementation in favor of docker
lbeckman314 May 30, 2024
93b637a
Add initial HPC documentation and example
lbeckman314 May 30, 2024
55f9895
Update docker and kin-openapi to compatible versions
lbeckman314 May 31, 2024
adbeda3
Update util/openapi2proto/main.go with latest kin-openapi version
lbeckman314 May 31, 2024
30e3b87
Update github.com/docker/docker to latest version
lbeckman314 May 31, 2024
6f59052
Update Docker client creation in tests
lbeckman314 May 31, 2024
4bc0775
Add `WithAPIVersionNegotiation` to docker client creation
lbeckman314 May 31, 2024
32598b2
Rename 'Driver' to 'DriverCommand' in ContainerConfig
lbeckman314 May 31, 2024
290de73
Fix minor linting errors
lbeckman314 Jun 1, 2024
775416c
Update GitHub Actions workflow (linting)
lbeckman314 Jun 1, 2024
ff6875a
fix: updated config check in hpc_backend.go
lbeckman314 Jun 1, 2024
afe98c6
Revert tabs/space change in storage/local.go
lbeckman314 Jun 1, 2024
5556bd0
Update output copying in scratch directory
lbeckman314 Jun 18, 2024
0cbd306
Update compliance-test.yaml
lbeckman314 Jun 18, 2024
a88fe62
Debug: add tmate step to Nextflow test
lbeckman314 Jun 20, 2024
34086dd
Update Nextflow tests
lbeckman314 Jun 20, 2024
5e1f1da
Update file copying behavior for Nextflow tests
lbeckman314 Jun 20, 2024
5b75b46
Update local file copying behavior to support directory dests
lbeckman314 Jun 20, 2024
8da896d
Update local dest for files with glob patterns
lbeckman314 Jun 20, 2024
064c1b1
Update Base64Encode test to match Github Actions test
lbeckman314 Jun 20, 2024
5441fc9
Fix Base64Encoding test value
lbeckman314 Jun 20, 2024
31748c0
Revert glob output change based on TesOutput spec
lbeckman314 Jun 21, 2024
627c17d
Debug: Add tmate step to Nextflow tests
lbeckman314 Jun 21, 2024
8715660
Update wildcard file output destination
lbeckman314 Jun 21, 2024
0593325
Add initial command templating for container engines
lbeckman314 Jul 23, 2024
f402761
Add initial Docker/ContainerEngine tests
lbeckman314 Jul 23, 2024
9ba3beb
Run `go mod tidy`
lbeckman314 Jul 24, 2024
64b0885
Update Github Actions
lbeckman314 Jul 24, 2024
b388751
Update container engine IO and command execution
lbeckman314 Jul 25, 2024
d13c7a1
Re-enable all tests for container engines
lbeckman314 Jul 26, 2024
5e37e48
Update test suite
lbeckman314 Jul 26, 2024
a1fece6
Nextflow test debug
lbeckman314 Jul 26, 2024
258bcf6
Nextflow test debug
lbeckman314 Jul 26, 2024
125986b
Nextflow test debug
lbeckman314 Jul 26, 2024
20ceb24
Nextflow test debug
lbeckman314 Jul 26, 2024
a8dd6c6
Update compliance test workflow
lbeckman314 Jul 26, 2024
206c75f
Update S3 tests
lbeckman314 Jul 26, 2024
b43867d
Update S3 tests
lbeckman314 Jul 26, 2024
e012d2f
Add comments and clean up debug statements
lbeckman314 Jul 26, 2024
983aad0
Clean up code for 0.11.1-rc.1 release
lbeckman314 Jul 26, 2024
666beee
Add container command event to match existing pattern
lbeckman314 Jul 27, 2024
532bc6b
Update .goreleaser.yaml to replace deprecated fields
lbeckman314 Jul 27, 2024
0912edc
Update Nextflow instructions
lbeckman314 Jul 31, 2024
1114f2c
Update K8s support and documentation
lbeckman314 Sep 10, 2024
a0c7a0c
Update README.md
lbeckman314 Sep 10, 2024
4effce6
fix: add support for wildcards in AWS S3 paths
lbeckman314 Sep 12, 2024
149b6d0
Add support for wildcards in AWS S3 output paths
lbeckman314 Sep 17, 2024
524ade6
Update actions/upload-artifact to v4 in Github Actions
lbeckman314 Sep 18, 2024
590a3e3
Update version to 0.11.1-rc.4 in Makefile
lbeckman314 Sep 18, 2024
2ec10d8
Fix bug where FileMapper output was being overwritten in every loop
lbeckman314 Sep 19, 2024
1a1ae94
Add initial search functionality to website
lbeckman314 Sep 30, 2024
e7d8cbf
Update GitHub Actions workflows
lbeckman314 Sep 30, 2024
234e934
Add Pagefind step to hugo.yaml
lbeckman314 Sep 30, 2024
c0f5920
Run `go mod tidy`
lbeckman314 Oct 1, 2024
1a32f86
Merge branch 'feature/k8s-support' into feature/container-engines
lbeckman314 Oct 1, 2024
1fa7ebe
Fix lint errors
lbeckman314 Oct 1, 2024
db7a5ac
debug: Slurm Github Action workflow
lbeckman314 Oct 1, 2024
56cba45
debug: Slurm GitHub Actions Workflow
lbeckman314 Oct 1, 2024
7d9742b
debug: Slurm GitHub Actions Workflow
lbeckman314 Oct 1, 2024
8de5041
debug: Slurm GitHub Actions Workflow
lbeckman314 Oct 1, 2024
8e39bd3
debug: Slurm GitHub Actions Workflow
lbeckman314 Oct 1, 2024
064a224
debug: Slurm GitHub Actions Workflow
lbeckman314 Oct 1, 2024
33e1f2d
Merge branch 'develop' into feature/container-engines
lbeckman314 Oct 3, 2024
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
43 changes: 43 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Funnel Build and Cache

on:
workflow_call:

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Set up Go 1.x
uses: actions/setup-go@v5
with:
go-version: 1.21

- name: Check out code
uses: actions/checkout@v2

- name: Cache Funnel binary
uses: actions/cache@v3
with:
path: ./funnel
key: ${{ runner.os }}-funnel-bin-${{ hashFiles('**/go.sum') }}-${{ github.ref }}
restore-keys: |
${{ runner.os }}-funnel-bin-${{ github.ref }}

- name: Build Funnel (if cache doesn't exist)
run: |
if [ ! -f ./funnel ]; then
make build
fi

- name: Cache Funnel binary (after build)
uses: actions/cache@v3
with:
path: ./funnel
key: ${{ runner.os }}-funnel-bin-${{ hashFiles('**/go.sum') }}-${{ github.ref }}

- name: Upload Funnel binary as artifact
uses: actions/upload-artifact@v4
with:
name: funnel
path: funnel
135 changes: 0 additions & 135 deletions .github/workflows/compliance-test.yaml

This file was deleted.

85 changes: 85 additions & 0 deletions .github/workflows/compliance.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# Workflow for running the TES compliance suite against Funnel
#
# This includes the following steps:
# 1. Build Funnel and store the resulting binary artifact
# 2. Install tes-compliance-suite and run against every version of TES simultaneously
# 3. start-report-deployment: Send a dispatch to the funnel-compliance repository to generate and publish
# the tes-compliance-suite report to https://ohsu-comp-bio.github.io/funnel-compliance/
#
# Optionally debug via SSH
# Ref: https://fleetdm.com/engineering/tips-for-github-actions-usability
#
# To use this step uncomment and place anywhere in the build steps. The build will pause on this step and
# output a ssh address associated with the Github action worker. Helpful for debugging build steps and
# and intermediary files/artifacts.
#
# - name: "Debug: Package dependancies for tmate (CentOS)"
# run: |
# yum install -y xz
# ln -s /bin/true /bin/apt-get
#
# - name: Setup tmate session
# uses: mxschmitt/action-tmate@v3

name: Compliance Test

on:
push:
pull_request:

jobs:
build:
uses: ./.github/workflows/build.yml

compliance:
strategy:
fail-fast: false
matrix:
version: [1.0.0, 1.1.0]
db: ["boltdb", "mongodb"]
compute: ["local", "kubernetes"]
storage: ["local", "s3"]
needs: build
runs-on: ubuntu-latest
steps:
# Required to access the 'tests/mongo.config.yml' file
# Perhaps uploading it as an artifact would be more efficient?
- name: Check out code
uses: actions/checkout@v2

- uses: actions/download-artifact@v4
with:
name: funnel

- name: Start Funnel server
run: |
touch config.yml

if [ ${{ matrix.db }} = "mongodb" ]; then
make start-mongodb
cat `pwd`/tests/mongo.config.yml >> config.yml
fi

if [ ${{ matrix.storage }} = "s3" ]; then
docker run -d -p 9000:9000 --name minio \
-e "MINIO_ROOT_USER=minioadmin" \
-e "MINIO_ROOT_PASSWORD=minioadmin" \
-v /tmp/data:/data \
-v /tmp/config:/root/.minio \
minio/minio server /data
cat `pwd`/tests/s3.config.yml >> config.yml
fi

chmod +x funnel
./funnel server run --config `pwd`/config.yml &> funnel.logs &

- name: Run OpenAPI Test Runner
run: |
git clone https://github.com/elixir-cloud-aai/openapi-test-runner
cd openapi-test-runner
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python setup.py install
openapi-test-runner report --version "${{ matrix.version }}" --server "http://localhost:8000/"

9 changes: 8 additions & 1 deletion .github/workflows/hugo.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ name: Deploy Hugo site to Pages
on:
# Runs on pushes targeting the default branch
push:
branches: ["master"]
branches:
- main
- master

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
Expand Down Expand Up @@ -59,6 +61,11 @@ jobs:
--baseURL "${{ steps.pages.outputs.base_url }}/" \
--source website \
--destination public

# Run pagefind to add search functionality
# Reference: https://pagefind.app/docs/
npx -y pagefind --site public

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
Expand Down
38 changes: 8 additions & 30 deletions .github/workflows/nextflow.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,55 +2,34 @@ name: Nextflow Test

on:
push:
pull_request:

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Set up Go 1.x
uses: actions/setup-go@v2
with:
go-version: 1.21

- name: Check out code
uses: actions/checkout@v2

- name: Build Funnel (if cache does not exist)
run: make build
uses: ./.github/workflows/build.yml

- name: Store Funnel
uses: actions/upload-artifact@v2
with:
name: funnelBin
path: funnel

nextflow:
runs-on: ubuntu-latest
needs: build
runs-on: ubuntu-latest
steps:
- name: Download Funnel
uses: actions/download-artifact@v2
uses: actions/download-artifact@v4
with:
name: funnelBin
path: funnel
name: funnel

- name: Start Funnel
working-directory:
run: |
cd funnel/
chmod +x ./funnel
./funnel server --LocalStorage.AllowedDirs $HOME run &

- name: Install Nextflow
run: |
cd ..
git clone https://github.com/nextflow-io/nextflow/ -b tes-update-1.1
git clone https://github.com/nextflow-io/nextflow
cd nextflow
make compile

- name: Install nf-canary and GA4GH-TES plugin
run: |
cd ..
git clone https://github.com/seqeralabs/nf-canary
cd nf-canary
cat <<EOF >> nextflow.config
Expand All @@ -60,8 +39,7 @@ jobs:
process.executor = 'tes'
tes.endpoint = 'http://localhost:8000'
EOF

- name: Run nf-canary tests
run: |
cd ../nf-canary
../nextflow/launch.sh run main.nf
./nextflow/nextflow run nf-canary/main.nf
Loading
Loading