1name: Push
2on:
3 push:
4
5jobs:
6 build-and-push-container-image:
7 runs-on: ubuntu-latest
8 env:
9 REGISTRY: ghcr.io
10 steps:
11 - uses: actions/checkout@v2
12
13 - name: Set environment variables
14 run: |
15 echo "IMAGE_NAME=$(echo "$REGISTRY/$GITHUB_REPOSITORY" | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV
16 echo "GIT_SHA=$(echo ${{ github.sha }} | cut -c1-7)" >> $GITHUB_ENV
17 if [[ "${{ github.ref }}" == "refs/heads/"* ]]; then
18 GIT_REF=$(echo "${{ github.ref }}" | cut -d/ -f3)
19 else
20 GIT_REF=$(echo "${{ github.ref }}" | cut -d/ -f3)
21 fi
22 echo "GIT_REF=${GIT_REF}" >> $GITHUB_ENV
23 echo "IMAGE_TAG=${GIT_REF}-${GIT_SHA}" >> $GITHUB_ENV
24
25 - name: Docker Build
26 run: docker build --tag ${IMAGE_NAME}:${IMAGE_TAG} --build-arg BUILD_ENV=github --build-arg GIT_REF=${GIT_REF} --build-arg GIT_SHA=${GIT_SHA} .
27
28 - name: Docker Login
29 run: echo ${{ secrets.GITHUB_TOKEN }} | docker login $REGISTRY -u "${{ github.actor }}" --password-stdin
30
31 - name: Docker Push (Tagged)
32 run: docker push ${IMAGE_NAME}:${IMAGE_TAG}
33
34 - name: Tag image as latest
35 run: docker tag ${IMAGE_NAME}:${IMAGE_TAG} ${IMAGE_NAME}:latest
36
37 - name: Docker Push (Latest)
38 run: docker push ${IMAGE_NAME}:latest