mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-10-13 02:26:36 +08:00
ci: canary
This commit is contained in:
@@ -9,6 +9,12 @@ on:
|
|||||||
type: string
|
type: string
|
||||||
push:
|
push:
|
||||||
tags: ["v*"]
|
tags: ["v*"]
|
||||||
|
branches: ["canary"]
|
||||||
|
|
||||||
|
# One active run per ref (e.g. canary); newer runs cancel older in-progress builds.
|
||||||
|
concurrency:
|
||||||
|
group: build-image-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
@@ -52,7 +58,9 @@ jobs:
|
|||||||
|
|
||||||
OWNER="${GITHUB_REPOSITORY_OWNER,,}"
|
OWNER="${GITHUB_REPOSITORY_OWNER,,}"
|
||||||
|
|
||||||
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then
|
if [[ "${GITHUB_REF}" == refs/heads/canary ]]; then
|
||||||
|
VERSION="canary"
|
||||||
|
elif [[ "${GITHUB_REF}" == refs/tags/* ]]; then
|
||||||
VERSION="${GITHUB_REF_NAME}"
|
VERSION="${GITHUB_REF_NAME}"
|
||||||
elif [[ -n "$INPUT_VERSION" ]]; then
|
elif [[ -n "$INPUT_VERSION" ]]; then
|
||||||
VERSION="$INPUT_VERSION"
|
VERSION="$INPUT_VERSION"
|
||||||
@@ -135,7 +143,9 @@ jobs:
|
|||||||
|
|
||||||
OWNER="${GITHUB_REPOSITORY_OWNER,,}"
|
OWNER="${GITHUB_REPOSITORY_OWNER,,}"
|
||||||
|
|
||||||
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then
|
if [[ "${GITHUB_REF}" == refs/heads/canary ]]; then
|
||||||
|
VERSION="canary"
|
||||||
|
elif [[ "${GITHUB_REF}" == refs/tags/* ]]; then
|
||||||
VERSION="${GITHUB_REF_NAME}"
|
VERSION="${GITHUB_REF_NAME}"
|
||||||
elif [[ -n "$INPUT_VERSION" ]]; then
|
elif [[ -n "$INPUT_VERSION" ]]; then
|
||||||
VERSION="$INPUT_VERSION"
|
VERSION="$INPUT_VERSION"
|
||||||
@@ -181,16 +191,23 @@ jobs:
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "${VERSION}" =~ (alpha|beta|rc) ]]; then
|
# canary builds only publish the movable :canary tag (not latest/beta)
|
||||||
FLOATING_TAG="beta"
|
if [[ "${VERSION}" == "canary" ]]; then
|
||||||
|
docker buildx imagetools create \
|
||||||
|
-t "${IMAGE}:canary" \
|
||||||
|
"${references[@]}"
|
||||||
else
|
else
|
||||||
FLOATING_TAG="latest"
|
if [[ "${VERSION}" =~ (alpha|beta|rc) ]]; then
|
||||||
fi
|
FLOATING_TAG="beta"
|
||||||
|
else
|
||||||
|
FLOATING_TAG="latest"
|
||||||
|
fi
|
||||||
|
|
||||||
docker buildx imagetools create \
|
docker buildx imagetools create \
|
||||||
-t "${IMAGE}:${VERSION}" \
|
-t "${IMAGE}:${VERSION}" \
|
||||||
-t "${IMAGE}:${FLOATING_TAG}" \
|
-t "${IMAGE}:${FLOATING_TAG}" \
|
||||||
"${references[@]}"
|
"${references[@]}"
|
||||||
|
fi
|
||||||
env:
|
env:
|
||||||
IMAGE: ${{ env.IMAGE }}
|
IMAGE: ${{ env.IMAGE }}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.PHONY: swagger license license-check build-embedded build-test cross-build code-check format
|
.PHONY: swagger license license-check build-embedded build-test cross-build code-check format canary
|
||||||
|
|
||||||
VERSION ?= dev
|
VERSION ?= dev
|
||||||
BUILD_DATE ?= $(shell date -u +'%Y-%m-%dT%H:%M:%SZ')
|
BUILD_DATE ?= $(shell date -u +'%Y-%m-%dT%H:%M:%SZ')
|
||||||
@@ -108,3 +108,38 @@ dev:
|
|||||||
echo "==> Development servers exited with errors." >&2; \
|
echo "==> Development servers exited with errors." >&2; \
|
||||||
exit 1; \
|
exit 1; \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Merge the current branch into canary and push, triggering Build Image (:canary).
|
||||||
|
canary:
|
||||||
|
@set -e; \
|
||||||
|
if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then \
|
||||||
|
echo "error: not a git repository" >&2; \
|
||||||
|
exit 1; \
|
||||||
|
fi; \
|
||||||
|
if [ -n "$$(git status --porcelain)" ]; then \
|
||||||
|
echo "error: working tree is dirty; commit or stash changes first" >&2; \
|
||||||
|
exit 1; \
|
||||||
|
fi; \
|
||||||
|
CURRENT_BRANCH=$$(git rev-parse --abbrev-ref HEAD); \
|
||||||
|
if [ "$$CURRENT_BRANCH" = "HEAD" ]; then \
|
||||||
|
echo "error: detached HEAD; checkout a branch first" >&2; \
|
||||||
|
exit 1; \
|
||||||
|
fi; \
|
||||||
|
echo "==> Publishing $$CURRENT_BRANCH to canary..."; \
|
||||||
|
git fetch origin; \
|
||||||
|
if git show-ref --verify --quiet refs/remotes/origin/canary; then \
|
||||||
|
git checkout -B canary origin/canary; \
|
||||||
|
else \
|
||||||
|
git checkout -B canary; \
|
||||||
|
fi; \
|
||||||
|
if [ "$$CURRENT_BRANCH" != "canary" ]; then \
|
||||||
|
if ! git merge --no-edit "$$CURRENT_BRANCH"; then \
|
||||||
|
echo "error: merge failed; resolve conflicts on canary, then: git push -u origin canary" >&2; \
|
||||||
|
exit 1; \
|
||||||
|
fi; \
|
||||||
|
fi; \
|
||||||
|
git push -u origin canary; \
|
||||||
|
if [ "$$CURRENT_BRANCH" != "canary" ]; then \
|
||||||
|
git checkout "$$CURRENT_BRANCH"; \
|
||||||
|
fi; \
|
||||||
|
echo "==> canary updated and pushed (image tag: canary)"
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
allowBuilds:
|
allowBuilds:
|
||||||
|
'@parcel/watcher': true
|
||||||
|
'@swc/core': true
|
||||||
core-js: true
|
core-js: true
|
||||||
sharp: true
|
sharp: true
|
||||||
unrs-resolver: true
|
unrs-resolver: true
|
||||||
|
|||||||
Reference in New Issue
Block a user