Skip to content

Build and publish release #89

Build and publish release

Build and publish release #89

Workflow file for this run

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