Need help with github-actions?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

docker
158 Stars 34 Forks Apache License 2.0 75 Commits 7 Opened issues

Description

:warning: This repository is being replaced with docker/[email protected] https://github.com/docker/github-actions and will be deprecated in the future

Services available

!
?

Need anything else?

Contributors list

github-actions

The core code base for Docker's GitHub Actions (https://github.com/features/actions). This code is used to build the docker/github-actions image that provides the functionality used by the published Docker GitHub Action:

github-actions
runs a command line tool that shells out to docker to perform the various functions. Parameters are supplied to
github-actions
using environment variables in the form described by the GitHub Actions documentation.
github-actions
uses some of the default GitHub Actions environment variables as described in the individual commands section.

Commands

Commands can be called using

docker run docker/github-actions {command}

login

Does a

docker login
using the supplied username and password. Will default to Docker Hub but can be supplied a server address to login to a third-party registry as required.

inputs

|Environment Variable|Required|Description| |---|---|---| |INPUTUSERNAME|yes|Username to login with| |INPUTPASSWORD|yes|Password to login with| |INPUT_REGISTRY|no|Registry server to login to. Defaults to Docker Hub|

build

Builds and tags a docker image.

inputs

|Environment Variable|Required|Description| |---|---|---| |INPUTPATH|yes|Path to build from| |INPUTDOCKERFILE|no|Path to Dockerfile| |INPUTADDGITLABELS|no|Adds git labels (see below)| |INPUTTARGET|no|Target build stage to build| |INPUTBUILDARGS|no|Comma-delimited list of build-args| |INPUTLABELS|no|Comma-delimited list of labels| |INPUTCACHE_FROMS|no|Comma-delimited list of cache-froms|

See the tagging section for information on tag inputs

Git labels

When

INPUT_ADD_GIT_LABELS
is
true
labels are automatically added to the image that contain data about the current state of the git repo based on the standards set out in https://github.com/opencontainers/image-spec/blob/master/annotations.md.

3 labels are supported:

|Label|Description| |---|---| |org.opencontainers.image.created|Date and time on which the image was built (string, date-time as defined by RFC 3339).| |org.opencontainers.image.source|URL to this repository. E.g.

https://github.com/myorg/myrepository
| |org.opencontainers.image.revision|The full git sha of this commit.|

push

Pushes a docker image.

inputs

See the tagging section for information on tag inputs

build-push

Builds, logs in, and pushes a docker image.

inputs

Same as the login and build commands with the addition of

|Environment Variable|Required|Description| |---|---|---| |INPUT_PUSH|no|Will push the image if true|

Tagging

Tagging of images can be set manually, left to

github-actions
to automate, or a combination of the both.

There are 4 input variables used for tagging

|Environment Variable|Required|Description| |---|---|---| |INPUTREGISTRY|no|Registry server to tag with| |INPUTREPOSITORY|yes|Repository to tag with| |INPUTTAGS|no|Hard coded comma-delimited list of tags| |INPUTTAGWITHREF|no|If true then

github-actions
will add tags depending on the git ref automatically as described below| |INPUTTAGWITH_SHA|no|If true then
github-actions
will add a tag in the form
sha-{git-short-sha}
|

If

INPUT_REGISTRY
is set then all tags are prefixed with
{INPUT_REGISTRY}/{INPUT_REPOSITORY}:
. If not then all tags are prefixed with
{INPUT_REPOSITORY}:

Auto tags depend on the git reference that the run is associated with. The reference is passed to

github-actions
using the GitHub actions
GITHUB_REF
enviroment variable.

If the reference is

refs/heads/{branch-name}
then the tag
{branch-name}
is added. For the master branch the
{branch-name}
is replaced with
latest
.

If the reference is

refs/pull/{pr}
then the tag
pr-{pr}
is added.

If the reference is

refs/tags/{tag-name}
then the tag
{tag-name}
is added.

Any

/
in the auto tags are replaced with
-
.

For example if the environment variables are as follows:

|Variable|Value| |---|---| |INPUTREGISTRY|| |INPUTREPOSITORY|myorg/myimage| |INPUTTAGS|foo,bar| |INPUTTAGWITHREF|true| |GITHUB_REF|refs/tags/v0.1|

Then the image will be tagged with:

myorg/myimage:foo
myorg/myimage:bar
myorg/myimage:v0.1

If the variables are as follows:

|Variable|Value| |---|---| |INPUTREGISTRY|myregistry| |INPUTREPOSITORY|myorg/myimage| |INPUTTAGS|foo,bar| |INPUTTAGWITHREF|true| |INPUTTAGWITHSHA|true| |GITHUBREF|refs/heads/master| |GITHUB_SHA|c6df8c68eb71799f9c9ab4a4a4650d6aabd7e415|

Then the image will be tagged with:

myregistry/myorg/myimage:foo
myregistry/myorg/myimage:bar
myregistry/myorg/myimage:lastest
myregistry/myorg/myimage:sha-c6df8c6

Building github-actions

The code is written in Go v1.13 with

go mod
. It can be built locally using the
Makefile
or in docker using the
docker.Makefile
.

make -f docker.Makefile
will build the code, check the linting using golangci-lint, run the go tests, and build the image with a tag of docker/github-actions:latest

make -f docker.Makefile image
will build the github-actions image without a tag and without running test or lint checking

make -f docker.Makefile cli
will build the cli and copy it to
./bin/github-actions

make -f docker.Makefile test
will run the unit and e2e tests

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.