Skip to content

login to ghcr

login to ghcr #95

Workflow file for this run

name: docker
on:
push:
branches:
- 'restructure_github_actions'
jobs:
build_main:
strategy:
matrix:
container: ["nginx", "qiita", "plugin_collector"]
runs-on: ubuntu-latest
steps:
- name: Checkout tinqiita repo
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Read image version from dockerfile
id: vars
run: |
VERSION=$(head -n 1 Images/${{ matrix.container }}/${{ matrix.container }}.dockerfile | cut -d ":" -f 2- | tr -d " ")
echo "IMAGE_TAG=$VERSION" >> $GITHUB_ENV
cp Images/${{ matrix.container }}/start_${{ matrix.container }}.sh Images/test_plugin.sh Images/nginx/nginx_qiita.conf Images/${{ matrix.container }}/requirements.txt .
cp Images/qiita/config_portal.cfg Images/qiita/config_qiita_oidc.cfg Images/qiita/drop_workflows.py Images/qiita/start_plugin.py Images/qiita/start_qiita-initDB.sh Images/qiita/start_qiita.sh .
cp Images/plugin_collector/collect_configs.py Images/plugin_collector/fix_test_db.py Images/plugin_collector/stefan_cert.conf Images/plugin_collector/stefan_csr.conf .
- name: Create certificate
# second copy of "qiita_server_certificates" is necessary to match path for docker build, first copy for mounting into container
run: |
make ./references/qiita_server_certificates ./environments/qiita_db.env ./environments/qiita.env config
cp -r ./references/qiita_server_certificates ./qiita_server_certificates
- name: Store certifactes for follow up jobs
uses: actions/upload-artifact@v4
with:
name: certificates
path: ./references/qiita_server_certificates ./qiita_server_certificates
- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build main qiita images and push to github's own registry
uses: docker/build-push-action@v6
with:
context: .
load: true
file: Images/${{ matrix.container }}/${{ matrix.container }}.dockerfile
tags: ghcr.io/${{ github.repository }}/${{ matrix.container }}:testcandidate
cache-from: type=gha,scope=tinqiita-${{ github.ref_name }}
cache-to: type=gha,scope=tinqiita-${{ github.ref_name }},mode=max
build_plugins:
needs: build_main
strategy:
matrix:
plugin: ["qp-deblur", "qtp-biom", "qtp-sequencing", "qtp-visualization", "qtp-diversity", "qp-target-gene", "qtp-job-output-folder"]
runs-on: ubuntu-latest
steps:
- name: Checkout tinqiita repo
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Read image version from dockerfile
id: vars
run: |
VERSION=$(head -n 1 Images/${{ matrix.plugin }}/${{ matrix.plugin }}.dockerfile | cut -d ":" -f 2- | tr -d " ")
echo "IMAGE_TAG=$VERSION" >> $GITHUB_ENV
cp Images/${{ matrix.plugin }}/start_${{ matrix.plugin }}.sh Images/test_plugin.sh Images/${{ matrix.plugin }}/requirements.txt .
- name: Download certificates from job build_main
uses: actions/download-artifact@v4
with:
name: certificates
- name: Create fake reference databases
run: |
mkdir -p ./references/qp-deblur/ ./references/qp-target-gene
for f in `echo "./references/qp-deblur/reference-gg-raxml-bl.tre references/qp-target-gene/97_otus.fasta references/qp-target-gene/97_otus.tree references/qp-target-gene/97_otu_taxonomy.txt"`; do echo "fake" > $f; done
- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build plugin images
uses: docker/build-push-action@v6
with:
context: .
push: false
load: true
file: Images/${{ matrix.plugin }}/${{ matrix.plugin }}.dockerfile
- name: adapt compose file to select specific plugin
run: |
sed -i "s/MATRIXPLUGIN/${{ matrix.plugin }}/g" compose_github.yaml
- name: Run docker compose
uses: hoverkraft-tech/compose-action@v2.0.1
with:
compose-file: "compose_github.yaml"
services: |
nginx
- name: Execute tests in the running services
run: |
sleep 5
docker compose exec ${{ matrix.plugin }} /bin/bash -c "bash /test_plugin.sh"
- name: Push production image (only if tests passed)
if: success()
uses: docker/build-push-action@v6
with:
context: .
push: true
file: Images/${{ matrix.plugin }}/${{ matrix.plugin }}.dockerfile
tags: |
tags: ghcr.io/${{ github.repository }}/${{ matrix.plugin }}:testcandidate
cache-from: type=gha,scope=tinqiita-${{ github.ref_name }}
cache-to: type=gha,scope=tinqiita-${{ github.ref_name }},mode=max
# jobs:
# docker:
# strategy:
# matrix:
# plugin: ["qp-deblur", "qtp-biom", "qtp-sequencing", "qtp-visualization", "qtp-diversity", "qp-target-gene", "qtp-job-output-folder",
# "nginx", "qiita", "plugin_collector"
# ]
# runs-on: ubuntu-latest
# steps:
# - name: Checkout repository
# uses: actions/checkout@v4
# - name: Login to DockerHub
# uses: docker/login-action@v3
# with:
# registry: harbor.computational.bio.uni-giessen.de
# username: ${{ vars.HARBOR_CB_USERNAME }}
# password: ${{ secrets.HARBOR_CB_SECRET }}
# - name: Set up Docker Buildx
# uses: docker/setup-buildx-action@v3
# - name: Read version from file
# id: vars
# run: |
# VERSION=$(head -n 1 Images/${{ matrix.plugin }}/${{ matrix.plugin }}.dockerfile | cut -d ":" -f 2- | tr -d " ")
# echo "IMAGE_TAG=$VERSION" >> $GITHUB_ENV
# cp Images/${{ matrix.plugin }}/start_${{ matrix.plugin }}.sh Images/test_plugin.sh Images/trigger_noconda.py Images/trigger.py Images/nginx/nginx_qiita.conf Images/${{ matrix.plugin }}/requirements.txt .
# cp Images/qiita/config_portal.cfg Images/qiita/config_qiita_oidc.cfg Images/qiita/drop_workflows.py Images/qiita/start_plugin.py Images/qiita/start_qiita-initDB.sh Images/qiita/start_qiita.sh .
# cp Images/plugin_collector/collect_configs.py Images/plugin_collector/fix_test_db.py Images/plugin_collector/stefan_cert.conf Images/plugin_collector/stefan_csr.conf .
# - name: Make tinqiita targets
# # second copy of "qiita_server_certificates" is necessary to match path for docker build, first copy for mounting into container
# run: |
# make ./references/qiita_server_certificates ./references/qp-deblur/reference-gg-raxml-bl.tre ./references/qp-target-gene ./environments/qiita_db.env ./environments/qiita.env config
# cp -r ./references/qiita_server_certificates ./qiita_server_certificates
# - name: Build Image (but do not push yet)
# uses: docker/build-push-action@v6
# with:
# context: .
# push: false
# load: true
# file: Images/${{ matrix.plugin }}/${{ matrix.plugin }}.dockerfile
# tags: tinqiita/${{ matrix.plugin }}:testcandidate
# - name: debug docker
# run: |
# docker image ls -a
# docker ps -a
# - name: adapt compose file to select specific plugin
# run: |
# sed -i "s/MATRIXPLUGIN/${{ matrix.plugin }}/g" compose_github.yaml
# sed -i "s|image: janssenlab/${{ matrix.plugin }}:latest|image: tinqiita/${{ matrix.plugin }}:testcandidate|" compose_github.yaml
# - name: Run docker compose
# if: ${{ !contains('nginx,qiita,plugin_collector', matrix.plugin) }}
# uses: hoverkraft-tech/compose-action@v2.0.1
# with:
# compose-file: "compose_github.yaml"
# services: |
# nginx
# - name: Execute tests in the running services (wait till qiita plugins are registered)
# if: ${{ !contains('nginx,qiita,plugin_collector', matrix.plugin) }}
# run: |
# sleep 5
# docker compose exec qiita /bin/bash -c "cat /logs/*; cat /qiita_plugins/*"
# docker compose exec ${{ matrix.plugin }} /bin/bash -c "PLUGIN=${{ matrix.plugin }} bash /test_plugin.sh"
# - name: Push production image (only if tests passed)
# if: success()
# uses: docker/build-push-action@v6
# with:
# context: .
# push: true
# file: Images/${{ matrix.plugin }}/${{ matrix.plugin }}.dockerfile
# tags: |
# harbor.computational.bio.uni-giessen.de/tinqiita/${{ matrix.plugin }}:${{ env.IMAGE_TAG }}
# harbor.computational.bio.uni-giessen.de/tinqiita/${{ matrix.plugin }}:latest