name: Release Docker Image on: release: types: [published] workflow_dispatch: env: REGISTRY: reg.sabp.ir IMAGE_NAME: sabp-apps/devops-test RELEASE_TAG: ${{ gitea.event.release.tag_name }} REF_NAME: ${{ gitea.ref_name }} jobs: build-and-push: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Login to Harbor shell: bash env: HARBOR_USERNAME: ${{ secrets.HARBOR_USERNAME }} HARBOR_PASSWORD: ${{ secrets.HARBOR_PASSWORD }} run: | set -euo pipefail if [ -z "${HARBOR_USERNAME:-}" ] || [ -z "${HARBOR_PASSWORD:-}" ]; then echo "HARBOR_USERNAME and HARBOR_PASSWORD secrets are required." exit 1 fi echo "$HARBOR_PASSWORD" | docker login "$REGISTRY" --username "$HARBOR_USERNAME" --password-stdin - name: Build and push image shell: bash run: | set -euo pipefail tag="${RELEASE_TAG:-$REF_NAME}" tag="${tag#v}" image="$REGISTRY/$IMAGE_NAME" docker build --pull -t "$image:$tag" -t "$image:latest" . docker push "$image:$tag" docker push "$image:latest"