@@ -11,27 +11,49 @@ jobs:
1111 name : Push swift upload runner Docker image to Docker Hub
1212 runs-on : ubuntu-latest
1313 steps :
14- - uses : actions/checkout@v1
15- - name : Login to DockerHub Registry
16- run : echo '${{ secrets.DOCKER_PASSWORD }}' | docker login -u '${{ secrets.DOCKER_USERNAME }}' --password-stdin
17- - name : Get the version
18- id : vars
19- run : echo ::set-output name=tag::$(echo ${GITHUB_REF:10})
20- - name : Build the tagged Docker image
21- if : ${{ steps.vars.outputs.tag != '/master' && steps.vars.outputs.tag != '/devel' }}
22- run : docker build . --file Dockerfile --tag cscfi/swiftui-upload-runner:${{steps.vars.outputs.tag}}
23- - name : Push the tagged Docker image
24- if : ${{ steps.vars.outputs.tag != '/master' && steps.vars.outputs.tag != '/devel' }}
25- run : docker push cscfi/swiftui-upload-runner:${{steps.vars.outputs.tag}}
26- - name : Build the latest Docker image
27- if : ${{ steps.vars.outputs.tag == '/master' }}
28- run : docker build . --file Dockerfile --tag cscfi/swiftui-upload-runner:latest
29- - name : Push the latest Docker image
30- if : ${{ steps.vars.outputs.tag == '/master' }}
31- run : docker push cscfi/swiftui-upload-runner:latest
32- - name : Build the stage Docker image
33- if : ${{ steps.vars.outputs.tag == '/devel' }}
34- run : docker build . --file Dockerfile --tag cscfi/swiftui-upload-runner:stage
35- - name : Push the stage Docker image
36- if : ${{ steps.vars.outputs.tag == '/devel' }}
37- run : docker push cscfi/swiftui-upload-runner:stage
14+ - name : Check out the repo
15+ uses : actions/checkout@v2
16+
17+ - name : Prepare
18+ id : prep
19+ run : |
20+ DOCKER_IMAGE=cscfi/swiftui-upload-runner
21+ VERSION=edge
22+ if [[ $GITHUB_REF == refs/tags/* ]]; then
23+ VERSION=${GITHUB_REF#refs/tags/}
24+ elif [[ $GITHUB_REF == refs/heads/* ]]; then
25+ BRANCH=$(echo ${GITHUB_REF#refs/heads/} | sed -r 's#/+#-#g')
26+ if [[ $BRANCH == master ]]; then
27+ VERSION=latest
28+ elif [[ $BRANCH == devel ]]; then
29+ VERSION=stage
30+ fi
31+ fi
32+ TAGS="${DOCKER_IMAGE}:${VERSION}"
33+ echo ::set-output name=version::${VERSION}
34+ echo ::set-output name=tags::${TAGS}
35+ echo ::set-output name=created::$(date -u +'%Y-%m-%dT%H:%M:%SZ')
36+
37+ - name : Set up Docker Buildx
38+ uses : docker/setup-buildx-action@v1
39+
40+ - name : Login to DockerHub
41+ if : github.event_name != 'pull_request'
42+ uses : docker/login-action@v1
43+ with :
44+ username : ${{ secrets.DOCKER_USERNAME }}
45+ password : ${{ secrets.DOCKER_PASSWORD }}
46+
47+ - name : Build and push
48+ uses : docker/build-push-action@v2
49+ with :
50+ context : .
51+ file : ./Dockerfile
52+ push : ${{ github.event_name != 'pull_request' }}
53+ tags : ${{ steps.prep.outputs.tags }}
54+ cache-from : type=registry,ref=cscfi/swiftui-upload-runner:latest
55+ cache-to : type=inline
56+ labels : |
57+ org.opencontainers.image.source=${{ github.event.repository.clone_url }}
58+ org.opencontainers.image.created=${{ steps.prep.outputs.created }}
59+ org.opencontainers.image.revision=${{ github.sha }}
0 commit comments