mirror of
https://github.com/Websoft9/websoft9.git
synced 2024-09-29 08:11:14 +00:00
176 lines
5.8 KiB
YAML
176 lines
5.8 KiB
YAML
name: Release to Github and Artifact
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
branches:
|
|
- main
|
|
paths:
|
|
- "version.json"
|
|
|
|
jobs:
|
|
upload_artifact:
|
|
name: upload_artifact
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
name: Check out code
|
|
|
|
- name: Version convert
|
|
id: convert_version
|
|
run: |
|
|
version=$(jq -r '.version' version.json)
|
|
version_core=${version%%-*}
|
|
echo "VERSION=$version" >> $GITHUB_OUTPUT
|
|
echo "VERSION_CORE=$version_core" >> $GITHUB_OUTPUT
|
|
if [[ $version == *-* ]]; then
|
|
echo "rc release version"
|
|
echo "CHANNEL=dev" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "release version"
|
|
echo "CHANNEL=release" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
- name: Update CHANGELOG.md
|
|
id: update_data
|
|
run: |
|
|
changelog=$(cat changelog_latest.md)
|
|
echo "CHANGELOG<<EOF" >> $GITHUB_OUTPUT
|
|
echo "$changelog" >> $GITHUB_OUTPUT
|
|
echo "EOF" >> $GITHUB_OUTPUT
|
|
current_date=$(date +%Y-%m-%d)
|
|
printf "## ${{ steps.convert_version.outputs.VERSION }} release on $current_date\n$changelog\n$(cat CHANGELOG.md)" > temp.txt
|
|
mv temp.txt CHANGELOG.md
|
|
|
|
- name: Create Zip Archive
|
|
run: |
|
|
mkdir websoft9 artifacts
|
|
cp -r docker websoft9
|
|
cp -r cockpit websoft9
|
|
cp -r scripts websoft9
|
|
cp -r install websoft9
|
|
cp -r docs websoft9
|
|
cp -r systemd websoft9
|
|
cp *.md websoft9
|
|
cp version.json websoft9
|
|
zip -r websoft9-${{ steps.convert_version.outputs.VERSION_CORE }}.zip websoft9
|
|
cp websoft9-${{ steps.convert_version.outputs.VERSION_CORE }}.zip artifacts
|
|
cp install/install.sh artifacts
|
|
cp version.json artifacts
|
|
cp CHANGELOG.md artifacts
|
|
cp artifacts/websoft9-${{ steps.convert_version.outputs.VERSION_CORE }}.zip artifacts/websoft9-latest.zip
|
|
|
|
- name: Upload To cloudflare r2
|
|
uses: ryand56/r2-upload-action@latest
|
|
with:
|
|
r2-account-id: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
|
r2-access-key-id: ${{ secrets.CLOUDFLARE_SECRET_ID }}
|
|
r2-secret-access-key: ${{ secrets.CLOUDFLARE_SECRET_KEY }}
|
|
r2-bucket: artifact
|
|
source-dir: artifacts
|
|
destination-dir: ./${{ steps.convert_version.outputs.CHANNEL }}/websoft9
|
|
|
|
- name: Create Github Release
|
|
uses: softprops/action-gh-release@v1
|
|
with:
|
|
files: |
|
|
version.json
|
|
CHANGELOG.md
|
|
tag_name: ${{ steps.convert_version.outputs.VERSION }}
|
|
name: ${{ steps.convert_version.outputs.VERSION }}
|
|
body: ${{ steps.update_data.outputs.CHANGELOG }}
|
|
draft: false
|
|
prerelease: false
|
|
|
|
|
|
apidocs:
|
|
needs: upload_artifact
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
name: Check out code
|
|
|
|
- name: Get version
|
|
run: |
|
|
version=$(grep -Po '(?<=LABEL version=").*?(?=")' docker/apphub/Dockerfile)
|
|
echo $version
|
|
real_version=${version%%-*}
|
|
echo "VERSION=$version" >> $GITHUB_ENV
|
|
|
|
- name: Download redoc.standalone.js
|
|
run: wget -O apphub/apidocs/redoc.standalone.js https://cdn.redoc.ly/redoc/latest/bundles/redoc.standalone.js
|
|
|
|
- name: Run Docker container and get openapi.json
|
|
run: |
|
|
docker run -d --name apphub -p 8080:8080 websoft9dev/apphub:${{ env.VERSION }}
|
|
sleep 5
|
|
max_attempts=10
|
|
url="http://localhost:8080/openapi.json"
|
|
for attempt in $(seq 1 $max_attempts); do
|
|
echo "Attempt #$attempt to download $url..."
|
|
if wget -O apphub/apidocs/openapi.json "$url"; then
|
|
echo "Successfully downloaded $url"
|
|
break
|
|
else
|
|
echo "Failed to download $url. Waiting for 5 seconds before retry..."
|
|
sleep 5
|
|
fi
|
|
done
|
|
|
|
- name: Prepare apidocs content
|
|
run: |
|
|
mkdir -p apidocs
|
|
cp -r apphub/apidocs/* apidocs/
|
|
|
|
- name: Compress apidocs content
|
|
run: |
|
|
zip -r apidocs.zip apidocs
|
|
|
|
- name: Deploy apidocs content to Cloudflare Pages Dev Environment
|
|
run: |
|
|
curl -X POST "https://api.cloudflare.com/client/v4/accounts/eb79f13320db531d8cf1f3720966b695/pages/projects/doc-websoft9-com/deployments" \
|
|
-H "Authorization: Bearer ${{ secrets.CLOUDFLARE_API_TOKEN }}" \
|
|
-F "file=@apidocs.zip" \
|
|
-F "branch=dev"
|
|
|
|
# - name: Publish to Cloudflare Pages
|
|
# uses: cloudflare/pages-action@v1
|
|
# with:
|
|
# apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
# accountId: eb79f13320db531d8cf1f3720966b695
|
|
# projectName: doc-websoft9-com
|
|
# directory: apphub/apidocs
|
|
# # Optional: Enable this if you want to have GitHub Deployments triggered
|
|
# gitHubToken: ${{ secrets.GITHUB_TOKEN }}
|
|
# # Optional: Switch what branch you are publishing to.
|
|
# # By default this will be the branch which triggered this workflow
|
|
# branch: dev
|
|
pages:
|
|
name: Build Github Pages
|
|
permissions:
|
|
contents: read
|
|
pages: write
|
|
id-token: write
|
|
environment:
|
|
name: github-pages
|
|
url: ${{ steps.deployment.outputs.page_url }}
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Pages
|
|
uses: actions/configure-pages@v4
|
|
|
|
- name: Upload artifact
|
|
uses: actions/upload-pages-artifact@v2
|
|
with:
|
|
# Upload entire repository
|
|
path: '.'
|
|
|
|
- name: Deploy to GitHub Pages
|
|
id: deployment
|
|
uses: actions/deploy-pages@v3
|