Added support for portal SSO with JWT authentication and local admin login. Updated environment configuration to include AUTH_REQUIRED, AUTH_JWT_SECRET, AUTH_ISSUER, and AUTH_PORTAL_URL. Enhanced the auth plugin to handle JWT verification based on the new configuration. Introduced new routes for authentication and updated the API client to manage token handling and redirects. Improved user experience by integrating authentication checks across various routes and components.
150 lines
5.5 KiB
YAML
150 lines
5.5 KiB
YAML
name: Build and Push CFDM Docker Image
|
|
|
|
on:
|
|
push:
|
|
branches: [main, develop, 'feature/**', 'release/**', 'hotfix/**']
|
|
tags: ['v*']
|
|
paths: ['**']
|
|
pull_request:
|
|
branches: [main, develop]
|
|
paths: ['**']
|
|
|
|
jobs:
|
|
build-and-push:
|
|
if: startsWith(gitea.ref, 'refs/tags/v') || (gitea.ref_name == 'main' && gitea.event_name == 'push')
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to Gitea Registry
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: git.shts.su
|
|
username: ${{ gitea.actor }}
|
|
password: ${{ secrets.ACTIONS_PAT }}
|
|
|
|
- name: Create version file
|
|
run: |
|
|
VERSION=$(cat VERSION)
|
|
BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')
|
|
BRANCH="${{ gitea.ref_name }}"
|
|
echo "APP_VERSION=${VERSION}" > ./version.txt
|
|
echo "BUILD_DATE=${BUILD_DATE}" >> ./version.txt
|
|
echo "GIT_BRANCH=${BRANCH}" >> ./version.txt
|
|
echo "GIT_COMMIT=${{ gitea.sha }}" >> ./version.txt
|
|
echo "GIT_COMMIT_SHORT=$(echo ${{ gitea.sha }} | cut -c1-7)" >> ./version.txt
|
|
echo "BUILD_TIMESTAMP=$(date -u +%s)" >> ./version.txt
|
|
|
|
- name: Docker meta
|
|
id: meta
|
|
uses: docker/metadata-action@v5
|
|
with:
|
|
images: git.shts.su/${{ gitea.repository }}
|
|
tags: |
|
|
type=semver,pattern={{version}}
|
|
type=raw,value=latest,enable=${{ gitea.ref_name == 'main' }}
|
|
type=sha,prefix={{date 'YYYYMMDD'}}-,enable=${{ gitea.ref_name == 'main' }}
|
|
|
|
- name: Build and push Docker image
|
|
uses: docker/build-push-action@v5
|
|
with:
|
|
context: .
|
|
file: ./Dockerfile
|
|
push: true
|
|
tags: ${{ steps.meta.outputs.tags }}
|
|
labels: ${{ steps.meta.outputs.labels }}
|
|
build-args: |
|
|
NODE_VERSION=22.23.0-bookworm-slim
|
|
cache-from: type=registry,ref=git.shts.su/${{ gitea.repository }}:buildcache
|
|
cache-to: type=registry,ref=git.shts.su/${{ gitea.repository }}:buildcache,mode=max
|
|
provenance: true
|
|
|
|
create-release:
|
|
needs: build-and-push
|
|
if: startsWith(gitea.ref, 'refs/tags/v')
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Generate changelog
|
|
id: changelog
|
|
run: |
|
|
LAST_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
|
|
if [[ -n "$LAST_TAG" ]]; then
|
|
CHANGELOG=$(git log --pretty=format:"- **%h** %s (%an, %ar)" --no-merges ${LAST_TAG}..HEAD 2>/dev/null || echo "")
|
|
else
|
|
CHANGELOG=$(git log --pretty=format:"- **%h** %s (%an, %ar)" --no-merges -10 2>/dev/null || echo "")
|
|
fi
|
|
if [[ -z "$CHANGELOG" ]]; then CHANGELOG="- No changes detected"; fi
|
|
echo "CHANGELOG<<EOF" >> $GITEA_OUTPUT
|
|
echo "$CHANGELOG" >> $GITEA_OUTPUT
|
|
echo "EOF" >> $GITEA_OUTPUT
|
|
|
|
- name: Create Release
|
|
run: |
|
|
VERSION="${{ gitea.ref_name }}"
|
|
RELEASE_DATA=$(cat <<EOF
|
|
{
|
|
"tag_name": "${VERSION}",
|
|
"target_commitish": "${{ gitea.sha }}",
|
|
"name": "Cloudflare Domain Manager ${VERSION}",
|
|
"body": "## Cloudflare Domain Manager ${VERSION}\n\n### Docker\n\n\`\`\`bash\ndocker pull git.shts.su/${{ gitea.repository }}:${VERSION}\ndocker run -d -p 8080:8080 -v ./data:/data --name cfdm git.shts.su/${{ gitea.repository }}:${VERSION}\n\`\`\`\n\n### Changelog\n\n${{ steps.changelog.outputs.CHANGELOG }}",
|
|
"draft": false,
|
|
"prerelease": false
|
|
}
|
|
EOF
|
|
)
|
|
HTTP_CODE=$(curl -s -w "%{http_code}" -o /tmp/release.json -X POST \
|
|
-H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \
|
|
-H "Content-Type: application/json" \
|
|
-d "$RELEASE_DATA" \
|
|
"${{ gitea.server_url }}/api/v1/repos/${{ gitea.repository }}/releases")
|
|
if [ "$HTTP_CODE" -eq 201 ] || [ "$HTTP_CODE" -eq 409 ]; then
|
|
echo "Release OK (HTTP $HTTP_CODE)"
|
|
else
|
|
cat /tmp/release.json
|
|
exit 1
|
|
fi
|
|
|
|
update-wiki:
|
|
if: gitea.ref_name == 'main' && gitea.event_name == 'push'
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout main repository
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 2
|
|
|
|
- name: Check for changes in documentation
|
|
id: check_changes
|
|
run: |
|
|
if git diff HEAD~1 HEAD --quiet -- docs/Home.md; then
|
|
echo "changed=false" >> $GITEA_OUTPUT
|
|
else
|
|
echo "changed=true" >> $GITEA_OUTPUT
|
|
fi
|
|
|
|
- name: Clone Wiki repository
|
|
if: steps.check_changes.outputs.changed == 'true'
|
|
run: |
|
|
WIKI_URL=$(echo "${{ gitea.server_url }}/${{ gitea.repository }}.wiki.git" | sed -e "s|://|://gitea-actions:${{ secrets.GITEA_TOKEN }}@|")
|
|
git clone "${WIKI_URL}" cfdm.wiki
|
|
|
|
- name: Update and push Wiki content
|
|
if: steps.check_changes.outputs.changed == 'true'
|
|
run: |
|
|
cp docs/Home.md cfdm.wiki/Home.md
|
|
cd cfdm.wiki
|
|
git config user.name "Gitea Actions"
|
|
git config user.email "actions@gitea"
|
|
git add Home.md
|
|
git diff --staged --quiet || git commit -m "docs: Update Wiki from main repository"
|
|
git push
|