Skip to content

Update ci workflow v16 #23

Update ci workflow v16

Update ci workflow v16 #23

Workflow file for this run

# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
name: Dubbo Release
on:
push:
tags:
- 'v*'
permissions:
contents: write
jobs:
create_release:
name: Create Release
runs-on: ubuntu-latest
outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
steps:
- name: Check if Release Exists
id: check
uses: actions/github-script@v7
with:
result-encoding: string
script: |
const tag = context.ref.replace('refs/tags/', '');
try {
await github.rest.repos.getReleaseByTag({
owner: context.repo.owner,
repo: context.repo.repo,
tag: tag,
});
return "exists";
} catch (e) {
if (e.status === 404) return "not_found";
throw e;
}
- name: Create GitHub Release
id: create_release
if: steps.check.outputs.result == 'not_found'
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref_name }}
release_name: "${{ github.ref_name }}"
body: |
⚠️ This is a pre release version.
Repair compressed files in Windows compatible format.
draft: false
prerelease: true
build_and_upload:
name: Build and Upload Binaries
needs: create_release
runs-on: ubuntu-latest
strategy:
matrix:
goos: [linux, darwin, windows]
goarch: [386, amd64, arm64]
exclude:
- goos: darwin
goarch: 386
- goos: windows
goarch: arm64
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version-file: go.mod
- name: Download dependencies
run: go mod download
- name: Dubboctl Build binary
env:
GOOS: ${{ matrix.goos }}
GOARCH: ${{ matrix.goarch }}
GIT_VERSION: ${{ github.ref_name }}
run: |
mkdir -p build/dubboctl
make build-dubboctl GOOS=${GOOS} GOARCH=${GOARCH} GIT_VERSION=${GIT_VERSION}
cp README.md LICENSE build/dubboctl/
mv bin/dubboctl* build/dubboctl/
ls -ln build/dubboctl/
- name: Dubbo-CP Build binary
env:
GOOS: ${{ matrix.goos }}
GOARCH: ${{ matrix.goarch }}
GIT_VERSION: ${{ github.ref_name }}
run: |
mkdir -p build/dubbo-cp
make build-dubbo-cp GOOS=${GOOS} GOARCH=${GOARCH} GIT_VERSION=${GIT_VERSION}
cp README.md LICENSE build/dubbo-cp/
mv bin/dubbo-cp* build/dubbo-cp/
ls -ln build/dubbo-cp/
- name: Dubboctl Rename windows
if: matrix.goos == 'windows'
run: |
cp build/dubboctl/dubboctl build/dubboctl/dubboctl.exe
- name: Dubbo-CP Rename windows
if: matrix.goos == 'windows'
run: |
cp build/dubbo-cp/dubbo-cp build/dubbo-cp/dubbo-cp.exe
- name: dubboctl Package files
id: package_ctl
run: |
VERSION=${GITHUB_REF#refs/tags/}
FILENAME=dubboctl-${VERSION}-${{ matrix.goos }}-${{ matrix.goarch }}
mkdir -p dubboctl-${VERSION}/bin
cp build/dubboctl/dubboctl dubboctl-${VERSION}/bin
ls -ln dubboctl-${VERSION}/bin
cp build/dubboctl/README.md build/dubboctl/LICENSE dubboctl-${VERSION}
ls -ln dubboctl-${VERSION}
if [ "${{ matrix.goos }}" = "windows" ]; then
zip -j ${FILENAME}.zip dubboctl-${VERSION}/bin
echo "name=${FILENAME}.zip" >> $GITHUB_OUTPUT
else
tar -czvf ${FILENAME}.tar.gz -C dubboctl-${VERSION} dubboctl-${VERSION}/*
echo "name=${FILENAME}.tar.gz" >> $GITHUB_OUTPUT
fi
- name: dubbo-cp Package files
id: package_cp
run: |
VERSION=${GITHUB_REF#refs/tags/}
FILENAME=dubbo-cp-${VERSION}-${{ matrix.goos }}-${{ matrix.goarch }}
mkdir dubbo-cp-${VERSION}
cp build/dubbo-cp/dubbo-cp dubbo-cp-${VERSION}/bin
ls -ln dubbo-cp-${VERSION}/bin
cp build/dubbo-cp/README.md build/dubbo-cp/LICENSE build/dubbo-cp/dubbo-cp.yaml dubbo-cp-${VERSION}
ls -ln dubbo-cp-${VERSION}
if [ "${{ matrix.goos }}" = "windows" ]; then
zip -j ${FILENAME}.zip dubbo-cp-${VERSION}
echo "name=${FILENAME}.zip" >> $GITHUB_OUTPUT
else
tar -czvf ${FILENAME}.tar.gz -C dubbo-cp-${VERSION} dubbo-cp-${VERSION}/*
echo "name=${FILENAME}.tar.gz" >> $GITHUB_OUTPUT
fi
- name: Upload Dubboctl Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create_release.outputs.upload_url }}
asset_path: ${{ steps.package_ctl.outputs.name }}
asset_name: ${{ steps.package_ctl.outputs.name }}
asset_content_type: application/octet-stream
- name: Upload Dubbo-CP Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create_release.outputs.upload_url }}
asset_path: ${{ steps.package_cp.outputs.name }}
asset_name: ${{ steps.package_cp.outputs.name }}
asset_content_type: application/octet-stream