name: release on: push: branches: - main tags: - "v*" workflow_dispatch: env: REGISTRY: gitea.rclaw.top IMAGE_NAMESPACE: linkong/planet jobs: images: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Resolve image tags id: meta run: | echo "sha_tag=${GITHUB_SHA}" >> "$GITHUB_OUTPUT" if printf "%s" "${GITHUB_REF}" | grep -q '^refs/tags/v'; then echo "release_tag=${GITHUB_REF_NAME}" >> "$GITHUB_OUTPUT" else echo "release_tag=" >> "$GITHUB_OUTPUT" fi - name: Login to registry run: echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login "$REGISTRY" -u "${{ secrets.REGISTRY_USER }}" --password-stdin - name: Build and push images run: | for service in frontend backend aiprovider; do case "$service" in frontend) dockerfile="./frontend/Dockerfile" context="./frontend" ;; backend) dockerfile="backend/Dockerfile" context="." ;; aiprovider) dockerfile="aiprovider/Dockerfile" context="." ;; esac image="$REGISTRY/$IMAGE_NAMESPACE/$service:${{ steps.meta.outputs.sha_tag }}" docker build -t "$image" -f "$dockerfile" "$context" docker push "$image" if [ -n "${{ steps.meta.outputs.release_tag }}" ]; then release_image="$REGISTRY/$IMAGE_NAMESPACE/$service:${{ steps.meta.outputs.release_tag }}" docker tag "$image" "$release_image" docker push "$release_image" fi done