-
-
Notifications
You must be signed in to change notification settings - Fork 63
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add auto upload assets, upload binary to webserver
Co-authored-by: strawberry <[email protected]> Signed-off-by: strawberry <[email protected]>
- Loading branch information
1 parent
b73d558
commit c5aca80
Showing
1 changed file
with
106 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
name: Upload Release Assets | ||
|
||
on: | ||
release: | ||
types: [published, prereleased] | ||
workflow_dispatch: | ||
inputs: | ||
tag: | ||
description: 'Tag to release' | ||
required: true | ||
type: string | ||
action_id: | ||
description: 'Action ID of the CI run' | ||
required: true | ||
type: string | ||
|
||
permissions: | ||
contents: writes | ||
|
||
jobs: | ||
build: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: get latest ci id | ||
id: get_ci_id | ||
env: | ||
GH_TOKEN: ${{ github.token }} | ||
run: | | ||
if [ "${{ github.event_name }}" == "workflow_dispatch" ] | ||
then | ||
id="${{ github.event.inputs.action_id }}" | ||
tag="${{ github.event.inputs.tag }}" | ||
else | ||
# get all runs of the ci workflow | ||
json=$(gh api "repos/${{ github.repository }}/actions/workflows/ci.yml/runs") | ||
# find first run that is github sha and status is completed | ||
id=$(echo "$json" | jq ".workflow_runs[] | select(.head_sha == \"${{ github.sha }}\" and .status == \"completed\") | .id" | head -n 1) | ||
if [ ! "$id" ]; then | ||
echo "No completed runs found" | ||
echo "ci_id=0" >> "$GITHUB_OUTPUT" | ||
exit 0 | ||
fi | ||
tag="${{ github.event.release.tag_name }}" | ||
fi | ||
echo "ci_id=$id" >> "$GITHUB_OUTPUT" | ||
echo "tag=$tag" >> "$GITHUB_OUTPUT" | ||
- name: get latest ci artifacts | ||
if: steps.get_ci_id.outputs.ci_id != 0 | ||
uses: actions/download-artifact@v4 | ||
env: | ||
GH_TOKEN: ${{ github.token }} | ||
with: | ||
merge-multiple: true | ||
run-id: ${{ steps.get_ci_id.outputs.ci_id }} | ||
github-token: ${{ github.token }} | ||
|
||
- run: | | ||
ls | ||
- name: upload release assets | ||
if: steps.get_ci_id.outputs.ci_id != 0 | ||
env: | ||
GH_TOKEN: ${{ github.token }} | ||
TAG: ${{ steps.get_ci_id.outputs.tag }} | ||
run: | | ||
for file in $(find . -type f); do | ||
echo "Uploading $file..." | ||
gh release upload $TAG "$file" --clobber --repo="${{github.repository}}" || echo "Something went wrong, skipping." | ||
done | ||
- name: upload release assets to website | ||
if: steps.get_ci_id.outputs.ci_id != 0 | ||
env: | ||
TAG: ${{ steps.get_ci_id.outputs.tag }} | ||
run: | | ||
mkdir -p -v ~/.ssh | ||
echo "${{ secrets.WEB_UPLOAD_SSH_KNOWN_HOSTS }}" >> ~/.ssh/known_hosts | ||
echo "${{ secrets.WEB_UPLOAD_SSH_PRIVATE_KEY }}" >> ~/.ssh/id_ed25519 | ||
chmod 600 ~/.ssh/id_ed25519 | ||
cat >>~/.ssh/config <<END | ||
Host website | ||
HostName ${{ secrets.WEB_UPLOAD_SSH_HOSTNAME }} | ||
User ${{ secrets.WEB_UPLOAD_SSH_USERNAME }} | ||
IdentityFile ~/.ssh/id_ed25519 | ||
StrictHostKeyChecking yes | ||
AddKeysToAgent no | ||
ForwardX11 no | ||
BatchMode yes | ||
END | ||
echo "Creating tag directory on web server" | ||
ssh -q website "rm -rf /var/www/girlboss.ceo/~strawberry/conduwuit/releases/$TAG/" | ||
ssh -q website "mkdir -v /var/www/girlboss.ceo/~strawberry/conduwuit/releases/$TAG/" | ||
for file in $(find . -type f); do | ||
echo "Uploading $file to website" | ||
scp $file website:/var/www/girlboss.ceo/~strawberry/conduwuit/releases/$TAG/$file | ||
done |