• Stars
    star
    603
  • Rank 71,597 (Top 2 %)
  • Language
    Crystal
  • License
    GNU Affero Genera...
  • Created over 3 years ago
  • Updated 8 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Downloads the latest "nightly" build/artifact from a continuous testing workflow

nightly.link for GitHub

This service lets you get a shareable link to download a build artifact from the latest successful GitHub Actions build of a repository.

Any public repository is accessible by default and visitors don't need to log in.

If you'll be publishing a link to your own repository's artifacts, please install the GitHub App anyway, so that downloads for your repositories don't share the global API rate limit. The throttling will likely become very bad over time.

The issue

GitHub has no direct way to directly link to the latest build from GitHub actions of a given repository.

Even if you do have a link to an artifact, using it requires the visitor to be logged into the GitHub website.

The discussion originates at actions/upload-artifact "Artifact download URL only work for registered users".

So, this service is a solution to this omission.

Authorization

Because GitHub doesn't provide any permanent and public links to an artifact, this service redirects to time-limited links that GitHub can give to the application -- only on behalf of an authenticated user that has access to the repository. So, whenever someone downloads an artifact from a repository that you had added, this service uses a token that is associated with your installation of the GitHub App.

nightly.link as an Installed GitHub App

This GitHub App requests these permissions:

  • Actions: Workflows, workflow runs and artifacts.
    • Access: Read-only
  • Metadata [mandatory]: Search repositories, list collaborators, and access repository metadata.
    • Access: Read-only

nightly.link as an Authorized GitHub App

Interestingly, the prompt that GitHub presents to you when authenticating to the service says something quite a bit scarier:

nightly.link by Oleh Prypin would like permission to:

  • Verify your GitHub identity ($username)
  • Know which resources you can access
  • Act on your behalf

In reality, this blurb is completely generic and will be shown for any GitHub App authorization regardless of its permissions. This is discussed here.

Furthermore, the permissions that the app asks for are granted even if it's just "installed", without being "authorized".

Verifying your identity is needed so that only you can view links to private repositories and your organizations. Other things, well, the service is not even asking for.

Feel free to revoke this part (but keep the install) when you're done with this website's UI.

Privacy policy

An exhaustive list of what this service stores:

  • Server-side:
    • Full repository names that you gave access to.
  • Client-side: nothing.

The server of the main instance also keeps access logs and application logs for up to 3 months.

This page will be updated if this changes.

Pricing

nightly.link is provided totally free of charge, including the main instance that has been running at the author's own expense.

If you rely on the service, please support its continued maintenance by donating to the author.

GitHub sponsors page of @oprypin

No paid features are currently planned.

Author

This service is developed and run by Oleh Prypin.

It has no affiliation with my employer. No affiliation with GitHub either.

Contact

Open an issue at https://github.com/oprypin/nightly.link/issues

Source code

The source code is available in a Git repository at https://github.com/oprypin/nightly.link

License

Copyright (C) 2020 Oleh Prypin

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.

More Repositories

1

crsfml

Crystal bindings to SFML multimedia/game library
Crystal
341
star
2

mkdocs-gen-files

MkDocs plugin to programmatically generate documentation pages during the build
Python
82
star
3

nim-csfml

Nim bindings to SFML multimedia/game library
Nim
81
star
4

mkdocs-section-index

MkDocs plugin to allow clickable sections that lead to an index page
Python
68
star
5

mkdocs-literate-nav

MkDocs plugin to specify the navigation in Markdown instead of YAML
Python
67
star
6

sixcells

Level editor for Hexcells
Python
66
star
7

nim-random

Random number generation library for Nim
Nim
65
star
8

crystal-imgui

Crystal bindings to Dear ImGui
Crystal
64
star
9

crsfml-examples

Simple games made with CrSFML
Crystal
54
star
10

crystal-chipmunk

Crystal bindings to Chipmunk, a fast and lightweight 2D game physics library
Crystal
42
star
11

mkdocs-same-dir

MkDocs plugin to allow placing mkdocs.yml in the same directory as documentation
Python
33
star
12

find-latest-tag

GitHub Action: Find the latest tag in a GitHub repository
JavaScript
32
star
13

pytest-golden

Plugin for pytest that offloads expected outputs to data files
Python
22
star
14

markdown-callouts

Markdown extension: a classier syntax for admonitions
Python
20
star
15

crystal-imgui-sfml

Crystal bindings to ImGui-SFML
Crystal
16
star
16

critter

Chat bot relaying messages between IRC and Gitter
Crystal
16
star
17

crystalize.py

Generator of Crystal lib definitions
Python
12
star
18

nim-chipmunk

Nim bindings to Chipmunk, a fast and lightweight 2D game physics library
Nim
12
star
19

crystal-dbus

Crystal bindings to D-Bus
Crystal
12
star
20

crystal-raw-gl

Crystal bindings to OpenGL and GLU
Crystal
9
star
21

crystal-fuzzing

Fuzzing for Crystal programming language
Crystal
7
star
22

game-bots

Automatic solvers/clickers for puzzle video games
Crystal
5
star
23

nimception

Templating language for Nim that uses Nim syntax and can be evaluated entirely at compile time
Nim
4
star
24

userscripts

A collection of JavaScript browser extensions
LiveScript
3
star
25

slre

Super Light Regular Expression library (clone of the last MIT-licensed version)
C
3
star
26

spec-assert

Assert macro for Crystal that lets you write specs naturally without a special expectation DSL
Crystal
3
star
27

steam-notifier

System tray icon application that shows notifications from Steam Community
Python
2
star
28

oprypin

2
star
29

crystal-raw-chipmunk

Crystal bindings for Chipmunk, a fast and lightweight 2D game physics library
Crystal
2
star
30

reenable-gha

Automatically re-enable GitHub Actions scheduled workflows
Python
2
star
31

crsfml-mkdocstrings

HTML
1
star
32

python-csfml

Python bindings for SFML (using CFFI and CSFML)
Python
1
star
33

egobooster

Search GitHub for new usages of your projects
Python
1
star
34

install-sfml

GitHub Action: Install Simple and Fast Multimedia Library
JavaScript
1
star
35

swtg-map

Tools to create a world map of Super Win the Game
Python
1
star
36

gitbook-plugin-ungrey

Make chapters without an index page clickable instead of grey/disabled
JavaScript
1
star
37

mkdocs-code-validator

Checks Markdown code blocks in a MkDocs site against user-defined actions
Python
1
star
38

py-project-template

Jinja
1
star