Optimize GitHub actions #5
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Docker | |
on: | |
push: | |
branches: | |
- main | |
tags: | |
- v* | |
pull_request: | |
jobs: | |
docker: | |
runs-on: ubuntu-latest | |
if: github.event_name == 'push' | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Prepare configuration | |
run: | | |
# Strip git ref prefix from version | |
VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') | |
# Strip "v" prefix from tag name | |
[[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//') | |
# Use Docker `latest` tag convention | |
[ "$VERSION" == "main" ] && VERSION=latest | |
echo VERSION=$VERSION | |
echo "version=${VERSION}" >> $GITHUB_ENV | |
IMAGE_ID=${{ github.actor }}/latex | |
echo IMAGE_ID=$IMAGE_ID | |
echo "IMAGE_ID=${IMAGE_ID}" >> $GITHUB_ENV | |
- name: Build minimal | |
run: | | |
make minimal | |
docker tag ${{ env.IMAGE_ID }}:latest-minimal ${{ env.IMAGE_ID }}:${{ env.version }}-minimal | |
docker tag ${{ env.IMAGE_ID }}:latest-minimal ghcr.io/${{ env.IMAGE_ID }}:${{ env.version }}-minimal | |
- name: Build basic | |
run: | | |
make basic | |
docker tag ${{ env.IMAGE_ID }}:latest-basic ${{ env.IMAGE_ID }}:${{ env.version }}-basic | |
docker tag ${{ env.IMAGE_ID }}:latest-basic ghcr.io/${{ env.IMAGE_ID }}:${{ env.version }}-basic | |
- name: Build small | |
run: | | |
make small | |
docker tag ${{ env.IMAGE_ID }}:latest-small ${{ env.IMAGE_ID }}:${{ env.version }}-small | |
docker tag ${{ env.IMAGE_ID }}:latest-small ghcr.io/${{ env.IMAGE_ID }}:${{ env.version }}-small | |
- name: Build medium | |
run: | | |
make medium | |
docker tag ${{ env.IMAGE_ID }}:latest-medium ${{ env.IMAGE_ID }}:${{ env.version }}-medium | |
docker tag ${{ env.IMAGE_ID }}:latest-medium ghcr.io/${{ env.IMAGE_ID }}:${{ env.version }}-medium | |
- name: Build full | |
run: | | |
make full | |
docker tag ${{ env.IMAGE_ID }}:latest-full ${{ env.IMAGE_ID }}:${{ env.version }}-full | |
docker tag ${{ env.IMAGE_ID }}:latest-full ghcr.io/${{ env.IMAGE_ID }}:${{ env.version }}-full | |
docker tag ${{ env.IMAGE_ID }}:latest-full ${{ env.IMAGE_ID }}:${{ env.version }} | |
docker tag ${{ env.IMAGE_ID }}:latest-full ghcr.io/${{ env.IMAGE_ID }}:${{ env.version }} | |
- name: Run tests | |
run: | | |
make test | |
- name: Log in to DockerHub | |
uses: docker/login-action@v2 | |
with: | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Log in to GitHub Container Registry | |
uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Push images | |
run: | | |
docker push ${{ env.image_name }}:${{ env.version }}-minimal | |
docker push ${{ env.image_name }}:${{ env.version }}-basic | |
docker push ${{ env.image_name }}:${{ env.version }}-small | |
docker push ${{ env.image_name }}:${{ env.version }}-medium | |
docker push ${{ env.image_name }}:${{ env.version }}-full | |
docker push ${{ env.image_name }}:${{ env.version }} | |
docker push ghcr.io/${{ env.image_name }}:${{ env.version }}-minimal | |
docker push ghcr.io/${{ env.image_name }}:${{ env.version }}-basic | |
docker push ghcr.io/${{ env.image_name }}:${{ env.version }}-small | |
docker push ghcr.io/${{ env.image_name }}:${{ env.version }}-medium | |
docker push ghcr.io/${{ env.image_name }}:${{ env.version }}-full | |
docker push ghcr.io/${{ env.image_name }}:${{ env.version }} |