I have an application which is in a private github repo, and am wondering if the releases could be made public so that the app can auto-update itself from github instead of us having to host it.
Additionally I'm wondering if it's possible to use the github api from the deployed app to check for new updates.
Changing a repository's visibilityUnder your repository name, click Settings. Under "Danger Zone", to the right of to "Change repository visibility", click Change visibility. Select a visibility.
You can invite users to become collaborators to your personal repository. If you're using GitHub Free, you can add unlimited collaborators on public and private repositories. Repositories owned by an organization can grant more granular access. For more information, see "Access permissions on GitHub."
No. You can fork it and it still remains private. Private collaborators may fork any private repository you've added them to without their own paid plan. Their forks do not count against your private repository quota.
Changing project visibilityNavigate to your project. In the top-right, click to open the menu. In the menu, click Settings to access the project settings. Next to Visibility in the "Danger zone", select Private or Public.
As @VonC mentioned we have to create a second Repository for that. This is not prohibited and i am doing it already. With github workflows i automated this task, I'm using a develop / master branching, so always when I'm pushing anything to the master branch a new version is build and pushed to the public "Realease" Repo.
In my specific use case I'm building an android apk and releasing it via unoffical github api "hub". Some additional advantage of this is you can have an extra issue tracker for foreign issues and bugs.
name: Master CI CD # using checkout@v2 instead of v1 caus it needs further configuration on: pull_request: types: [closed] jobs: UnitTest: runs-on: ubuntu-latest if: github.event.pull_request.merged steps: - uses: actions/checkout@v2 - name: make executable run: chmod +x gradlew - name: Unit tests run: | ./gradlew test IncrementVersionCode: needs: UnitTest runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: set up JDK 1.8 uses: actions/setup-java@v1 with: java-version: 1.8 - name: make executable run: chmod +x gradlew - name: increment version run: ./gradlew incrementVersionCode - name: Push new version to master run: | git config --local user.email "[email protected]" git config --local user.name "WorkflowBot" git commit -m "Increment Build version" -a # maybe better amend commits to avoid bot commits BuildArtifacts: needs: IncrementVersionCode runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: set up JDK 1.8 uses: actions/setup-java@v1 with: java-version: 1.8 - name: make executable run: chmod +x gradlew - name: Build with Gradle run: ./gradlew build -x lint - name: Rename artifacts run: | cp app/build/outputs/apk/release/app-release.apk MyApp.apk - name: Upload Release uses: actions/upload-artifact@master with: name: Release Apk path: MyApp.apk - name: Upload Debug uses: actions/upload-artifact@master with: name: Debug Apk path: app/build/outputs/apk/debug/app-debug.apk # https://dev.to/ychescale9/running-android-emulators-on-ci-from-bitrise-io-to-github-actions-3j76 E2ETest: needs: BuildArtifacts runs-on: macos-latest strategy: matrix: api-level: [21, 27] arch: [x86] steps: - name: checkout uses: actions/checkout@v2 - name: Make gradlew executable run: chmod +x ./gradlew - name: run tests uses: reactivecircus/android-emulator-runner@v2 with: api-level: ${{ matrix.api-level }} arch: ${{ matrix.arch }} script: ./gradlew connectedCheck Deploy: needs: E2ETest runs-on: ubuntu-latest if: github.ref == 'refs/heads/master' steps: - uses: actions/checkout@v2 # Needed for gradle file to get version information - name: Get Hub run: | curl -fsSL https://github.com/github/hub/raw/master/script/get | bash -s 2.14.1 cd bin chmod +x hub cd .. - name: Get Apk uses: actions/download-artifact@master with: name: Release Apk - name: Publish env: GITHUB_TOKEN: "${{ secrets.RELEASE_REPO_SECRET }}" run: | APP_NAME=MyApp VERSION_NAME=`grep -oP 'versionName "\K(.*?)(?=")' ./app/build.gradle` VERSION_CODE=`cat version.properties | grep "VERSION_CODE" | cut -d'=' -f2` FILENAME="${APP_NAME}-v${VERSION_NAME}-${VERSION_CODE}" TAG="v${VERSION_NAME}-${VERSION_CODE}" TAG="latest-master" echo $APP_NAME echo $VERSION_NAME echo $VERSION_CODE echo $FILENAME echo $TAG git clone https://github.com/MyUser/MyApp-Releases cd MyApp-Releases ./../bin/hub release delete "${TAG}" || echo "Failed deleting TAG: ${TAG}" # If release got lost catch error with message ./../bin/hub release create -a "../${APP_NAME}.apk" -m "Current Master Build: ${FILENAME}" -p "${TAG}" EvaluateCode: needs: Deploy runs-on: ubuntu-latest steps: - name: Get Hub run: | echo "TDOO: Run Jacoco for coverage, and other profiling tools"
A workaround would be to create a public repo, composed of:
git commit --allow-empty
)That way, you have a visible repo dedicated for release hosting, and a private repos for source development.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With