name: Docker Build and Release Upload on: push: branches: - main jobs: build: runs-on: ubuntu-latest env: GITEA_URL: https://10.1.1.1:8086 GITEA_OWNER: derek GITEA_REPO: ${{ gitea.repository }} GITEA_TOKEN: ${{ secrets.PUBLISH_TOKEN }} steps: - name: checkout uses: actions/checkout@v4 - name: build database run: | docker build -t mistox-sql ./database - name: build server run: | docker build --build-arg BASE_URL=https://mistox.com -t mistox-website . - name: create release folder run: | mkdir release - name: export database run: docker save mistox-sql -o release/mistox-sql.tar - name: export server run: docker save mistox-website -o release/mistox-website.tar - name: publish release run: | TAG_NAME="v1.0.${GITHUB_RUN_NUMBER}" RELEASE_TITLE="Release $(date +%d-%m-%Y)" DESCRIPTION="Automated release from CI run $GITHUB_RUN_NUMBER" RELEASE_JSON="{\"tag_name\":\"$(date +%d-%m-%Y)\",\"title\":\"$(date +%d-%m-%Y)\",\"draft\":false,\"prerelease\":false}" echo "Creating release $(date +%d-%m-%Y) on Gitea..." RESPONSE=$(curl -s -X POST \ -H "Authorization: token $GITEA_TOKEN" \ -H "Content-Type: application/json" \ -d "$RELEASE_JSON" \ "$GITEA_URL/api/v1/repos/$GITEA_OWNER/$GITEA_REPO/releases") RELEASE_ID=$(echo "$RESPONSE" | grep -oP '"id":\s*\K[0-9]+') if [ -z "$RELEASE_ID" ]; then echo "Failed to create release. Response:" echo "$RESPONSE" exit 1 fi echo "Release created with ID $RELEASE_ID" for asset in release/mistox-sql.tar release/mistox-website.tar; do FILENAME=$(basename "$asset") echo "Uploading $FILENAME..." UPLOAD_RESPONSE=$(curl -s -X POST \ -H "Authorization: token $GITEA_TOKEN" \ -F "name=$FILENAME" \ -F "attachment=@$asset" \ "$GITEA_URL/api/v1/repos/$GITEA_OWNER/$GITEA_REPO/releases/$RELEASE_ID/assets") if echo "$UPLOAD_RESPONSE" | grep -q '"id":'; then echo "Uploaded $FILENAME successfully." else echo "Failed to upload $FILENAME. Response:" echo "$UPLOAD_RESPONSE" exit 1 fi done