Skip to content

Commit

Permalink
[UPDATE] 更新持续集成
Browse files Browse the repository at this point in the history
Signed-off-by: Alan Yeh <[email protected]>
  • Loading branch information
alan-yeh committed Oct 12, 2024
1 parent 7a28a05 commit e9d1af2
Show file tree
Hide file tree
Showing 3 changed files with 279 additions and 59 deletions.
135 changes: 135 additions & 0 deletions .github/.m2/settings.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
<?xml version="1.0" encoding="UTF-8"?>

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers>
<server>
<id>centralx</id>
<username>${env.MAVEN_USERNAME}</username>
<password>${env.MAVEN_PASSWORD}</password>
</server>
<server>
<id>sonatype</id>
<username>${env.MAVEN_USERNAME}</username>
<password>${env.MAVEN_PASSWORD}</password>
</server>
<server>
<id>github</id>
<username>${env.MAVEN_USERNAME}</username>
<password>${env.MAVEN_PASSWORD}</password>
</server>
<server>
<id>gpg.passphrase</id>
<passphrase>${env.GPG_PASSPHRASE}</passphrase>
</server>
</servers>

<profiles>
<profile>
<id>centralx</id>
<repositories>
<repository>
<id>centralx</id>
<name>CentralX Repository</name>
<url>https://mirror.central-x.com/repository/maven-public/</url>
<snapshots>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>centralx</id>
<name>CentralX Repository</name>
<url>https://mirror.central-x.com/repository/maven-public/</url>
<snapshots>
<updatePolicy>always</updatePolicy>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>

<profile>
<id>sonatype</id>
<repositories>
<repository>
<id>sonatype</id>
<name>Sonatype Repository</name>
<url>https://s01.oss.sonatype.org/content/groups/public/</url>
<snapshots>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
<repository>
<id>central</id>
<name>Maven Central Repository</name>
<url>https://repo1.maven.org/maven2/</url>
<snapshots>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>sonatype</id>
<name>Sonatype Repository</name>
<url>https://s01.oss.sonatype.org/content/groups/public/</url>
<snapshots>
<updatePolicy>always</updatePolicy>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>central</id>
<name>Maven Central Repository</name>
<url>https://repo1.maven.org/maven2/</url>
<snapshots>
<updatePolicy>always</updatePolicy>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>

<profile>
<id>github</id>
<repositories>
<repository>
<id>github</id>
<name>GitHub Repository</name>
<url>https://maven.pkg.github.com/central-x/*/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
<repository>
<id>central</id>
<name>Maven Central Repository</name>
<url>https://repo1.maven.org/maven2/</url>
<snapshots>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>github</id>
<name>GitHub Repository</name>
<url>https://maven.pkg.github.com/central-x/*/</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>central</id>
<name>Maven Central Repository</name>
<url>https://repo1.maven.org/maven2/</url>
<snapshots>
<updatePolicy>always</updatePolicy>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
</settings>
101 changes: 42 additions & 59 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,47 +1,31 @@
name: Release
name: Release to Sonatype

on:
push:
branches:
- master
- '*.x'
# 只发布正式版到 Maven Central
tags:
- '*.RELEASE'

jobs:
# 编译类库并发布到 GitHub Packages
release-libraries-to-github-packages:
name: Release Libraries to GitHub Packages
# 构建应用组件并发布到 Maven Central
release-to-sonatype:
name: Release to Sonatype (Maven Central)
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up java
uses: actions/setup-java@v4
- name: Set up nodejs
uses: actions/setup-node@v4
with:
java-version: 17
distribution: zulu
server-id: github
server-username: MAVEN_USERNAME
server-password: MAVEN_PASSWORD
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
gpg-passphrase: GPG_PASSPHRASE
- name: Echo settings.xml
run: cat /home/runner/.m2/settings.xml
- name: Release packages
run: mvn -P github --batch-mode clean deploy
env:
MAVEN_USERNAME: ${{ secrets.GHPKG_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.GHPKG_TOKEN }}
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
# 编译类库并发布到 Maven Central
release-libraries-to-maven-central:
name: Release Libraries to Maven Central
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
node-version: 22
- name: Cache maven packages
uses: actions/cache@v4
with:
fetch-depth: 0
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
- name: Set up java
uses: actions/setup-java@v4
with:
Expand All @@ -52,30 +36,37 @@ jobs:
server-password: MAVEN_PASSWORD
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
gpg-passphrase: GPG_PASSPHRASE
- name: Echo settings.xml
run: cat /home/runner/.m2/settings.xml
- name: Release packages
run: mvn -P sonatype --batch-mode clean deploy
- name: Release packages to Sonatype (Maven Central)
run: |
# 覆盖 maven settings.xml 文件,添加自定义 profiles
# 先 install maven-studio-parent 到 local repository
# 再安装 central-studio-views 下项目的 npm 依赖
# 最后再来发布类库
rm ~/.m2/settings.xml & cp ${{ github.workspace }}/.github/.m2/settings.xml ~/.m2/settings.xml &
mvn -P sonatype --batch-mode clean install -pl :central-studio-parent &
mvn -P sonatype exec:exec@npm-install -pl :central-dashboard-view,:central-identity-view &
mvn -P sonatype --batch-mode clean deploy
env:
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
MAVEN_USERNAME: ${{ secrets.GHPKG_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.GHPKG_TOKEN }}
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
# 构建应用组件并发布 Docker 镜像
release-studio-images:

# 构建应用组件并发布到 DockerHub
release-docker-images:
name: Release Docker Images
runs-on: ubuntu-latest
needs: [release-libraries-to-github-packages, release-libraries-to-maven-central]
needs: [ release-to-sonatype ]
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up java
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
java-version: 17
distribution: zulu
server-id: github
server-id: sonatype
server-username: MAVEN_USERNAME
server-password: MAVEN_PASSWORD
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
Expand All @@ -87,34 +78,26 @@ jobs:
with:
driver-opts: image=moby/buildkit:master
platforms: linux/amd64,linux/arm64
- name: Login to DockerHub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Login to GitHub Packages
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ secrets.GHPKG_USERNAME }}
password: ${{ secrets.GHPKG_TOKEN }}
- name: Build packages
run: mvn -P github clean package
- name: Package
run: |
# 覆盖 maven settings.xml 文件,添加自定义 profiles
# 打包应用组件
rm ~/.m2/settings.xml & cp ${{ github.workspace }}/.github/.m2/settings.xml ~/.m2/settings.xml &
mvn -P sonatype --batch-mode clean package -pl :central-bootstrap
env:
MAVEN_USERNAME: ${{ secrets.GHPKG_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.GHPKG_TOKEN }}
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
- name: Release to DockerHub
- name: Release images to DockerHub
uses: docker/bake-action@v5
with:
push: true
env:
REGISTRY: docker.io
REPOSITORY: centralx
- name: Release to GitHub Packages
uses: docker/bake-action@v5
with:
push: true
env:
REGISTRY: ghcr.io
REPOSITORY: central-x
REPOSITORY: centralx
102 changes: 102 additions & 0 deletions .github/workflows/release_github.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
name: Release to Github Packages

on:
push:
branches:
- master
- '*.x'

jobs:
# 构建应用组件并发布到 GitHub Packages
release-to-github-packages:
name: Release to Github Packages
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up nodejs
uses: actions/setup-node@v4
with:
node-version: 22
- name: Cache maven packages
uses: actions/cache@v4
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
- name: Set up java
uses: actions/setup-java@v4
with:
java-version: 17
distribution: zulu
server-id: github
server-username: MAVEN_USERNAME
server-password: MAVEN_PASSWORD
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
gpg-passphrase: GPG_PASSPHRASE
- name: Release packages to GitHub Packages
run: |
# 覆盖 maven settings.xml 文件,添加自定义 profiles
# 先 install maven-studio-parent 到 local repository
# 再安装 central-studio-views 下项目的 npm 依赖
# 最后再来发布类库
rm ~/.m2/settings.xml & cp ${{ github.workspace }}/.github/.m2/settings.xml ~/.m2/settings.xml &
mvn -P github --batch-mode clean install -pl :central-studio-parent &
mvn -P github exec:exec@npm-install -pl :central-dashboard-view,:central-identity-view &
mvn -P github --batch-mode clean deploy
env:
MAVEN_USERNAME: ${{ secrets.GHPKG_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.GHPKG_TOKEN }}
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
# 构建应用组件并发布到 GitHub Packages
release-docker-images:
name: Release Docker Images
runs-on: ubuntu-latest
needs: [release-to-github-packages]
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up java
uses: actions/setup-java@v4
with:
java-version: 17
distribution: zulu
server-id: github
server-username: MAVEN_USERNAME
server-password: MAVEN_PASSWORD
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
gpg-passphrase: GPG_PASSPHRASE
- name: Set up Docker(QEMU)
uses: docker/setup-qemu-action@v3
- name: Set up Docker(Buildx)
uses: docker/setup-buildx-action@v3
with:
driver-opts: image=moby/buildkit:master
platforms: linux/amd64,linux/arm64
- name: Login to GitHub Packages
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ secrets.GHPKG_USERNAME }}
password: ${{ secrets.GHPKG_TOKEN }}
- name: Package
run: |
# 覆盖 maven settings.xml 文件,添加自定义 profiles
# 打包应用组件
rm ~/.m2/settings.xml & cp ${{ github.workspace }}/.github/.m2/settings.xml ~/.m2/settings.xml &
mvn -P github --batch-mode clean package -pl :central-bootstrap
env:
MAVEN_USERNAME: ${{ secrets.GHPKG_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.GHPKG_TOKEN }}
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
- name: Release images to GitHub Packages
uses: docker/bake-action@v5
with:
push: true
env:
REGISTRY: ghcr.io
REPOSITORY: central-x

0 comments on commit e9d1af2

Please sign in to comment.