-
Notifications
You must be signed in to change notification settings - Fork 2
132 lines (123 loc) · 4.78 KB
/
docker.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
name: Docker
# This will run when:
# - a new release is created, to make sure the right tags of the
# docker images are pushed (expects tags to be v1.8.4).
# - when new code is pushed to master/develop to push the tags
# latest and develop
# - when a pull request is created and updated to make sure the
# Dockerfile is still valid.
# To be able to push to dockerhub, this execpts the following
# secrets to be set in the project:
# - DOCKERHUB_USERNAME : username that can push to the org
# - DOCKERHUB_PASSWORD : password asscoaited with the username
on:
push:
branches:
- master
pull_request:
# Certain actions will only run when this is the master repo.
env:
MASTER_REPO: clowder-framework/extractors-geo
DOCKERHUB_ORG: clowder
jobs:
docker:
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
name:
- geotiff-metadata
- geoshp-preview
- geotiff-preview
- pycsw
include:
- name: geotiff-metadata
FOLDER: metadata.geotiff
- name: geoshp-preview
FOLDER: preview.geoshp
- name: geotiff-preview
FOLDER: preview.geotiff
- name: pycsw
FOLDER: pycsw.extractor
steps:
- uses: actions/checkout@v2
# calculate some variables that are used later
- name: Extractor Version
run: |
version="$(awk '/"version":/ { print $2 }' ${{ matrix.FOLDER }}/extractor_info.json | sed 's/^.*"\([0-9\.]*\)".*$/\1/')"
echo "VERSION=${version}" >> $GITHUB_ENV
tags=""
oldversion=""
while [ "${oldversion}" != "${version}" ]; do
oldversion="${version}"
tags="${version},${tags}"
version=${version%.*}
done
tags="latest,${tags}"
echo "TAGS=${tags}" >> $GITHUB_ENV
# build the docker image, this will always run to make sure
# the Dockerfile still works.
- name: Build image
uses: elgohr/[email protected]
env:
VERSION: ${{ env.VERSION }}
BUILDNUMBER: ${{ github.run_number }}
GITSHA1: ${{ github.sha }}
with:
registry: docker.pkg.github.com
name: ${{ github.repository_owner }}/${{ github.event.repository.name }}/extractors-${{ matrix.NAME }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
context: ${{ matrix.FOLDER }}
tags: "${{ env.TAGS }}"
buildargs: VERSION,BUILDNUMBER,GITSHA1
no_push: true
# this will publish to github container registry
- name: Publish to GitHub
if: github.event_name == 'push' && github.repository == env.MASTER_REPO
uses: elgohr/[email protected]
env:
VERSION: ${{ env.VERSION }}
BUILDNUMBER: ${{ github.run_number }}
GITSHA1: ${{ github.sha }}
with:
registry: ghcr.io
name: ${{ github.repository_owner }}/extractors-${{ matrix.NAME }}
username: ${{ secrets.GHCR_USERNAME }}
password: ${{ secrets.GHCR_PASSWORD }}
context: ${{ matrix.FOLDER }}
tags: "${{ env.TAGS }}"
buildargs: VERSION,BUILDNUMBER,GITSHA1
# this will publish to the clowder dockerhub repo
- name: Publish to Docker Hub
if: github.event_name == 'push' && github.repository == env.MASTER_REPO
uses: elgohr/[email protected]
env:
VERSION: ${{ env.VERSION }}
BUILDNUMBER: ${{ github.run_number }}
GITSHA1: ${{ github.sha }}
with:
name: ${{ env.DOCKERHUB_ORG }}/extractors-${{ matrix.NAME }}
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}
context: ${{ matrix.FOLDER }}
tags: "${{ env.TAGS }}"
buildargs: VERSION,BUILDNUMBER,GITSHA1
# this will update the README of the dockerhub repo
- name: check file
id: filecheck
if: github.event_name != 'push' && github.repository == env.MASTER_REPO
run: |
if [ "${{ matrix.README }}" != "" -a -e "${{ matrix.README }}" ]; then
echo "##[set-output name=exists;]true"
else
echo "##[set-output name=exists;]false"
fi
- name: Docker Hub Description
if: github.event_name != 'push' && github.repository == env.MASTER_REPO && steps.filecheck.outputs.exists == 'true'
uses: peter-evans/dockerhub-description@v2
env:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }}
DOCKERHUB_REPOSITORY: ${{ env.DOCKERHUB_ORG }}/extractors-${{ matrix.NAME }}
README_FILEPATH: ${{ matrix.README }}