Skip to content

Merge pull request #112 from linyimin0812/fix/20231006_check_before_r… #21

Merge pull request #112 from linyimin0812/fix/20231006_check_before_r…

Merge pull request #112 from linyimin0812/fix/20231006_check_before_r… #21

Workflow file for this run

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-2019
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
mvn -Pnative -Dagent 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
})