Build and publish release #89
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
name: Build and publish release | |
on: | |
workflow_dispatch: | |
branches: | |
- master | |
permissions: | |
contents: write | |
pages: write | |
id-token: write | |
concurrency: | |
group: "pages" | |
cancel-in-progress: false | |
jobs: | |
build-openwrt: | |
runs-on: ubuntu-latest | |
container: | |
image: openwrt/sdk:latest | |
options: --user root | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Bump version file | |
uses: francktrouillez/auto-bump-version-file@v1 | |
with: | |
file: 'VERSION' | |
- name: Init SDK | |
working-directory: /builder | |
run: | | |
HOME=/builder ./setup.sh | |
- name: Copy keys | |
env: | |
OPENWRT_PUBLIC_KEY: ${{ secrets.OPENWRT_PUBLIC_KEY }} | |
OPENWRT_SECRET_KEY: ${{ secrets.OPENWRT_SECRET_KEY }} | |
OPENWRT_APK_PUBLIC_KEY: ${{ secrets.OPENWRT_APK_PUBLIC_KEY }} | |
OPENWRT_APK_SECRET_KEY: ${{ secrets.OPENWRT_APK_SECRET_KEY }} | |
run: | | |
echo "$OPENWRT_SECRET_KEY" > /builder/key-build | |
echo "$OPENWRT_PUBLIC_KEY" > /builder/key-build.pub | |
echo "$OPENWRT_APK_SECRET_KEY" > /builder/private-key.pem | |
echo "$OPENWRT_APK_PUBLIC_KEY" > /builder/public-key.pem | |
- name: Build openwrt packages | |
id: build | |
working-directory: /builder | |
run: | | |
echo "src-link nfqws $GITHUB_WORKSPACE/openwrt" > feeds.conf | |
./scripts/feeds update nfqws | |
./scripts/feeds install -a -p nfqws | |
make defconfig | |
make CONFIG_NO_STRIP=y CONFIG_USE_APK=y package/nfqws-keenetic/compile V=s | |
make CONFIG_NO_STRIP=y CONFIG_USE_APK=y package/index V=s | |
make CONFIG_NO_STRIP=y CONFIG_USE_APK= package/nfqws-keenetic/compile V=s | |
make CONFIG_NO_STRIP=y CONFIG_USE_APK= package/index V=s | |
- name: Upload files | |
if: steps.build.outcome == 'success' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: openwrt | |
path: /builder/bin/packages/x86_64/nfqws/* | |
if-no-files-found: error | |
- name: Summary | |
run: | | |
echo '```' >> $GITHUB_STEP_SUMMARY | |
ls /builder/bin/packages/x86_64/nfqws/ >> $GITHUB_STEP_SUMMARY | |
echo '```' >> $GITHUB_STEP_SUMMARY | |
build-entware: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Bump version file | |
uses: francktrouillez/auto-bump-version-file@v1 | |
with: | |
file: 'VERSION' | |
- name: Build entware packages | |
run: make entware | |
- name: Build entware web | |
run: make web-entware | |
- name: Upload files | |
uses: actions/upload-artifact@v4 | |
with: | |
name: entware | |
path: ./out/*.ipk | |
if-no-files-found: error | |
- name: Summary | |
run: | | |
echo '```' >> $GITHUB_STEP_SUMMARY | |
ls ./out >> $GITHUB_STEP_SUMMARY | |
echo '```' >> $GITHUB_STEP_SUMMARY | |
build-repository: | |
runs-on: ubuntu-latest | |
needs: [build-openwrt, build-entware] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Bump version file | |
uses: francktrouillez/auto-bump-version-file@v1 | |
with: | |
file: 'VERSION' | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
path: out | |
merge-multiple: true | |
- name: Display artifacts | |
run: ls ./out | |
- name: Build repository | |
run: make repository | |
- name: Create openwrt keys | |
env: | |
OPENWRT_PUBLIC_KEY: ${{ secrets.OPENWRT_PUBLIC_KEY }} | |
OPENWRT_APK_PUBLIC_KEY: ${{ secrets.OPENWRT_APK_PUBLIC_KEY }} | |
run: | | |
echo "$OPENWRT_PUBLIC_KEY" > ./out/_pages/openwrt/nfqws-keenetic.pub | |
echo "$OPENWRT_APK_PUBLIC_KEY" > ./out/_pages/openwrt/nfqws-keenetic.pem | |
- name: Copy openwrt indexes | |
run: | | |
cp ./out/Packages ./out/_pages/openwrt/Packages | |
cp ./out/Packages.gz ./out/_pages/openwrt/Packages.gz | |
cp ./out/Packages.sig ./out/_pages/openwrt/Packages.sig | |
cp ./out/packages.adb ./out/_pages/openwrt/packages.adb | |
- name: Upload pages artifact | |
uses: actions/upload-pages-artifact@v3 | |
with: | |
path: ./out/_pages | |
- name: Summary | |
run: | | |
echo '```' >> $GITHUB_STEP_SUMMARY | |
ls -R ./out/_pages >> $GITHUB_STEP_SUMMARY | |
echo '```' >> $GITHUB_STEP_SUMMARY | |
create-release: | |
runs-on: ubuntu-latest | |
needs: [build-repository] | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Bump version file | |
uses: francktrouillez/auto-bump-version-file@v1 | |
with: | |
file: 'VERSION' | |
- name: Read version | |
id: version | |
uses: juliangruber/read-file-action@v1 | |
with: | |
path: ./VERSION | |
trim: true | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
path: out | |
- name: Display artifacts | |
run: ls -R ./out | |
- name: Commit and push version file | |
run: | | |
git config --local user.email "github-actions[bot]@users.noreply.github.com" | |
git config --local user.name "github-actions[bot]" | |
git add VERSION | |
git commit -m "Version ${{ steps.version.outputs.content }}" | |
git tag -a v${{ steps.version.outputs.content }} -m "Version ${{ steps.version.outputs.content }}" | |
git push origin v${{ steps.version.outputs.content }} | |
git push | |
- name: Create Release | |
id: create_release | |
uses: actions/[email protected] | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: v${{ steps.version.outputs.content }} | |
release_name: Release v${{ steps.version.outputs.content }} | |
draft: false | |
prerelease: false | |
- name: Upload Release mips | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./out/entware/nfqws-keenetic_${{ steps.version.outputs.content }}_mips-3.4.ipk | |
asset_name: nfqws-keenetic_${{ steps.version.outputs.content }}_mips-3.4.ipk | |
asset_content_type: application/octet-stream | |
- name: Upload Release mipsel | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./out/entware/nfqws-keenetic_${{ steps.version.outputs.content }}_mipsel-3.4.ipk | |
asset_name: nfqws-keenetic_${{ steps.version.outputs.content }}_mipsel-3.4.ipk | |
asset_content_type: application/octet-stream | |
- name: Upload Release aarch64 | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./out/entware/nfqws-keenetic_${{ steps.version.outputs.content }}_aarch64-3.10.ipk | |
asset_name: nfqws-keenetic_${{ steps.version.outputs.content }}_aarch64-3.10.ipk | |
asset_content_type: application/octet-stream | |
- name: Upload Release multiarch | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./out/entware/nfqws-keenetic_${{ steps.version.outputs.content }}_all_entware.ipk | |
asset_name: nfqws-keenetic_${{ steps.version.outputs.content }}_all_entware.ipk | |
asset_content_type: application/octet-stream | |
- name: Upload Release openwrt ipk | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./out/openwrt/nfqws-keenetic_${{ steps.version.outputs.content }}_all.ipk | |
asset_name: nfqws-keenetic_${{ steps.version.outputs.content }}_all_openwrt.ipk | |
asset_content_type: application/octet-stream | |
- name: Upload Release openwrt apk | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./out/openwrt/nfqws-keenetic-${{ steps.version.outputs.content }}.apk | |
asset_name: nfqws-keenetic_${{ steps.version.outputs.content }}_all_openwrt.apk | |
asset_content_type: application/octet-stream | |
- name: Upload Release web-entware | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./out/entware/nfqws-keenetic-web_${{ steps.version.outputs.content }}_all_entware.ipk | |
asset_name: nfqws-keenetic-web_${{ steps.version.outputs.content }}_all_entware.ipk | |
asset_content_type: application/octet-stream | |
- name: Upload Release web-openwrt ipk | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./out/openwrt/nfqws-keenetic-web_${{ steps.version.outputs.content }}_all.ipk | |
asset_name: nfqws-keenetic-web_${{ steps.version.outputs.content }}_all_openwrt.ipk | |
asset_content_type: application/octet-stream | |
- name: Upload Release web-openwrt apk | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./out/openwrt/nfqws-keenetic-web-${{ steps.version.outputs.content }}.apk | |
asset_name: nfqws-keenetic-web_${{ steps.version.outputs.content }}_all_openwrt.apk | |
asset_content_type: application/octet-stream | |
- name: Summary | |
run: | | |
echo "Release v${{ steps.version.outputs.content }} created" >> $GITHUB_STEP_SUMMARY | |
deploy-repository: | |
runs-on: ubuntu-latest | |
needs: [build-repository] | |
steps: | |
- name: Setup Pages | |
uses: actions/configure-pages@v5 | |
- name: Deploy to GitHub Pages | |
id: deployment | |
uses: actions/deploy-pages@v4 | |
- name: Summary | |
run: | | |
echo "Repository deployed" >> $GITHUB_STEP_SUMMARY |