-
Notifications
You must be signed in to change notification settings - Fork 126
137 lines (119 loc) · 5.16 KB
/
main.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
##### ------------------------------------------------------------------------------------------------ #####
##### This caller workflow tests, builds, and pushes the image to Docker Hub and Quay using the most #####
##### recent version of Freyja and downloading the most recent variant information. #####
##### It takes no manual input. #####
##### ------------------------------------------------------------------------------------------------ #####
name: Update Freyja
on:
workflow_dispatch:
schedule:
- cron: '30 7 * * *'
run-name: Updating Freyja
jobs:
update:
runs-on: ubuntu-latest
steps:
# Keeping here in case we want to use it to keep Freyja's version up-to-date as well
# - name: Get latest release
# uses: rez0n/actions-github-release@main
# id: latest_release
# with:
# token: ${{ secrets.GITHUB_TOKEN }}
# repository: andersen-lab/Freyja
# type: "stable"
# - name: Remove V
# id: strip
# run: |
# version=$(echo "${{ steps.latest_release.outputs.release }}" | sed 's/V//g' | sed 's/v//g' )
# echo "The version is $version"
# echo "version=$version" >> $GITHUB_OUTPUT
- name: pull repo
uses: actions/checkout@v3
# Keeping here in case we want to figure out why this doesn't work
# - name: get latest version of freyja in docker-builds repo
# id: latest_version
# run: |
# file=$(git log -1 --name-only --format=%cd --date=iso freyja/*/Dockerfile | grep Dockerfile | head -n 1 )
# echo "the latest file is $file"
# echo "file=$file" >> $GITHUB_OUTPUT
#
# version=$(echo $file | cut -f 2 -d "/" | cut -f 1 -d "_")
# echo "the latest version is $version"
# echo "version=$version" >> $GITHUB_OUTPUT
- name: set freyja version
id: latest_version
run: |
version=1.4.8
echo "version=$version" >> $GITHUB_OUTPUT
file=freyja/$version/Dockerfile
ls $file
echo "file=$file" >> $GITHUB_OUTPUT
- name: set up docker buildx
id: buildx
uses: docker/setup-buildx-action@v2
- name: cache docker layers
uses: actions/cache@v3
with:
path: /tmp/.buildx-cache-freyja
key: ${{ runner.os }}-buildx-freyja-${{ github.sha }}
restore-keys: ${{ runner.os }}-buildx-freyja
- name: build to test
id: docker_build_to_test
uses: docker/build-push-action@v3
with:
file: ${{ steps.latest_version.outputs.file }}
target: test
load: true
push: false
cache-from: type=local,src=/tmp/.buildx-cache-freyja
cache-to: type=local,mode=max,dest=/tmp/.buildx-cache-freyja-new
tags: freyja:update
- name: get freyja database version
id: db_version
run: |
docker run freyja:update freyja demix --version
version=$(docker run freyja:update freyja demix --version | grep . | grep -v Barcode | head -n 1)
echo "the latest version is $version"
echo "version=$version" >> $GITHUB_OUTPUT
- name: Get current date
id: date
run: |
date=$(date '+%Y-%m-%d')
echo "the date is $date"
echo "date=$date" >> $GITHUB_OUTPUT
# - name: Login to DockerHub
# uses: docker/login-action@v2
# with:
# username: ${{ secrets.DOCKER_HUB_USERNAME }}
# password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Login to Quay
uses: docker/login-action@v2
with:
registry: quay.io
username: ${{ secrets.QUAY_USERNAME }}
password: ${{ secrets.QUAY_ROBOT_TOKEN }}
- name: Build and push user-defined tag to DockerHub
id: docker_build_user_defined_tag
uses: docker/build-push-action@v3
with:
file: ${{ steps.latest_version.outputs.file }}
target: app
push: true
cache-from: type=local,src=/tmp/.buildx-cache-freyja
cache-to: type=local,mode=max,dest=/tmp/.buildx-cache-freyja-new # mode=max means export layers from all stage to cache
tags: staphb/freyja:${{ steps.latest_version.outputs.version }}-${{ steps.db_version.outputs.version }}-${{ steps.date.outputs.date }}
- name: Build and push to Quay
id: build
uses: docker/build-push-action@v3
with:
file: ${{ steps.latest_version.outputs.file }}
target: app
push: true
cache-from: type=local,src=/tmp/.buildx-cache-freyja
cache-to: type=local,mode=max,dest=/tmp/.buildx-cache-freyja-new # mode=max means export
tags: quay.io/staphb/freyja:${{ steps.latest_version.outputs.version }}-${{ steps.db_version.outputs.version }}-${{ steps.date.outputs.date }}
- name: Move cache # apparently prevents the cache from growing in size forever
run: |
rm -rf /tmp/.buildx-cache-freyja
mv /tmp/.buildx-cache-freyja-new /tmp/.buildx-cache-freyja
- name: Image digest