mirror of
https://github.com/DarkStore-3DS/DarkStore.git
synced 2026-07-02 16:49:05 +00:00
Initial GH Actions
This commit is contained in:
@@ -0,0 +1,139 @@
|
||||
name: Build DarkStore
|
||||
|
||||
on:
|
||||
push:
|
||||
branches-ignore: [translation]
|
||||
paths-ignore:
|
||||
- 'README.md'
|
||||
pull_request:
|
||||
branches: ["*"]
|
||||
paths-ignore:
|
||||
- 'README.md'
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
container: devkitpro/devkitarm
|
||||
name: Build with Docker using devkitARM
|
||||
outputs:
|
||||
commit_tag: ${{ steps.build.outputs.commit_tag }}
|
||||
commit_hash: ${{ steps.build.outputs.commit_hash }}
|
||||
author_name: ${{ steps.build.outputs.author_name }}
|
||||
committer_name: ${{ steps.build.outputs.committer_name }}
|
||||
commit_subject: ${{ steps.build.outputs.commit_subject }}
|
||||
commit_message: ${{ steps.build.outputs.commit_message }}
|
||||
steps:
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@v1
|
||||
with:
|
||||
submodules: recursive
|
||||
- name: Install tools
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install p7zip-full -y
|
||||
|
||||
curl -L https://github.com/Steveice10/bannertool/releases/download/1.2.0/bannertool.zip -o bannertool.zip
|
||||
sudo 7z e bannertool.zip linux-x86_64/bannertool
|
||||
sudo chmod +x bannertool
|
||||
mv bannertool /usr/local/bin
|
||||
rm bannertool.zip
|
||||
curl -L https://github.com/3DSGuy/Project_CTR/releases/download/makerom-v0.17/makerom-v0.17-ubuntu_x86_64.zip -o makerom-v0.17-ubuntu_x86_64.zip
|
||||
sudo 7z e makerom-v0.17-ubuntu_x86_64.zip
|
||||
sudo chmod +x makerom
|
||||
mv makerom /usr/local/bin
|
||||
rm makerom-v0.17-ubuntu_x86_64.zip
|
||||
- name: Build
|
||||
id: build
|
||||
run: |
|
||||
make clean
|
||||
make -j$(nproc --all)
|
||||
mkdir -p ~/artifacts
|
||||
cp DarkStore.3dsx ~/artifacts
|
||||
cp DarkStore.cia ~/artifacts
|
||||
make clean
|
||||
make -j$(nproc --all) citra
|
||||
cp DarkStore.3dsx ~/artifacts/DarkStore-Citra.3dsx
|
||||
cp DarkStore.cia ~/artifacts/DarkStore-Citra.cia
|
||||
echo ::set-output name=commit_tag::$(git describe --abbrev=0 --tags)
|
||||
echo ::set-output name=commit_hash::$(git log --format=%h -1)
|
||||
|
||||
# Webhook info
|
||||
echo "::set-output name=author_name::$(git log -1 $GITHUB_SHA --pretty=%aN)"
|
||||
echo "::set-output name=committer_name::$(git log -1 $GITHUB_SHA --pretty=%cN)"
|
||||
echo "::set-output name=commit_subject::$(git log -1 $GITHUB_SHA --pretty=%s)"
|
||||
echo "::set-output name=commit_message::$(git log -1 $GITHUB_SHA --pretty=%b)"
|
||||
- name: Publish build to GH Actions
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
path: ~/artifacts/*
|
||||
name: build
|
||||
|
||||
# Only run this for non-PR jobs.
|
||||
publish_build:
|
||||
runs-on: ubuntu-latest
|
||||
name: Publish build to DarkStore/extras
|
||||
if: ${{ success() && !startsWith(github.ref, 'refs/pull') }}
|
||||
needs: build
|
||||
env:
|
||||
COMMIT_TAG: ${{ needs.build.outputs.commit_tag }}
|
||||
COMMIT_HASH: ${{ needs.build.outputs.commit_hash }}
|
||||
AUTHOR_NAME: ${{ needs.build.outputs.author_name }}
|
||||
COMMIT_SUBJECT: ${{ needs.build.outputs.commit_subject }}
|
||||
COMMIT_MESSAGE: ${{ needs.build.outputs.commit_message }}
|
||||
outputs:
|
||||
current_date: ${{ steps.commit.outputs.current_date }}
|
||||
steps:
|
||||
- name: Install tools
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install qrencode -y
|
||||
- name: Download artifacts
|
||||
uses: actions/download-artifact@v2
|
||||
with:
|
||||
name: build
|
||||
path: build
|
||||
- name: Upload to ${{ github.repository }} release
|
||||
if: ${{ startsWith(github.ref, 'refs/tags') }}
|
||||
run: |
|
||||
ID=$(jq --raw-output '.release.id' $GITHUB_EVENT_PATH)
|
||||
for file in ${{ github.workspace }}/build/*; do
|
||||
AUTH_HEADER="Authorization: token ${{ secrets.GITHUB_TOKEN }}"
|
||||
CONTENT_LENGTH="Content-Length: $(stat -c%s $file)"
|
||||
CONTENT_TYPE="Content-Type: application/7z-x-compressed"
|
||||
UPLOAD_URL="https://uploads.github.com/repos/${{ github.repository }}/releases/$ID/assets?name=$(basename $file)"
|
||||
curl -XPOST -H "$AUTH_HEADER" -H "$CONTENT_LENGTH" -H "$CONTENT_TYPE" --upload-file "$file" "$UPLOAD_URL"
|
||||
done
|
||||
- name: Commit and push to DarkStore-3DS/extras
|
||||
id: commit
|
||||
run: |
|
||||
CURRENT_DATE=$(date +"%Y%m%d-%H%M%S")
|
||||
echo ::set-output name=current_date::$CURRENT_DATE
|
||||
git config --global user.email "bot@darkstore.com"
|
||||
git config --global user.name "DarkStoreBot"
|
||||
git clone --depth 1 https://${{ secrets.DSBOT_TOKEN }}@github.com/DarkStore-3DS/extras.git
|
||||
mkdir -p extras/builds/DarkStore/
|
||||
cd extras/builds/DarkStore/
|
||||
qrencode -o DarkStore.png https://github.com/DarkStore-3DS/extras/raw/v$CURRENT_DATE/builds/DarkStore/DarkStore.cia
|
||||
qrencode -o DarkStore-release.png https://github.com/DarkStore-3DS/DarkStore/releases/download/$COMMIT_TAG/DarkStore.cia
|
||||
cp ${{ github.workspace }}/build/* .
|
||||
git stage .
|
||||
git commit -m "DarkStore | $COMMIT_HASH"
|
||||
git tag v$CURRENT_DATE
|
||||
git push origin master v$CURRENT_DATE
|
||||
- name: Release to DarkStore-3DS/extras
|
||||
run: |
|
||||
AUTH_HEADER="Authorization: token ${{ secrets.DSBOT_TOKEN }}"
|
||||
CONTENT_TYPE="Content-Type: application/json"
|
||||
API_URL="https://api.github.com/repos/DarkStore-3DS/extras/releases"
|
||||
RELEASE_INFO="{\"tag_name\": \"v${{ steps.commit.outputs.current_date }}\", \"name\": \"DarkStore | $COMMIT_HASH\", \"body\": \"$AUTHOR_NAME - $COMMIT_SUBJECT\n\n$COMMIT_MESSAGE\", \"prerelease\": true}"
|
||||
RESPONSE=$(curl -XPOST -H "$AUTH_HEADER" -H "$CONTENT_TYPE" "$API_URL" -d "$RELEASE_INFO")
|
||||
ID=$(echo $RESPONSE | jq --raw-output '.id')
|
||||
for file in ${{ github.workspace }}/build/*; do
|
||||
AUTH_HEADER="Authorization: token ${{ secrets.DSBOT_TOKEN }}"
|
||||
CONTENT_LENGTH="Content-Length: $(stat -c%s $file)"
|
||||
CONTENT_TYPE="Content-Type: application/7z-x-compressed"
|
||||
UPLOAD_URL="https://uploads.github.com/repos/DarkStore-3DS/extras/releases/$ID/assets?name=$(basename $file)"
|
||||
curl -XPOST -H "$AUTH_HEADER" -H "$CONTENT_LENGTH" -H "$CONTENT_TYPE" --upload-file "$file" "$UPLOAD_URL"
|
||||
done
|
||||
Reference in New Issue
Block a user