diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7fbccf02..6fdad647 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -94,8 +94,4 @@ jobs: - name: Deploy snapshot run: scripts/deploy-snapshot.sh env: - ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }} - SSH_USERNAME: ${{ secrets.SSH_USERNAME }} - SERVER_ADDRESS: ${{ secrets.SERVER_ADDRESS }} - SERVER_DESTINATION: ${{ secrets.SERVER_DESTINATION }} - SSH_PORT: ${{ secrets.SSH_PORT }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/scripts/deploy-snapshot.sh b/scripts/deploy-snapshot.sh index 10f55e20..28c8e0da 100755 --- a/scripts/deploy-snapshot.sh +++ b/scripts/deploy-snapshot.sh @@ -1,13 +1,51 @@ #!/usr/bin/env bash -set -euo pipefail - -export SSHDIR="$HOME/.ssh" -export SERVER_DEPLOY_STRING="$SSH_USERNAME@$SERVER_ADDRESS:$SERVER_DESTINATION" -mkdir -p "$SSHDIR" -echo "$ACTIONS_DEPLOY_KEY" > "$SSHDIR/key" -chmod 600 "$SSHDIR/key" -mkdir -p "$GITHUB_WORKSPACE/Claw" -cp -v ./android/build/outputs/apk/release/android-release.apk "$GITHUB_WORKSPACE/Claw/Claw.apk" -cd "$GITHUB_WORKSPACE/Claw" -rsync -ahvcr --omit-dir-times --progress --delete --no-o --no-g -e "ssh -i $SSHDIR/key -o StrictHostKeyChecking=no -p $SSH_PORT" . "$SERVER_DEPLOY_STRING" +set -ex + +LATEST_TAG="latest" +CURRENT_REV="$(git rev-parse --short HEAD)" +ASSET_DIRECTORY="${GITHUB_WORKSPACE:?}/android/outputs" + +function overwrite_local_tag() { + git tag -f "${LATEST_TAG}" +} + +function overwrite_remote_tag() { + git push -f origin "${LATEST_TAG}" +} + +function has_release() { + gh release view "${LATEST_TAG}" &>/dev/null + echo "$?" +} + +function delete_release() { + gh release delete --yes "${LATEST_TAG}" +} + +function create_rev_file() { + pushd "${ASSET_DIRECTORY}" || return + echo "${CURRENT_REV}" | tee rev-hash.txt + popd || return +} + +function create_release() { + local CHANGELOG_FILE + CHANGELOG_FILE="$(mktemp)" + echo "Latest release for Claw from revision ${CURRENT_REV}" | tee "${CHANGELOG_FILE}" + pushd "${ASSET_DIRECTORY}" || return + gh release create --prerelease --title "Latest snapshot build" --notes-file "${CHANGELOG_FILE}" "${LATEST_TAG}" ./* + popd || return +} + +overwrite_local_tag + +if [[ "$(has_release)" -eq 0 ]]; then + delete_release +fi + +create_rev_file + +overwrite_remote_tag + +create_release