66 lines
2.2 KiB
YAML
66 lines
2.2 KiB
YAML
name: Build and Publish Docker Image
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
- dev
|
|
- v1.0
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v2
|
|
|
|
- name: Log in to Docker Hub
|
|
uses: docker/login-action@v2
|
|
with:
|
|
username: ${{ secrets.DOCKER_USERNAME }}
|
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
- name: Get the current timestamp
|
|
id: timestamp
|
|
run: echo "TIMESTAMP=$(date +%Y%m%d%H%M%S)" >> $GITHUB_ENV
|
|
|
|
- name: Get commit version
|
|
id: commit-version
|
|
run: |
|
|
COMMIT_MSG=$(git log -1 --pretty=%B)
|
|
echo "Commit message: $COMMIT_MSG" # Debugging output
|
|
# Updated regex to handle both vX.Y, vX.Y.Z, and vX.Y-pre-release formats
|
|
if [[ "$COMMIT_MSG" =~ ^v[0-9]+\.[0-9]+(\.[0-9]+)?(-[a-zA-Z0-9._-]+)?$ ]]; then
|
|
echo "Version match: $COMMIT_MSG"
|
|
echo "VERSION=${COMMIT_MSG}" >> $GITHUB_ENV
|
|
else
|
|
echo "No version match, defaulting to 'dev'"
|
|
echo "VERSION=dev" >> $GITHUB_ENV
|
|
fi
|
|
|
|
- name: Build Docker image
|
|
run: |
|
|
docker build -t ti1:${{ env.VERSION }} .
|
|
|
|
- name: Push Docker image
|
|
run: |
|
|
# If on v1.0 branch, push to 'testing.v1.0' tag
|
|
if [[ "${{ github.ref }}" == "refs/heads/v1.0" ]]; then
|
|
docker tag ti1:${{ env.VERSION }} ${{ secrets.DOCKER_USERNAME }}/ti1:testing-v1.0
|
|
docker push ${{ secrets.DOCKER_USERNAME }}/ti1:testing.v1.0
|
|
else
|
|
# Always push to 'dev' tag for main and dev branches
|
|
docker tag ti1:${{ env.VERSION }} ${{ secrets.DOCKER_USERNAME }}/ti1:dev
|
|
docker push ${{ secrets.DOCKER_USERNAME }}/ti1:dev
|
|
|
|
# If the version is valid, also push that specific version tag
|
|
if [[ "${{ env.VERSION }}" != "dev" ]]; then
|
|
docker tag ti1:${{ env.VERSION }} ${{ secrets.DOCKER_USERNAME }}/ti1:${{ env.VERSION }}
|
|
docker push ${{ secrets.DOCKER_USERNAME }}/ti1:${{ env.VERSION }}
|
|
fi
|
|
fi
|