-
Notifications
You must be signed in to change notification settings - Fork 126
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* build: update chat CI test. * update the test. * fix error. * fix error reference. * fix type format. * update image build logic. * update push and verify logic. * refactor: update workflow contents. * build: update workflows. * update contents.
- Loading branch information
Showing
7 changed files
with
358 additions
and
345 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,143 +3,100 @@ name: Publish Docker image | |
on: | ||
push: | ||
branches: | ||
- main | ||
# - main | ||
- release-* | ||
tags: | ||
- v* | ||
# tags: | ||
# - v* | ||
release: | ||
types: [published] | ||
|
||
workflow_dispatch: | ||
inputs: | ||
tag: | ||
description: "Tag version to be used for Docker image" | ||
required: true | ||
default: "v3.8.0" | ||
|
||
env: | ||
# Common versions | ||
GO_VERSION: "1.20" | ||
GO_VERSION: "1.22" | ||
|
||
jobs: | ||
build-dockerhub: | ||
build-image: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
- name: Set up QEMU | ||
uses: docker/setup-qemu-action@v2 | ||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v2 | ||
uses: actions/checkout@v4 | ||
|
||
# docker.io/openim/openim-chat:latest | ||
- name: Extract metadata (tags, labels) for Docker | ||
id: meta | ||
uses: docker/[email protected] | ||
with: | ||
images: openim/openim-chat | ||
# generate Docker tags based on the following events/attributes | ||
tags: | | ||
type=ref,event=tag | ||
type=schedule | ||
type=ref,event=branch | ||
type=ref,event=pr | ||
type=semver,pattern={{version}} | ||
type=semver,pattern=v{{version}} | ||
type=semver,pattern={{major}}.{{minor}} | ||
type=semver,pattern={{major}} | ||
type=sha | ||
- name: Set up Docker Buildx | ||
uses: docker/[email protected] | ||
|
||
- name: Log in to Docker Hub | ||
uses: docker/login-action@v2 | ||
uses: docker/login-action@v3.3.0 | ||
with: | ||
username: ${{ secrets.DOCKER_USERNAME }} | ||
password: ${{ secrets.DOCKER_PASSWORD }} | ||
|
||
- name: Build and push Docker image | ||
uses: docker/build-push-action@v4 | ||
with: | ||
context: . | ||
# linux/ppc64le,linux/s390x | ||
platforms: linux/amd64,linux/arm64 | ||
push: ${{ github.event_name != 'pull_request' }} | ||
tags: ${{ steps.meta.outputs.tags }} | ||
labels: ${{ steps.meta.outputs.labels }} | ||
|
||
build-aliyun: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
- name: Set up QEMU | ||
uses: docker/setup-qemu-action@v2 | ||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v2 | ||
# registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-chat:latest | ||
- name: Extract metadata (tags, labels) for Docker | ||
id: meta2 | ||
uses: docker/[email protected] | ||
- name: Log in to GitHub Container Registry | ||
uses: docker/[email protected] | ||
with: | ||
images: registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-chat | ||
tags: | | ||
type=ref,event=tag | ||
type=schedule | ||
type=ref,event=branch | ||
type=ref,event=pr | ||
type=semver,pattern={{version}} | ||
type=semver,pattern=v{{version}} | ||
type=semver,pattern={{major}}.{{minor}} | ||
type=semver,pattern={{major}} | ||
type=sha | ||
registry: ghcr.io | ||
username: ${{ github.repository_owner }} | ||
password: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Log in to AliYun Docker Hub | ||
uses: docker/login-action@v2 | ||
- name: Log in to Aliyun Container Registry | ||
uses: docker/login-action@v3.3.0 | ||
with: | ||
registry: registry.cn-hangzhou.aliyuncs.com | ||
username: ${{ secrets.ALIREGISTRY_USERNAME }} | ||
password: ${{ secrets.ALIREGISTRY_TOKEN }} | ||
|
||
- name: Build and push Docker image | ||
uses: docker/build-push-action@v4 | ||
with: | ||
context: . | ||
# linux/ppc64le,linux/s390x | ||
platforms: linux/amd64,linux/arm64 | ||
push: ${{ github.event_name != 'pull_request' }} | ||
tags: ${{ steps.meta2.outputs.tags }} | ||
labels: ${{ steps.meta2.outputs.labels }} | ||
|
||
build-ghcr: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
- name: Set up QEMU | ||
uses: docker/setup-qemu-action@v2 | ||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v2 | ||
# ghcr.io/openimsdk/openim-chat:latest | ||
- name: Extract metadata (tags, labels) for Docker | ||
id: meta3 | ||
uses: docker/metadata-action@v4.6.0 | ||
id: meta | ||
uses: docker/metadata-action@v5.6.0 | ||
with: | ||
images: ghcr.io/openimsdk/openim-chat | ||
images: | | ||
openim/openim-chat | ||
ghcr.io/openimsdk/openim-chat | ||
registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-chat | ||
tags: | | ||
type=ref,event=tag | ||
type=schedule | ||
type=ref,event=branch | ||
type=ref,event=pr | ||
type=semver,pattern={{version}} | ||
# type=ref,event=pr | ||
# type=semver,pattern={{version}} | ||
type=semver,pattern=v{{version}} | ||
type=semver,pattern={{major}}.{{minor}} | ||
type=semver,pattern={{major}} | ||
type=semver,pattern=release-{{raw}} | ||
type=sha | ||
- name: Log in to GitHub Container Registry | ||
uses: docker/login-action@v2 | ||
with: | ||
registry: ghcr.io | ||
username: ${{ github.repository_owner }} | ||
password: ${{ secrets.GITHUB_TOKEN }} | ||
type=raw,value=${{ github.event.inputs.tag }} | ||
- name: Build and push Docker image | ||
uses: docker/build-push-action@v4 | ||
with: | ||
context: . | ||
# linux/ppc64le,linux/s390x | ||
platforms: linux/amd64,linux/arm64 | ||
push: ${{ github.event_name != 'pull_request' }} | ||
tags: ${{ steps.meta3.outputs.tags }} | ||
labels: ${{ steps.meta3.outputs.labels }} | ||
tags: ${{ steps.meta.outputs.tags }} | ||
labels: ${{ steps.meta.outputs.labels }} | ||
|
||
- name: Verify multi-platform support | ||
run: | | ||
images=("openim/openim-chat" "ghcr.io/openimsdk/openim-chat" "registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-chat") | ||
for image in "${images[@]}"; do | ||
for tag in $(echo "${{ steps.meta.outputs.tags }}" | tr ',' '\n'); do | ||
manifest=$(docker manifest inspect "$image:$tag" || echo "error") | ||
if [[ "$manifest" == "error" ]]; then | ||
echo "Manifest not found for $image:$tag" | ||
exit 1 | ||
fi | ||
amd64_found=$(echo "$manifest" | jq '.manifests[] | select(.platform.architecture == "amd64")') | ||
arm64_found=$(echo "$manifest" | jq '.manifests[] | select(.platform.architecture == "arm64")') | ||
if [[ -z "$amd64_found" ]]; then | ||
echo "Multi-platform support check failed for $image:$tag - missing amd64" | ||
exit 1 | ||
fi | ||
if [[ -z "$arm64_found" ]]; then | ||
echo "Multi-platform support check failed for $image:$tag - missing arm64" | ||
exit 1 | ||
fi | ||
done | ||
done |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
name: Release Changelog | ||
|
||
on: | ||
release: | ||
types: [released] | ||
|
||
permissions: | ||
contents: write | ||
pull-requests: write | ||
|
||
jobs: | ||
update-changelog: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v4 | ||
|
||
- name: Run Go Changelog Generator | ||
run: | | ||
# Run the Go changelog generator, passing the release tag if available | ||
if [ "${{ github.event.release.tag_name }}" = "latest" ]; then | ||
go run tools/changelog/changelog.go > "${{ github.event.release.tag_name }}-changelog.md" | ||
else | ||
go run tools/changelog/changelog.go "${{ github.event.release.tag_name }}" > "${{ github.event.release.tag_name }}-changelog.md" | ||
fi | ||
- name: Handle changelog files | ||
run: | | ||
# Ensure that the CHANGELOG directory exists | ||
mkdir -p CHANGELOG | ||
# Extract Major.Minor version by removing the 'v' prefix from the tag name | ||
TAG_NAME=${{ github.event.release.tag_name }} | ||
CHANGELOG_VERSION_NUMBER=$(echo "$TAG_NAME" | sed 's/^v//' | grep -oP '^\d+\.\d+') | ||
# Define the new changelog file path | ||
CHANGELOG_FILENAME="CHANGELOG-$CHANGELOG_VERSION_NUMBER.md" | ||
CHANGELOG_PATH="CHANGELOG/$CHANGELOG_FILENAME" | ||
# Check if the changelog file for the current release already exists | ||
if [ -f "$CHANGELOG_PATH" ]; then | ||
# If the file exists, append the new changelog to the existing one | ||
cat "$CHANGELOG_PATH" >> "${TAG_NAME}-changelog.md" | ||
# Overwrite the existing changelog with the updated content | ||
mv "${TAG_NAME}-changelog.md" "$CHANGELOG_PATH" | ||
else | ||
# If the changelog file doesn't exist, rename the temp changelog file to the new changelog file | ||
mv "${TAG_NAME}-changelog.md" "$CHANGELOG_PATH" | ||
# Ensure that README.md exists | ||
if [ ! -f "CHANGELOG/README.md" ]; then | ||
echo -e "# CHANGELOGs\n\n" > CHANGELOG/README.md | ||
fi | ||
# Add the new changelog entry at the top of the README.md | ||
if ! grep -q "\[$CHANGELOG_FILENAME\]" CHANGELOG/README.md; then | ||
sed -i "3i- [$CHANGELOG_FILENAME](./$CHANGELOG_FILENAME)" CHANGELOG/README.md | ||
# Remove the extra newline character added by sed | ||
# sed -i '4d' CHANGELOG/README.md | ||
fi | ||
fi | ||
- name: Clean up | ||
run: | | ||
# Remove any temporary files that were created during the process | ||
rm -f "${{ github.event.release.tag_name }}-changelog.md" | ||
- name: Create Pull Request | ||
uses: peter-evans/[email protected] | ||
with: | ||
token: ${{ secrets.GITHUB_TOKEN }} | ||
commit-message: "Update CHANGELOG for release ${{ github.event.release.tag_name }}" | ||
title: "Update CHANGELOG for release ${{ github.event.release.tag_name }}" | ||
body: "This PR updates the CHANGELOG files for release ${{ github.event.release.tag_name }}" | ||
branch: changelog-${{ github.event.release.tag_name }} | ||
base: main | ||
delete-branch: true | ||
labels: changelog |
Oops, something went wrong.