Deploy and Test the App

At this point, your app bundle directory structure should look similar to:

fastqc_app/
├── Dockerfile                   # Done
├── app.json                     # Done
├── assets
│   ├── lib
│   │   ├── VERSION              # Done
│   │   └── container_exec.sh    # Do not modify
│   ├── runner.sh                # Done
│   └── tester.sh                # Do not modify
├── job.json                     # Done
├── project.ini                  # Done
├── src
│   └── mycode.py                # Optional
└── test
    └── SP1.fq                   # Optional

The final steps are to deploy the app in to the catalog on the tenant, then run a test job to confirm it is working.

Upload Test Data

The Tapis app takes FASTQ data as input. Now is a good time to upload some sample data to a storage system.

# Make a directory for test data
$ tapis files mkdir agave://tacc.work.taccuser/ test-data
+--------------+---------------------------------------+
| Field        | Value                                 |
+--------------+---------------------------------------+
| name         | test-data                             |
| uuid         | 1105399583769563626-242ac112-0001-002 |
| owner        | taccuser                              |
| path         | /test-data                            |
| lastModified | 2020-05-13T18:40:00.027-05:00         |
| source       | None                                  |
| status       | STAGING_COMPLETED                     |
| nativeFormat | dir                                   |
| systemId     | tacc.work.taccuser                    |
+--------------+---------------------------------------+

# Upload the SP1.fq file
$ tapis files upload agave://tacc.work.taccuser/test-data/ ./test/SP1.fq
+-------------------+----------+
| Field             | Value    |
+-------------------+----------+
| uploaded          | 1        |
| skipped           | 0        |
| messages          | 0        |
| bytes_transferred | 21.94 kB |
| elapsed_sec       | 3        |
+-------------------+----------+

# Confirm the file exists on the Tapis storage system
$ tapis files list agave://tacc.work.taccuser/test-data/
+--------+--------------+--------+
| name   | lastModified | length |
+--------+--------------+--------+
| SP1.fq | 1 minute ago |  22471 |
+--------+--------------+--------+

The test data can be referenced in future calls to the app as:

agave://tacc.work.taccuser/test-data/SP1.fq

Deploy the App

The tapis apps deploy command does multiple things. First, it builds and pushes your docker image to the namespace specified in project.ini. Second, it uploads the app assets to a Tapis storage space specified by deploymentSystem and deploymentPath in the app json file. Finally, it registers the app with the tenant.

Navigate in to the app bundle folder and issue:

$ pwd
~/fastqc_app/

$ ls
Dockerfile      app.json        assets/         job.json
project.ini     src/            test/

$ tapis apps deploy -W ./
+--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| stage  | message                                                                                                                                                                                     |
+--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| build  | Step 1/4 : FROM tacc/tacc-ubuntu18-mvapich2.3-psm2                                                                                                                                          |
| build  |  ---> d554e642ddc5                                                                                                                                                                          |
|        |                                                                                                                                                                                             |
| build  | Step 2/4 : RUN apt-get update     && apt-get upgrade -y     && apt-get install wget -y     && apt-get install zip -y     && apt-get install default-jre -y                                  |
| build  |  ---> Using cache                                                                                                                                                                           |
|        |                                                                                                                                                                                             |
| build  |  ---> aa1f50856b62                                                                                                                                                                          |
|        |                                                                                                                                                                                             |
| build  | Step 3/4 : RUN wget https://www.bioinformatics.babraham.ac.uk/projects/fastqc/fastqc_v0.11.9.zip     && unzip fastqc_v0.11.9.zip     && rm fastqc_v0.11.9.zip     && chmod +x FastQC/fastqc |
| build  |  ---> Using cache                                                                                                                                                                           |
|        |                                                                                                                                                                                             |
| build  |  ---> 3bb6917b68d6                                                                                                                                                                          |
|        |                                                                                                                                                                                             |
| build  | Step 4/4 : ENV PATH "/FastQC/:$PATH"                                                                                                                                                        |
| build  |  ---> Using cache                                                                                                                                                                           |
|        |                                                                                                                                                                                             |
| build  |  ---> 356927b0a8f6                                                                                                                                                                          |
|        |                                                                                                                                                                                             |
| build  | Successfully built 356927b0a8f6                                                                                                                                                             |
|        |                                                                                                                                                                                             |
| build  | Successfully tagged taccuser/fastqc_app:0.11.9                                                                                                                                              |
|        |                                                                                                                                                                                             |
| push   | The push refers to repository [docker.io/taccuser/fastqc_app]                                                                                                                               |
| push   | 0.11.9: digest: sha256:29eb2fdb1503fdd38ae311dabfc13958f0910253580614dba0d3ac2dd0753e41 size: 4085                                                                                          |
| upload | assets/runner.sh                                                                                                                                                                            |
| upload | assets/tester.sh                                                                                                                                                                            |
| upload | assets/lib/VERSION                                                                                                                                                                          |
| upload | assets/lib/container_exec.sh                                                                                                                                                                |
| create | Created Tapis app fastqc_app-0.11.9 revision 1                                                                                                                                              |
+--------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

If all goes well, you should see a successful message at the end of the log above, and you should see the new app listed in the apps catalog:

$ tapis apps search --name like fastqc
+----------------------------+----------+------------+------------------+----------+-------------------------+
| id                         | revision | label      | shortDescription | isPublic | executionSystem         |
+----------------------------+----------+------------+------------------+----------+-------------------------+
| taccuser-fastqc_app-0.11.9 |        2 | fastqc_app | FastQC app       | False    | tacc.stampede2.taccuser |
+----------------------------+----------+------------+------------------+----------+-------------------------+

Submit a Test Job

Submitting a test job has been described previously in this how-to guide. Here, testing will be performed in the same way. First, create an appropriate job.json file.

$ tapis jobs init --no-archive --output fastqc_job.json taccuser-fastqc_app-0.11.9

Which will output the following json, which can be streamed into a file for submission (add the highlighted test data line):

{
  "name": "taccuser-fastqc_app-job-1589377205989",
  "appId": "taccuser-fastqc_app-0.11.9",
  "batchQueue": "skx-normal",
  "maxRunTime": "01:00:00",
  "memoryPerNode": "1GB",
  "nodeCount": 1,
  "processorsPerNode": 1,
  "archive": false,
  "inputs": {
    "fastq": "agave://tacc.work.taccuser/test-data/SP1.fq"
  },
  "parameters": {},
  "notifications": [
    {
      "event": "FINISHED",
      "persistent": true,
      "url": "taccuser@gmail.com"
    },
    {
      "event": "FAILED",
      "persistent": true,
      "url": "taccuser@gmail.com"
    }
  ]
}

Then, submit the test job:

$ tapis jobs submit -F fastqc_job.json
+--------+------------------------------------------+
| Field  | Value                                    |
+--------+------------------------------------------+
| id     | 4e972f77-5bf9-446e-87a2-3541c4ea5745-007 |
| name   | taccuser-fastqc_app-job-1589377205989    |
| status | ACCEPTED                                 |
+--------+------------------------------------------+

Finally, when the job status is FINISHED, inspect and retrieve the output:

$ tapis jobs history 4e972f77-5bf9-446e-87a2-3541c4ea5745-007
+-------------------+----------------+------------------------------------------------------------------------------+
| status            | created        | description                                                                  |
+-------------------+----------------+------------------------------------------------------------------------------+
| PENDING           | 8 minutes ago  | Job processing beginning                                                     |
| PROCESSING_INPUTS | 8 minutes ago  | Identifying input files for staging                                          |
| STAGING_INPUTS    | 8 minutes ago  | Transferring job input data to execution system                              |
| STAGING_INPUTS    | 8 minutes ago  | Job input copy in progress: agave://tacc.work.taccuser/public/SP1.fq to agav |
|                   |                | e://tacc.stampede2.taccuser//scratch/05896/taccuser/taccuser/job-4e972f77-5b |
|                   |                | f9-446e-87a2-3541c4ea5745-007-taccuser-fastqc_app-job-1589377205989/SP1.fq   |
| STAGED            | 8 minutes ago  | Job inputs staged to execution system                                        |
| STAGING_JOB       | 8 minutes ago  | Staging runtime assets to execution system                                   |
| STAGING_JOB       | 8 minutes ago  | Fetching application assets from                                             |
|                   |                | agave://tacc.work.taccuser/taccuser/apps/fastqc_app-0.11.9                   |
| STAGING_JOB       | 8 minutes ago  | Staging runtime assets to agave://tacc.stampede2.taccuser//scratch/05896/sd2 |
|                   |                | e0004/taccuser/job-4e972f77-5bf9-446e-87a2-3541c4ea5745-007-taccuser-fastqc_ |
|                   |                | app-job-1589377205989                                                        |
| SUBMITTING        | 8 minutes ago  | Submitting job to execution system                                           |
| QUEUED            | 7 minutes ago  | Job queued to execution system queue                                         |
| RUNNING           | 3 minutes ago  | Job running on execution system                                              |
| CLEANING_UP       | 29 seconds ago | Job completed execution                                                      |
| FINISHED          | 29 seconds ago | Job completed successfully                                                   |
+-------------------+----------------+------------------------------------------------------------------------------+

$ tapis jobs outputs list 4e972f77-5bf9-446e-87a2-3541c4ea5745-007
+------------------------------------------------------------------------------------+-----------------+--------+
| name                                                                               | lastModified    | length |
+------------------------------------------------------------------------------------+-----------------+--------+
| SP1.fq                                                                             | 21 minutes ago  |  22471 |
| SP1_fastqc.html                                                                    | 17 minutes ago  | 561767 |
| SP1_fastqc.zip                                                                     | 17 minutes ago  | 420233 |
| container_exec.log                                                                 | 17 minutes ago  |  19232 |
| lib                                                                                | 17 minutes ago  |   4096 |
| runner.sh                                                                          | 17 minutes ago  |    875 |
| taccuser-fastqc_app-job-1589377205989-4e972f77-5bf9-446e-87a2-3541c4ea5745-007.err | 21 minutes ago  |    372 |
| taccuser-fastqc_app-job-1589377205989-4e972f77-5bf9-446e-87a2-3541c4ea5745-007.out | 21 minutes ago  |     29 |
| taccuser-fastqc_app-job-1589377205989.ipcexe                                       | 21 minutes ago  |   2772 |
| tester.sh                                                                          | 21 minutes ago  |     44 |
+------------------------------------------------------------------------------------+-----------------+--------+

$ tapis jobs outputs download 4e972f77-5bf9-446e-87a2-3541c4ea5745-007
Walking remote resource...
Found 13 file(s) in 5s
Downloading .agave.archive...
Downloading .agave.log...
Downloading container_exec.log...
Downloading container_exec.sh...
Downloading VERSION...
Downloading runner.sh...
Downloading taccuser-fastqc_app-job-1589377205989-4e972f77-5bf9-446e-87a2-3541c4ea5745-007.err...
Downloading taccuser-fastqc_app-job-1589377205989-4e972f77-5bf9-446e-87a2-3541c4ea5745-007.out...
Downloading taccuser-fastqc_app-job-1589377205989.ipcexe...
Downloading SP1.fq...
Downloading SP1_fastqc.html...
Downloading SP1_fastqc.zip...
Downloading tester.sh...
Downloaded 13 files in 61s
+-------------+-------+
| Field       | Value |
+-------------+-------+
| downloaded  | 13    |
| skipped     | 0     |
| messages    | 0     |
| elapsed_sec | 66    |
+-------------+-------+

If the file SP1_fastq.html exists, then the run was successful.