name: Release Image on: push: tags: - 'v*' workflow_dispatch: inputs: tag: description: 'Tag to release, for example v0.1.140' required: true type: string jobs: image: runs-on: linux_amd64 env: GITEA_BASE_URL: http://git.jianshixingqiu.com GITEA_API_URL: http://git.jianshixingqiu.com/api/v1 GITEA_OWNER: kgod GITEA_REPO: sub2api IMAGE_NAME: git.jianshixingqiu.com/kgod/sub2api steps: - name: Checkout env: RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }} run: | set -eu rm -rf .git git init git remote add origin "http://kgod:${RELEASE_TOKEN}@git.jianshixingqiu.com/kgod/sub2api.git" if [ -n "${{ inputs.tag }}" ] && [ "${GITHUB_EVENT_NAME:-}" != "workflow_dispatch" ]; then git fetch --depth 1 origin "refs/tags/${{ inputs.tag }}" else git fetch --depth 1 origin "$GITHUB_REF" fi git checkout --force FETCH_HEAD - name: Prepare metadata run: | set -eu if [ -n "${{ inputs.tag }}" ]; then TAG="${{ inputs.tag }}" else TAG="${GITHUB_REF_NAME:-${GITHUB_REF##*/}}" fi VERSION="${TAG#v}" COMMIT="$(git rev-parse --short=12 HEAD)" BUILD_DATE="$(date -u +%Y-%m-%dT%H:%M:%SZ)" echo "TAG=${TAG}" >> "$GITHUB_ENV" echo "VERSION=${VERSION}" >> "$GITHUB_ENV" echo "COMMIT=${COMMIT}" >> "$GITHUB_ENV" echo "BUILD_DATE=${BUILD_DATE}" >> "$GITHUB_ENV" - name: Login to Gitea Container Registry env: RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }} run: | set -eu echo "$RELEASE_TOKEN" | docker login git.jianshixingqiu.com -u kgod --password-stdin - name: Build image run: | set -eu docker build \ -f Dockerfile.gitea \ --build-arg VERSION="$VERSION" \ --build-arg COMMIT="$COMMIT" \ --build-arg BUILD_DATE="$BUILD_DATE" \ --label "org.opencontainers.image.version=$VERSION" \ --label "org.opencontainers.image.revision=$COMMIT" \ --label "org.opencontainers.image.source=$GITEA_BASE_URL/$GITEA_OWNER/$GITEA_REPO" \ -t "$IMAGE_NAME:$VERSION" \ -t "$IMAGE_NAME:latest" \ . - name: Push image run: | set -eu docker push "$IMAGE_NAME:$VERSION" docker push "$IMAGE_NAME:latest" - name: Create Gitea release env: RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }} run: | set -eu BODY="Docker image: ${IMAGE_NAME}:${VERSION}" PAYLOAD=$(printf '{"tag_name":"%s","target_commitish":"%s","name":"Sub2API %s","body":"%s","draft":false,"prerelease":false}' "$TAG" "$(git rev-parse HEAD)" "$VERSION" "$BODY") curl -fsS \ -X POST \ -H "Authorization: token ${RELEASE_TOKEN}" \ -H "Content-Type: application/json" \ -d "$PAYLOAD" \ "$GITEA_API_URL/repos/$GITEA_OWNER/$GITEA_REPO/releases" || true