Merge pull request #150 from linyimin0812/feat/20240428_async_bean_in… #25
Workflow file for this run
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
name: Release | |
on: | |
push: | |
tags: [ v\d+\.\d+\.\d+ ] | |
jobs: | |
create-release: | |
permissions: | |
contents: write | |
runs-on: ubuntu-20.04 | |
outputs: | |
release_id: ${{ steps.create-release.outputs.id }} | |
release_upload_url: ${{ steps.create-release.outputs.upload_url }} | |
release_body: "${{ steps.tag.outputs.message }}" | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Get version | |
id: get_version | |
uses: battila7/get-version-action@v2 | |
- name: Get tag message | |
id: tag | |
run: | | |
git fetch --depth=1 origin +refs/tags/*:refs/tags/* | |
echo "message<<EOF" >> $GITHUB_OUTPUT | |
echo "$(git tag -l --format='%(contents)' ${{ steps.get_version.outputs.version }})" >> $GITHUB_OUTPUT | |
echo "EOF" >> $GITHUB_OUTPUT | |
- name: Create Release | |
id: create-release | |
uses: ncipollo/release-action@v1 | |
with: | |
draft: true | |
name: release ${{ steps.get_version.outputs.version }} | |
tag: ${{ steps.get_version.outputs.version }} | |
body: "${{ steps.tag.outputs.message }}" | |
build: | |
needs: create-release | |
permissions: | |
contents: write | |
packages: write | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up JDK 11 | |
uses: actions/setup-java@v3 | |
with: | |
java-version: 11 | |
distribution: 'zulu' | |
- name: Get version | |
id: get_version | |
uses: battila7/get-version-action@v2 | |
- name: Import GPG secret key | |
uses: crazy-max/ghaction-import-gpg@v5 | |
with: | |
gpg_private_key: ${{ secrets.GPG_SECRET_KEY }} | |
passphrase: ${{ secrets.GPG_PASSPHRASE }} | |
- name: Cache Maven packages | |
uses: actions/cache@v3 | |
with: | |
path: ~/.m2 | |
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} | |
restore-keys: ${{ runner.os }}-m2 | |
- name: Build spring-startup-analyzer | |
run: make all | |
- name: Package plugin and create userscript | |
run: | | |
mkdir -p release | |
mv $HOME/spring-startup-analyzer/spring-startup-analyzer.tar.gz release/spring-startup-analyzer.tar.gz | |
mkdir -p build | |
cp -r $HOME/spring-startup-analyzer/* ./build/ | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Login to Docker Hub | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Docker Build and push with latest tag | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
push: true | |
tags: ${{ secrets.DOCKERHUB_USERNAME }}/spring-startup-analyzer:latest | |
- name: Docker Build and push with actual tag | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
push: true | |
platform: linux/amd64,linux/arm64 | |
tags: ${{ secrets.DOCKERHUB_USERNAME }}/spring-startup-analyzer:${{ steps.get_version.outputs.version }} | |
- name: Upload extensions to release | |
id: upload-release-asset | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ needs.create-release.outputs.release_upload_url }} | |
asset_path: release/spring-startup-analyzer.tar.gz | |
asset_name: spring-startup-analyzer.tar.gz | |
asset_content_type: application/tar+gzip | |
build-graalvm-native-image: | |
needs: create-release | |
name: build on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: ubuntu-20.04 | |
name: 'linux' | |
binaryExt: '' | |
- os: macos-12 | |
name: 'macos' | |
binaryExt: '' | |
- os: windows-latest | |
name: 'windows' | |
binaryExt: '.exe' | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: graalvm/setup-graalvm@v1 | |
with: | |
java-version: '17' | |
distribution: 'graalvm' | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
native-image-job-reports: 'true' | |
- name: Build native image | |
run: | | |
cd ./spring-startup-cli | |
mvn clean package | |
java -agentlib:native-image-agent=config-output-dir=./target/native/agent-output/main/ -jar ./target/spring-startup-cli.jar exec:exec@java-agent | |
mvn -DskipTests=true -Pnative -Dagent package | |
cp ./target/spring-startup-cli${{ matrix.binaryExt }} ./target/spring-startup-cli-${{ matrix.name }}${{ matrix.binaryExt }} | |
- name: Upload native image binary | |
id: upload-release-asset | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ needs.create-release.outputs.release_upload_url }} | |
asset_path: spring-startup-cli/target/spring-startup-cli-${{ matrix.name }}${{ matrix.binaryExt }} | |
asset_name: spring-startup-cli-${{ matrix.name }}${{ matrix.binaryExt }} | |
asset_content_type: application/octet-stream | |
publish-release: | |
permissions: | |
contents: write | |
runs-on: ubuntu-20.04 | |
needs: [create-release, build, build-graalvm-native-image] | |
steps: | |
- name: publish release | |
id: publish-release | |
uses: actions/github-script@v6 | |
env: | |
release_id: ${{ needs.create-release.outputs.release_id }} | |
with: | |
script: | | |
github.rest.repos.updateRelease({ | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
release_id: process.env.release_id, | |
draft: false, | |
prerelease: false | |
}) |