name: Release and Deploy on: push: branches: - '**' workflow_dispatch: permissions: contents: write pages: write id-token: write jobs: release: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: Install dependencies run: sudo apt-get update && sudo apt-get install -y zip jq - name: Create dist zip run: | mkdir -p release zip -r release/dist.zip dist - name: Determine latest release tag id: get_latest run: | LATEST=$(curl -s -H "Authorization: token ${{ secrets.PAT_TOKEN }}" \ https://api.github.com/repos/${GITHUB_REPOSITORY}/releases/latest \ | jq -r '.tag_name // empty') echo "LATEST_TAG=$LATEST" >> $GITHUB_ENV if [ -z "$LATEST" ]; then echo "RELEASE_TAG=v0.1.0" >> $GITHUB_ENV else echo "RELEASE_TAG=$LATEST" >> $GITHUB_ENV fi - name: Create or update release id: release run: | RELEASE_NAME=${{ env.RELEASE_TAG }} # Check if release exists RELEASE_ID=$(curl -s -H "Authorization: token ${{ secrets.PAT_TOKEN }}" \ https://api.github.com/repos/${GITHUB_REPOSITORY}/releases/tags/${{ env.RELEASE_TAG }} \ | jq -r '.id // empty') if [ -z "$RELEASE_ID" ]; then echo "Creating release $RELEASE_NAME" RELEASE_ID=$(curl -s -X POST -H "Authorization: token ${{ secrets.PAT_TOKEN }}" \ -H "Content-Type: application/json" \ -d "{\"tag_name\":\"${{ env.RELEASE_TAG }}\",\"name\":\"$RELEASE_NAME\",\"draft\":false,\"prerelease\":false}" \ https://api.github.com/repos/${GITHUB_REPOSITORY}/releases | jq -r '.id') else echo "Release exists, using ID $RELEASE_ID" fi echo "RELEASE_ID=$RELEASE_ID" >> $GITHUB_ENV - name: Upload hoc.kip run: | ASSET="dist/atmosphere/hoc.kip" FILENAME=$(basename $ASSET) curl -s -X POST \ -H "Authorization: token ${{ secrets.PAT_TOKEN }}" \ -H "Content-Type: application/octet-stream" \ --data-binary @"$ASSET" \ "https://uploads.github.com/repos/${GITHUB_REPOSITORY}/releases/${{ env.RELEASE_ID }}/assets?name=$FILENAME" - name: Upload dist.zip run: | ASSET="release/dist.zip" FILENAME=$(basename $ASSET) curl -s -X POST \ -H "Authorization: token ${{ secrets.PAT_TOKEN }}" \ -H "Content-Type: application/zip" \ --data-binary @"$ASSET" \ "https://uploads.github.com/repos/${GITHUB_REPOSITORY}/releases/${{ env.RELEASE_ID }}/assets?name=$FILENAME"