mirror of
https://github.com/SAP/jenkins-library.git
synced 2025-02-05 13:25:19 +02:00
130 lines
5.2 KiB
YAML
130 lines
5.2 KiB
YAML
name: Create new Release
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
repository_dispatch:
|
|
types: perform-release
|
|
schedule:
|
|
- cron: '0 9 * * 1'
|
|
|
|
jobs:
|
|
build:
|
|
permissions: write-all
|
|
name: Publish
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: styfle/cancel-workflow-action@0.11.0
|
|
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Prepare assets and increment version
|
|
run: |
|
|
curl --insecure --silent --location --write-out '%{http_code}' --output ./piper_master https://github.com/SAP/jenkins-library/releases/latest/download/piper_master
|
|
curl --insecure --silent --location --write-out '%{http_code}' --output ./piper_master-darwin.x86_64 https://github.com/SAP/jenkins-library/releases/latest/download/piper_master-darwin.x86_64
|
|
curl --insecure --silent --location --write-out '%{http_code}' --output ./piper_master-darwin.arm64 https://github.com/SAP/jenkins-library/releases/latest/download/piper_master-darwin.arm64
|
|
cp ./piper_master ./piper
|
|
cp ./piper_master-darwin.x86_64 ./piper-darwin.x86_64
|
|
cp ./piper_master-darwin.arm64 ./piper-darwin.arm64
|
|
npm install semver --quiet
|
|
echo "PIPER_version=v$(node_modules/.bin/semver -i minor $(curl --silent "https://api.github.com/repos/$GITHUB_REPOSITORY/releases/latest" | jq -r .tag_name))" >> $GITHUB_ENV
|
|
|
|
- uses: SAP/project-piper-action@master
|
|
name: Publish prerelease
|
|
with:
|
|
piper-version: master
|
|
command: githubPublishRelease
|
|
flags: >
|
|
--preRelease true
|
|
--token ${{ secrets.GITHUB_TOKEN }}
|
|
--assetPathList ./piper --assetPathList ./piper_master
|
|
--assetPathList ./piper-darwin.x86_64 --assetPathList ./piper_master-darwin.x86_64
|
|
--assetPathList ./piper-darwin.arm64 --assetPathList ./piper_master-darwin.arm64
|
|
|
|
- name: Download Piper binary from recently published prerelease
|
|
uses: robinraju/release-downloader@v1
|
|
with:
|
|
tag: ${{ env.PIPER_version }}
|
|
fileName: 'piper'
|
|
|
|
- name: Test binary (check output for 'commit:' substring)
|
|
run: |
|
|
chmod +x piper
|
|
if ./piper version | grep -Fq "commit:"; then
|
|
echo "piper binary test is successful"
|
|
else
|
|
echo "piper binary test failed"
|
|
./piper version
|
|
exit 1
|
|
fi
|
|
|
|
- name: Get recently published prerelease id
|
|
id: release_id
|
|
run: >
|
|
curl -L -s -o resp.json
|
|
-H "Accept: application/vnd.github.raw+json"
|
|
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}"
|
|
${{ github.api_url }}/repos/${{ github.repository }}/releases
|
|
|
|
echo "release_id=$(jq 'first(.[] | select(.tag_name == "${{ env.PIPER_version }}")).id' resp.json)" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Convert prereleae to Release
|
|
run: >
|
|
curl --fail-with-body -L -X PATCH
|
|
-H "Accept: application/vnd.github+json"
|
|
-H "Authorization: Bearer ${{ github.token }}"
|
|
${{ github.api_url }}/repos/${{ github.repository }}/releases/${{ steps.release_id.outputs.release_id }}
|
|
-d '{"prerelease": false, "make_latest": true}'
|
|
|
|
# Workaround for https://github.com/SAP/jenkins-library/issues/1723, build only works with jdk8 currently
|
|
- uses: actions/setup-java@v4
|
|
with:
|
|
java-version: 8
|
|
distribution: zulu
|
|
- name: Build and publish jar for consumption in unit tests
|
|
run: mvn package
|
|
- uses: SAP/project-piper-action@master
|
|
name: 'publish Piper jar'
|
|
with:
|
|
piper-version: master
|
|
command: githubPublishRelease
|
|
flags: --token ${{ secrets.GITHUB_TOKEN }} --version latest --assetPath ./target/jenkins-library.jar
|
|
|
|
post:
|
|
name: Post Action
|
|
runs-on: ubuntu-latest
|
|
needs: [build]
|
|
if: always()
|
|
steps:
|
|
# Check status of the worklfow
|
|
- uses: martialonline/workflow-status@v4
|
|
id: check
|
|
|
|
# This step expects base64 encoded JSON object as below:
|
|
# {
|
|
# "smtp_url": "smtp+starttls://user:password@server:port",
|
|
# "smtp_mail_from": "from@mail.example",
|
|
# "smtp_mail_rcpt": "to@mail.example",
|
|
# }
|
|
- name: Decode SMTP secrets and set them in GITHUB_ENV
|
|
id: smtp_secrets
|
|
if: steps.check.outputs.status == 'failure' || steps.check.outputs.status == 'cancelled'
|
|
run: >
|
|
echo "${{ secrets.SMTP_CONFIG }}" |
|
|
base64 --decode |
|
|
jq -r 'to_entries[] | "\(.key)=\(.value)"' |
|
|
while read line; do
|
|
echo "$line" >> $GITHUB_ENV; echo "::add-mask::${line#*=}";
|
|
done
|
|
- name: Notify Piper team on failure or cancelled
|
|
if: steps.smtp_secrets.conclusion == 'success'
|
|
uses: dawidd6/action-send-mail@v3
|
|
with:
|
|
connection_url: ${{ env.smtp_url }}
|
|
subject: Workflow failure in ${{ github.repository }}
|
|
priority: high
|
|
to: ${{ env.smtp_mail_rcpt }}
|
|
from: Piper on GitHub <${{ env.smtp_mail_from }}>
|
|
body: |
|
|
Workflow '${{ github.workflow }}' has a job with status '${{ steps.check.outputs.status }}'.
|
|
Workflow link: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
|