mirror of
https://github.com/elgohr/Publish-Docker-Github-Action.git
synced 2026-03-12 18:07:12 -04:00
⬆️ Update to docker 20.10.9. Enable dependabot again
This commit is contained in:
6
.github/dependabot.yml
vendored
Normal file
6
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
- package-ecosystem: "docker"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
FROM docker:20.10.8@sha256:ddf0d732dcbc3e2087836e06e50cc97e21bfb002a49c7d0fe767f6c31e01d65f as runtime
|
FROM docker:20.10.9@sha256:62302357e804b152e157d3603ce7a97c3f368a626ce027eee1d1e02b5ae924f3 as runtime
|
||||||
LABEL "repository"="https://github.com/elgohr/Publish-Docker-Github-Action"
|
LABEL "repository"="https://github.com/elgohr/Publish-Docker-Github-Action"
|
||||||
LABEL "maintainer"="Lars Gohr"
|
LABEL "maintainer"="Lars Gohr"
|
||||||
ADD entrypoint.sh /entrypoint.sh
|
ADD entrypoint.sh /entrypoint.sh
|
||||||
@@ -7,8 +7,8 @@ ENTRYPOINT ["/entrypoint.sh"]
|
|||||||
FROM runtime as testEnv
|
FROM runtime as testEnv
|
||||||
RUN apk add --no-cache coreutils bats
|
RUN apk add --no-cache coreutils bats
|
||||||
ADD test.bats /test.bats
|
ADD test.bats /test.bats
|
||||||
ADD mock.sh /usr/local/bin/docker
|
ADD mock.sh /usr/local/mock/docker
|
||||||
ADD mock.sh /usr/bin/date
|
ADD mock.sh /usr/local/mock/date
|
||||||
RUN /test.bats
|
RUN /test.bats
|
||||||
|
|
||||||
FROM runtime
|
FROM runtime
|
||||||
|
|||||||
318
test.bats
318
test.bats
@@ -1,11 +1,13 @@
|
|||||||
#!/usr/bin/env bats
|
#!/usr/bin/env bats
|
||||||
|
|
||||||
setup(){
|
setup(){
|
||||||
|
export PATH="/usr/local/sbin:/usr/local/mock:/usr/sbin:/usr/bin:/sbin:/bin"
|
||||||
|
|
||||||
cat /dev/null >| mockArgs
|
cat /dev/null >| mockArgs
|
||||||
cat /dev/null >| mockStdin
|
cat /dev/null >| mockStdin
|
||||||
|
|
||||||
declare -A -p MOCK_RETURNS=(
|
declare -A -p MOCK_RETURNS=(
|
||||||
['/usr/local/bin/docker']=""
|
['/usr/local/mock/docker']=""
|
||||||
['sudo']=""
|
['sudo']=""
|
||||||
) > mockReturns
|
) > mockReturns
|
||||||
|
|
||||||
@@ -34,11 +36,11 @@ teardown() {
|
|||||||
|
|
||||||
expectStdOutContains "::set-output name=tag::latest"
|
expectStdOutContains "::set-output name=tag::latest"
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker login -u USERNAME --password-stdin
|
expectMockCalledContains "/usr/local/mock/docker login -u USERNAME --password-stdin
|
||||||
/usr/local/bin/docker build -t my/repository:latest .
|
/usr/local/mock/docker build -t my/repository:latest .
|
||||||
/usr/local/bin/docker push my/repository:latest
|
/usr/local/mock/docker push my/repository:latest
|
||||||
/usr/local/bin/docker inspect --format={{index .RepoDigests 0}} my/repository:latest
|
/usr/local/mock/docker inspect --format={{index .RepoDigests 0}} my/repository:latest
|
||||||
/usr/local/bin/docker logout"
|
/usr/local/mock/docker logout"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it pushes master branch to latest" {
|
@test "it pushes master branch to latest" {
|
||||||
@@ -48,11 +50,11 @@ teardown() {
|
|||||||
|
|
||||||
expectStdOutContains "::set-output name=tag::latest"
|
expectStdOutContains "::set-output name=tag::latest"
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker login -u USERNAME --password-stdin
|
expectMockCalledContains "/usr/local/mock/docker login -u USERNAME --password-stdin
|
||||||
/usr/local/bin/docker build -t my/repository:latest .
|
/usr/local/mock/docker build -t my/repository:latest .
|
||||||
/usr/local/bin/docker push my/repository:latest
|
/usr/local/mock/docker push my/repository:latest
|
||||||
/usr/local/bin/docker inspect --format={{index .RepoDigests 0}} my/repository:latest
|
/usr/local/mock/docker inspect --format={{index .RepoDigests 0}} my/repository:latest
|
||||||
/usr/local/bin/docker logout"
|
/usr/local/mock/docker logout"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it pushes branch as name of the branch" {
|
@test "it pushes branch as name of the branch" {
|
||||||
@@ -62,8 +64,8 @@ teardown() {
|
|||||||
|
|
||||||
expectStdOutContains "::set-output name=tag::myBranch"
|
expectStdOutContains "::set-output name=tag::myBranch"
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker build -t my/repository:myBranch .
|
expectMockCalledContains "/usr/local/mock/docker build -t my/repository:myBranch .
|
||||||
/usr/local/bin/docker push my/repository:myBranch"
|
/usr/local/mock/docker push my/repository:myBranch"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it converts dashes in branch to hyphens" {
|
@test "it converts dashes in branch to hyphens" {
|
||||||
@@ -73,8 +75,8 @@ teardown() {
|
|||||||
|
|
||||||
expectStdOutContains "::set-output name=tag::myBranch-withDash"
|
expectStdOutContains "::set-output name=tag::myBranch-withDash"
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker build -t my/repository:myBranch-withDash .
|
expectMockCalledContains "/usr/local/mock/docker build -t my/repository:myBranch-withDash .
|
||||||
/usr/local/bin/docker push my/repository:myBranch-withDash"
|
/usr/local/mock/docker push my/repository:myBranch-withDash"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it pushes tags to latest" {
|
@test "it pushes tags to latest" {
|
||||||
@@ -84,11 +86,11 @@ teardown() {
|
|||||||
|
|
||||||
expectStdOutContains "::set-output name=tag::latest"
|
expectStdOutContains "::set-output name=tag::latest"
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker login -u USERNAME --password-stdin
|
expectMockCalledContains "/usr/local/mock/docker login -u USERNAME --password-stdin
|
||||||
/usr/local/bin/docker build -t my/repository:latest .
|
/usr/local/mock/docker build -t my/repository:latest .
|
||||||
/usr/local/bin/docker push my/repository:latest
|
/usr/local/mock/docker push my/repository:latest
|
||||||
/usr/local/bin/docker inspect --format={{index .RepoDigests 0}} my/repository:latest
|
/usr/local/mock/docker inspect --format={{index .RepoDigests 0}} my/repository:latest
|
||||||
/usr/local/bin/docker logout"
|
/usr/local/mock/docker logout"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "with tag names it pushes tags using the name" {
|
@test "with tag names it pushes tags using the name" {
|
||||||
@@ -99,8 +101,8 @@ teardown() {
|
|||||||
|
|
||||||
expectStdOutContains "::set-output name=tag::myRelease"
|
expectStdOutContains "::set-output name=tag::myRelease"
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker build -t my/repository:myRelease .
|
expectMockCalledContains "/usr/local/mock/docker build -t my/repository:myRelease .
|
||||||
/usr/local/bin/docker push my/repository:myRelease"
|
/usr/local/mock/docker push my/repository:myRelease"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "with tag names set to false it doesn't push tags using the name" {
|
@test "with tag names set to false it doesn't push tags using the name" {
|
||||||
@@ -111,8 +113,8 @@ teardown() {
|
|||||||
|
|
||||||
expectStdOutContains "::set-output name=tag::latest"
|
expectStdOutContains "::set-output name=tag::latest"
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker build -t my/repository:latest .
|
expectMockCalledContains "/usr/local/mock/docker build -t my/repository:latest .
|
||||||
/usr/local/bin/docker push my/repository:latest"
|
/usr/local/mock/docker push my/repository:latest"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "with tag semver it pushes tags using the major and minor versions (single digit)" {
|
@test "with tag semver it pushes tags using the major and minor versions (single digit)" {
|
||||||
@@ -123,13 +125,13 @@ teardown() {
|
|||||||
|
|
||||||
expectStdOutContains "::set-output name=tag::1.2.3"
|
expectStdOutContains "::set-output name=tag::1.2.3"
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker login -u USERNAME --password-stdin
|
expectMockCalledContains "/usr/local/mock/docker login -u USERNAME --password-stdin
|
||||||
/usr/local/bin/docker build -t my/repository:1.2.3 -t my/repository:1.2 -t my/repository:1 .
|
/usr/local/mock/docker build -t my/repository:1.2.3 -t my/repository:1.2 -t my/repository:1 .
|
||||||
/usr/local/bin/docker push my/repository:1.2.3
|
/usr/local/mock/docker push my/repository:1.2.3
|
||||||
/usr/local/bin/docker push my/repository:1.2
|
/usr/local/mock/docker push my/repository:1.2
|
||||||
/usr/local/bin/docker push my/repository:1
|
/usr/local/mock/docker push my/repository:1
|
||||||
/usr/local/bin/docker inspect --format={{index .RepoDigests 0}} my/repository:1.2.3
|
/usr/local/mock/docker inspect --format={{index .RepoDigests 0}} my/repository:1.2.3
|
||||||
/usr/local/bin/docker logout"
|
/usr/local/mock/docker logout"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "with tag semver it pushes tags using the major and minor versions (multi digits)" {
|
@test "with tag semver it pushes tags using the major and minor versions (multi digits)" {
|
||||||
@@ -140,13 +142,13 @@ teardown() {
|
|||||||
|
|
||||||
expectStdOutContains "::set-output name=tag::12.345.5678"
|
expectStdOutContains "::set-output name=tag::12.345.5678"
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker login -u USERNAME --password-stdin
|
expectMockCalledContains "/usr/local/mock/docker login -u USERNAME --password-stdin
|
||||||
/usr/local/bin/docker build -t my/repository:12.345.5678 -t my/repository:12.345 -t my/repository:12 .
|
/usr/local/mock/docker build -t my/repository:12.345.5678 -t my/repository:12.345 -t my/repository:12 .
|
||||||
/usr/local/bin/docker push my/repository:12.345.5678
|
/usr/local/mock/docker push my/repository:12.345.5678
|
||||||
/usr/local/bin/docker push my/repository:12.345
|
/usr/local/mock/docker push my/repository:12.345
|
||||||
/usr/local/bin/docker push my/repository:12
|
/usr/local/mock/docker push my/repository:12
|
||||||
/usr/local/bin/docker inspect --format={{index .RepoDigests 0}} my/repository:12.345.5678
|
/usr/local/mock/docker inspect --format={{index .RepoDigests 0}} my/repository:12.345.5678
|
||||||
/usr/local/bin/docker logout"
|
/usr/local/mock/docker logout"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "with tag semver it pushes tags using the pre-release, but does not update the major, minor or patch version" {
|
@test "with tag semver it pushes tags using the pre-release, but does not update the major, minor or patch version" {
|
||||||
@@ -163,11 +165,11 @@ teardown() {
|
|||||||
|
|
||||||
expectStdOutContains "::set-output name=tag::1.1.1-${SUFFIX}"
|
expectStdOutContains "::set-output name=tag::1.1.1-${SUFFIX}"
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker login -u USERNAME --password-stdin
|
expectMockCalledContains "/usr/local/mock/docker login -u USERNAME --password-stdin
|
||||||
/usr/local/bin/docker build -t my/repository:1.1.1-${SUFFIX} .
|
/usr/local/mock/docker build -t my/repository:1.1.1-${SUFFIX} .
|
||||||
/usr/local/bin/docker push my/repository:1.1.1-${SUFFIX}
|
/usr/local/mock/docker push my/repository:1.1.1-${SUFFIX}
|
||||||
/usr/local/bin/docker inspect --format={{index .RepoDigests 0}} my/repository:1.1.1-${SUFFIX}
|
/usr/local/mock/docker inspect --format={{index .RepoDigests 0}} my/repository:1.1.1-${SUFFIX}
|
||||||
/usr/local/bin/docker logout"
|
/usr/local/mock/docker logout"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -179,13 +181,13 @@ teardown() {
|
|||||||
|
|
||||||
expectStdOutContains "::set-output name=tag::1.2.34"
|
expectStdOutContains "::set-output name=tag::1.2.34"
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker login -u USERNAME --password-stdin
|
expectMockCalledContains "/usr/local/mock/docker login -u USERNAME --password-stdin
|
||||||
/usr/local/bin/docker build -t my/repository:1.2.34 -t my/repository:1.2 -t my/repository:1 .
|
/usr/local/mock/docker build -t my/repository:1.2.34 -t my/repository:1.2 -t my/repository:1 .
|
||||||
/usr/local/bin/docker push my/repository:1.2.34
|
/usr/local/mock/docker push my/repository:1.2.34
|
||||||
/usr/local/bin/docker push my/repository:1.2
|
/usr/local/mock/docker push my/repository:1.2
|
||||||
/usr/local/bin/docker push my/repository:1
|
/usr/local/mock/docker push my/repository:1
|
||||||
/usr/local/bin/docker inspect --format={{index .RepoDigests 0}} my/repository:1.2.34
|
/usr/local/mock/docker inspect --format={{index .RepoDigests 0}} my/repository:1.2.34
|
||||||
/usr/local/bin/docker logout"
|
/usr/local/mock/docker logout"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "with tag semver it pushes latest when tag has invalid semver version" {
|
@test "with tag semver it pushes latest when tag has invalid semver version" {
|
||||||
@@ -196,8 +198,8 @@ teardown() {
|
|||||||
|
|
||||||
expectStdOutContains "::set-output name=tag::latest"
|
expectStdOutContains "::set-output name=tag::latest"
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker build -t my/repository:latest .
|
expectMockCalledContains "/usr/local/mock/docker build -t my/repository:latest .
|
||||||
/usr/local/bin/docker push my/repository:latest"
|
/usr/local/mock/docker push my/repository:latest"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "with tag semver set to false it doesn't push tags using semver" {
|
@test "with tag semver set to false it doesn't push tags using semver" {
|
||||||
@@ -208,8 +210,8 @@ teardown() {
|
|||||||
|
|
||||||
expectStdOutContains "::set-output name=tag::latest"
|
expectStdOutContains "::set-output name=tag::latest"
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker build -t my/repository:latest .
|
expectMockCalledContains "/usr/local/mock/docker build -t my/repository:latest .
|
||||||
/usr/local/bin/docker push my/repository:latest"
|
/usr/local/mock/docker push my/repository:latest"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it pushes specific Dockerfile to latest" {
|
@test "it pushes specific Dockerfile to latest" {
|
||||||
@@ -219,8 +221,8 @@ teardown() {
|
|||||||
|
|
||||||
expectStdOutContains "::set-output name=tag::latest"
|
expectStdOutContains "::set-output name=tag::latest"
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker build -f MyDockerFileName -t my/repository:latest .
|
expectMockCalledContains "/usr/local/mock/docker build -f MyDockerFileName -t my/repository:latest .
|
||||||
/usr/local/bin/docker push my/repository:latest"
|
/usr/local/mock/docker push my/repository:latest"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it pushes a snapshot by sha and date in addition" {
|
@test "it pushes a snapshot by sha and date in addition" {
|
||||||
@@ -228,8 +230,8 @@ teardown() {
|
|||||||
export GITHUB_SHA='12169ed809255604e557a82617264e9c373faca7'
|
export GITHUB_SHA='12169ed809255604e557a82617264e9c373faca7'
|
||||||
|
|
||||||
declare -A -p MOCK_RETURNS=(
|
declare -A -p MOCK_RETURNS=(
|
||||||
['/usr/local/bin/docker']=""
|
['/usr/local/mock/docker']=""
|
||||||
['/usr/bin/date']="197001010101"
|
['/usr/local/mock/date']="197001010101"
|
||||||
) > mockReturns
|
) > mockReturns
|
||||||
|
|
||||||
run /entrypoint.sh
|
run /entrypoint.sh
|
||||||
@@ -238,10 +240,10 @@ teardown() {
|
|||||||
::set-output name=snapshot-tag::19700101010112169e
|
::set-output name=snapshot-tag::19700101010112169e
|
||||||
::set-output name=tag::latest"
|
::set-output name=tag::latest"
|
||||||
|
|
||||||
expectMockCalledContains "/usr/bin/date +%Y%m%d%H%M%S
|
expectMockCalledContains "/usr/local/mock/date +%Y%m%d%H%M%S
|
||||||
/usr/local/bin/docker build -t my/repository:latest -t my/repository:19700101010112169e .
|
/usr/local/mock/docker build -t my/repository:latest -t my/repository:19700101010112169e .
|
||||||
/usr/local/bin/docker push my/repository:latest
|
/usr/local/mock/docker push my/repository:latest
|
||||||
/usr/local/bin/docker push my/repository:19700101010112169e"
|
/usr/local/mock/docker push my/repository:19700101010112169e"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it does not push a snapshot by sha and date in addition when turned off" {
|
@test "it does not push a snapshot by sha and date in addition when turned off" {
|
||||||
@@ -249,8 +251,8 @@ teardown() {
|
|||||||
export GITHUB_SHA='12169ed809255604e557a82617264e9c373faca7'
|
export GITHUB_SHA='12169ed809255604e557a82617264e9c373faca7'
|
||||||
|
|
||||||
declare -A -p MOCK_RETURNS=(
|
declare -A -p MOCK_RETURNS=(
|
||||||
['/usr/local/bin/docker']=""
|
['/usr/local/mock/docker']=""
|
||||||
['/usr/bin/date']="197001010101"
|
['/usr/local/mock/date']="197001010101"
|
||||||
) > mockReturns
|
) > mockReturns
|
||||||
|
|
||||||
run /entrypoint.sh
|
run /entrypoint.sh
|
||||||
@@ -258,8 +260,8 @@ teardown() {
|
|||||||
expectStdOutContains "
|
expectStdOutContains "
|
||||||
::set-output name=tag::latest"
|
::set-output name=tag::latest"
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker build -t my/repository:latest .
|
expectMockCalledContains "/usr/local/mock/docker build -t my/repository:latest .
|
||||||
/usr/local/bin/docker push my/repository:latest"
|
/usr/local/mock/docker push my/repository:latest"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it caches image from former build and uses it for snapshot" {
|
@test "it caches image from former build and uses it for snapshot" {
|
||||||
@@ -268,18 +270,18 @@ teardown() {
|
|||||||
export INPUT_CACHE='true'
|
export INPUT_CACHE='true'
|
||||||
|
|
||||||
declare -A -p MOCK_RETURNS=(
|
declare -A -p MOCK_RETURNS=(
|
||||||
['/usr/local/bin/docker']=""
|
['/usr/local/mock/docker']=""
|
||||||
['/usr/bin/date']="197001010101"
|
['/usr/local/mock/date']="197001010101"
|
||||||
) > mockReturns
|
) > mockReturns
|
||||||
|
|
||||||
run /entrypoint.sh
|
run /entrypoint.sh
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker login -u USERNAME --password-stdin
|
expectMockCalledContains "/usr/local/mock/docker login -u USERNAME --password-stdin
|
||||||
/usr/local/bin/docker pull my/repository:latest
|
/usr/local/mock/docker pull my/repository:latest
|
||||||
/usr/bin/date +%Y%m%d%H%M%S
|
/usr/local/mock/date +%Y%m%d%H%M%S
|
||||||
/usr/local/bin/docker build --cache-from my/repository:latest -t my/repository:latest -t my/repository:19700101010112169e .
|
/usr/local/mock/docker build --cache-from my/repository:latest -t my/repository:latest -t my/repository:19700101010112169e .
|
||||||
/usr/local/bin/docker push my/repository:latest
|
/usr/local/mock/docker push my/repository:latest
|
||||||
/usr/local/bin/docker push my/repository:19700101010112169e"
|
/usr/local/mock/docker push my/repository:19700101010112169e"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it does not use the cache for building when pulling the former image failed" {
|
@test "it does not use the cache for building when pulling the former image failed" {
|
||||||
@@ -289,17 +291,17 @@ teardown() {
|
|||||||
export INPUT_CACHE='true'
|
export INPUT_CACHE='true'
|
||||||
|
|
||||||
declare -A -p MOCK_RETURNS=(
|
declare -A -p MOCK_RETURNS=(
|
||||||
['/usr/local/bin/docker']="_pull my/repository:latest" # errors when pulled
|
['/usr/local/mock/docker']="_pull my/repository:latest" # errors when pulled
|
||||||
['/usr/bin/date']="197001010101"
|
['/usr/local/mock/date']="197001010101"
|
||||||
) > mockReturns
|
) > mockReturns
|
||||||
|
|
||||||
run /entrypoint.sh
|
run /entrypoint.sh
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker pull my/repository:latest
|
expectMockCalledContains "/usr/local/mock/docker pull my/repository:latest
|
||||||
/usr/bin/date +%Y%m%d%H%M%S
|
/usr/local/mock/date +%Y%m%d%H%M%S
|
||||||
/usr/local/bin/docker build -t my/repository:latest -t my/repository:19700101010112169e .
|
/usr/local/mock/docker build -t my/repository:latest -t my/repository:19700101010112169e .
|
||||||
/usr/local/bin/docker push my/repository:latest
|
/usr/local/mock/docker push my/repository:latest
|
||||||
/usr/local/bin/docker push my/repository:19700101010112169e"
|
/usr/local/mock/docker push my/repository:19700101010112169e"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it pushes branch by sha and date with specific Dockerfile" {
|
@test "it pushes branch by sha and date with specific Dockerfile" {
|
||||||
@@ -308,17 +310,17 @@ teardown() {
|
|||||||
export INPUT_DOCKERFILE='MyDockerFileName'
|
export INPUT_DOCKERFILE='MyDockerFileName'
|
||||||
|
|
||||||
declare -A -p MOCK_RETURNS=(
|
declare -A -p MOCK_RETURNS=(
|
||||||
['/usr/local/bin/docker']=""
|
['/usr/local/mock/docker']=""
|
||||||
['/usr/bin/date']="197001010101"
|
['/usr/local/mock/date']="197001010101"
|
||||||
) > mockReturns
|
) > mockReturns
|
||||||
|
|
||||||
run /entrypoint.sh
|
run /entrypoint.sh
|
||||||
|
|
||||||
expectMockCalledContains "
|
expectMockCalledContains "
|
||||||
/usr/bin/date +%Y%m%d%H%M%S
|
/usr/local/mock/date +%Y%m%d%H%M%S
|
||||||
/usr/local/bin/docker build -f MyDockerFileName -t my/repository:latest -t my/repository:19700101010112169e .
|
/usr/local/mock/docker build -f MyDockerFileName -t my/repository:latest -t my/repository:19700101010112169e .
|
||||||
/usr/local/bin/docker push my/repository:latest
|
/usr/local/mock/docker push my/repository:latest
|
||||||
/usr/local/bin/docker push my/repository:19700101010112169e"
|
/usr/local/mock/docker push my/repository:19700101010112169e"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it caches image from former build and uses it for snapshot with specific Dockerfile" {
|
@test "it caches image from former build and uses it for snapshot with specific Dockerfile" {
|
||||||
@@ -328,17 +330,17 @@ teardown() {
|
|||||||
export INPUT_DOCKERFILE='MyDockerFileName'
|
export INPUT_DOCKERFILE='MyDockerFileName'
|
||||||
|
|
||||||
declare -A -p MOCK_RETURNS=(
|
declare -A -p MOCK_RETURNS=(
|
||||||
['/usr/local/bin/docker']=""
|
['/usr/local/mock/docker']=""
|
||||||
['/usr/bin/date']="197001010101"
|
['/usr/local/mock/date']="197001010101"
|
||||||
) > mockReturns
|
) > mockReturns
|
||||||
|
|
||||||
run /entrypoint.sh
|
run /entrypoint.sh
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker pull my/repository:latest
|
expectMockCalledContains "/usr/local/mock/docker pull my/repository:latest
|
||||||
/usr/bin/date +%Y%m%d%H%M%S
|
/usr/local/mock/date +%Y%m%d%H%M%S
|
||||||
/usr/local/bin/docker build -f MyDockerFileName --cache-from my/repository:latest -t my/repository:latest -t my/repository:19700101010112169e .
|
/usr/local/mock/docker build -f MyDockerFileName --cache-from my/repository:latest -t my/repository:latest -t my/repository:19700101010112169e .
|
||||||
/usr/local/bin/docker push my/repository:latest
|
/usr/local/mock/docker push my/repository:latest
|
||||||
/usr/local/bin/docker push my/repository:19700101010112169e"
|
/usr/local/mock/docker push my/repository:19700101010112169e"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it pushes to another registry and adds the hostname" {
|
@test "it pushes to another registry and adds the hostname" {
|
||||||
@@ -346,11 +348,11 @@ teardown() {
|
|||||||
|
|
||||||
run /entrypoint.sh
|
run /entrypoint.sh
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker login -u USERNAME --password-stdin my.registry.io
|
expectMockCalledContains "/usr/local/mock/docker login -u USERNAME --password-stdin my.registry.io
|
||||||
/usr/local/bin/docker build -t my.registry.io/my/repository:latest .
|
/usr/local/mock/docker build -t my.registry.io/my/repository:latest .
|
||||||
/usr/local/bin/docker push my.registry.io/my/repository:latest
|
/usr/local/mock/docker push my.registry.io/my/repository:latest
|
||||||
/usr/local/bin/docker inspect --format={{index .RepoDigests 0}} my.registry.io/my/repository:latest
|
/usr/local/mock/docker inspect --format={{index .RepoDigests 0}} my.registry.io/my/repository:latest
|
||||||
/usr/local/bin/docker logout"
|
/usr/local/mock/docker logout"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it pushes to another registry and is ok when the hostname is already present" {
|
@test "it pushes to another registry and is ok when the hostname is already present" {
|
||||||
@@ -359,11 +361,11 @@ teardown() {
|
|||||||
|
|
||||||
run /entrypoint.sh
|
run /entrypoint.sh
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker login -u USERNAME --password-stdin my.registry.io
|
expectMockCalledContains "/usr/local/mock/docker login -u USERNAME --password-stdin my.registry.io
|
||||||
/usr/local/bin/docker build -t my.registry.io/my/repository:latest .
|
/usr/local/mock/docker build -t my.registry.io/my/repository:latest .
|
||||||
/usr/local/bin/docker push my.registry.io/my/repository:latest
|
/usr/local/mock/docker push my.registry.io/my/repository:latest
|
||||||
/usr/local/bin/docker inspect --format={{index .RepoDigests 0}} my.registry.io/my/repository:latest
|
/usr/local/mock/docker inspect --format={{index .RepoDigests 0}} my.registry.io/my/repository:latest
|
||||||
/usr/local/bin/docker logout"
|
/usr/local/mock/docker logout"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it pushes to another registry and removes the protocol from the hostname" {
|
@test "it pushes to another registry and removes the protocol from the hostname" {
|
||||||
@@ -372,11 +374,11 @@ teardown() {
|
|||||||
|
|
||||||
run /entrypoint.sh
|
run /entrypoint.sh
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker login -u USERNAME --password-stdin https://my.registry.io
|
expectMockCalledContains "/usr/local/mock/docker login -u USERNAME --password-stdin https://my.registry.io
|
||||||
/usr/local/bin/docker build -t my.registry.io/my/repository:latest .
|
/usr/local/mock/docker build -t my.registry.io/my/repository:latest .
|
||||||
/usr/local/bin/docker push my.registry.io/my/repository:latest
|
/usr/local/mock/docker push my.registry.io/my/repository:latest
|
||||||
/usr/local/bin/docker inspect --format={{index .RepoDigests 0}} my.registry.io/my/repository:latest
|
/usr/local/mock/docker inspect --format={{index .RepoDigests 0}} my.registry.io/my/repository:latest
|
||||||
/usr/local/bin/docker logout"
|
/usr/local/mock/docker logout"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it caches the image from a former build" {
|
@test "it caches the image from a former build" {
|
||||||
@@ -384,9 +386,9 @@ teardown() {
|
|||||||
|
|
||||||
run /entrypoint.sh
|
run /entrypoint.sh
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker pull my/repository:latest
|
expectMockCalledContains "/usr/local/mock/docker pull my/repository:latest
|
||||||
/usr/local/bin/docker build --cache-from my/repository:latest -t my/repository:latest .
|
/usr/local/mock/docker build --cache-from my/repository:latest -t my/repository:latest .
|
||||||
/usr/local/bin/docker push my/repository:latest"
|
/usr/local/mock/docker push my/repository:latest"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it does not cache the image from a former build if set to false" {
|
@test "it does not cache the image from a former build if set to false" {
|
||||||
@@ -394,8 +396,8 @@ teardown() {
|
|||||||
|
|
||||||
run /entrypoint.sh
|
run /entrypoint.sh
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker build -t my/repository:latest .
|
expectMockCalledContains "/usr/local/mock/docker build -t my/repository:latest .
|
||||||
/usr/local/bin/docker push my/repository:latest"
|
/usr/local/mock/docker push my/repository:latest"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it pushes pull requests when configured" {
|
@test "it pushes pull requests when configured" {
|
||||||
@@ -408,8 +410,8 @@ teardown() {
|
|||||||
expectStdOutContains "
|
expectStdOutContains "
|
||||||
::set-output name=tag::12169ed809255604e557a82617264e9c373faca7"
|
::set-output name=tag::12169ed809255604e557a82617264e9c373faca7"
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker build -t my/repository:12169ed809255604e557a82617264e9c373faca7 .
|
expectMockCalledContains "/usr/local/mock/docker build -t my/repository:12169ed809255604e557a82617264e9c373faca7 .
|
||||||
/usr/local/bin/docker push my/repository:12169ed809255604e557a82617264e9c373faca7"
|
/usr/local/mock/docker push my/repository:12169ed809255604e557a82617264e9c373faca7"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it pushes to the tag if configured in the name" {
|
@test "it pushes to the tag if configured in the name" {
|
||||||
@@ -420,8 +422,8 @@ teardown() {
|
|||||||
expectStdOutContains "
|
expectStdOutContains "
|
||||||
::set-output name=tag::custom-tag"
|
::set-output name=tag::custom-tag"
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker build -t my/repository:custom-tag .
|
expectMockCalledContains "/usr/local/mock/docker build -t my/repository:custom-tag .
|
||||||
/usr/local/bin/docker push my/repository:custom-tag"
|
/usr/local/mock/docker push my/repository:custom-tag"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it uses buildargs for building, if configured" {
|
@test "it uses buildargs for building, if configured" {
|
||||||
@@ -434,7 +436,7 @@ teardown() {
|
|||||||
::add-mask::MY_SECOND
|
::add-mask::MY_SECOND
|
||||||
::set-output name=tag::latest"
|
::set-output name=tag::latest"
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker build --build-arg MY_FIRST --build-arg MY_SECOND -t my/repository:latest ."
|
expectMockCalledContains "/usr/local/mock/docker build --build-arg MY_FIRST --build-arg MY_SECOND -t my/repository:latest ."
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it uses buildargs for a single variable" {
|
@test "it uses buildargs for a single variable" {
|
||||||
@@ -446,7 +448,7 @@ teardown() {
|
|||||||
::add-mask::MY_ONLY
|
::add-mask::MY_ONLY
|
||||||
::set-output name=tag::latest"
|
::set-output name=tag::latest"
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker build --build-arg MY_ONLY -t my/repository:latest ."
|
expectMockCalledContains "/usr/local/mock/docker build --build-arg MY_ONLY -t my/repository:latest ."
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it errors when with.name was not set" {
|
@test "it errors when with.name was not set" {
|
||||||
@@ -496,7 +498,7 @@ teardown() {
|
|||||||
|
|
||||||
run /entrypoint.sh
|
run /entrypoint.sh
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker build -t my/repository:latest /myContextFolder"
|
expectMockCalledContains "/usr/local/mock/docker build -t my/repository:latest /myContextFolder"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it can set a custom context when building snapshot" {
|
@test "it can set a custom context when building snapshot" {
|
||||||
@@ -506,29 +508,29 @@ teardown() {
|
|||||||
export INPUT_SNAPSHOT='true'
|
export INPUT_SNAPSHOT='true'
|
||||||
|
|
||||||
declare -A -p MOCK_RETURNS=(
|
declare -A -p MOCK_RETURNS=(
|
||||||
['/usr/local/bin/docker']=""
|
['/usr/local/mock/docker']=""
|
||||||
['/usr/bin/date']="197001010101"
|
['/usr/local/mock/date']="197001010101"
|
||||||
) > mockReturns
|
) > mockReturns
|
||||||
|
|
||||||
run /entrypoint.sh
|
run /entrypoint.sh
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker build -t my/repository:latest -t my/repository:19700101010112169e /myContextFolder"
|
expectMockCalledContains "/usr/local/mock/docker build -t my/repository:latest -t my/repository:19700101010112169e /myContextFolder"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it populates the digest" {
|
@test "it populates the digest" {
|
||||||
export GITHUB_REF='refs/heads/master'
|
export GITHUB_REF='refs/heads/master'
|
||||||
|
|
||||||
declare -A -p MOCK_RETURNS=(
|
declare -A -p MOCK_RETURNS=(
|
||||||
['/usr/local/bin/docker inspect']="my/repository@sha256:53b76152042486bc741fe59f130bfe683b883060c8284271a2586342f35dcd0e"
|
['/usr/local/mock/docker inspect']="my/repository@sha256:53b76152042486bc741fe59f130bfe683b883060c8284271a2586342f35dcd0e"
|
||||||
['/usr/bin/date']="197001010101"
|
['/usr/local/mock/date']="197001010101"
|
||||||
) > mockReturns
|
) > mockReturns
|
||||||
|
|
||||||
run /entrypoint.sh
|
run /entrypoint.sh
|
||||||
|
|
||||||
expectStdOutContains "::set-output name=digest::my/repository@sha256:53b76152042486bc741fe59f130bfe683b883060c8284271a2586342f35dcd0e"
|
expectStdOutContains "::set-output name=digest::my/repository@sha256:53b76152042486bc741fe59f130bfe683b883060c8284271a2586342f35dcd0e"
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker push my/repository:latest
|
expectMockCalledContains "/usr/local/mock/docker push my/repository:latest
|
||||||
/usr/local/bin/docker inspect --format={{index .RepoDigests 0}} my/repository:latest"
|
/usr/local/mock/docker inspect --format={{index .RepoDigests 0}} my/repository:latest"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it uses buildoptions for building, if configured" {
|
@test "it uses buildoptions for building, if configured" {
|
||||||
@@ -536,7 +538,7 @@ teardown() {
|
|||||||
|
|
||||||
run /entrypoint.sh
|
run /entrypoint.sh
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker build --compress --force-rm -t my/repository:latest ."
|
expectMockCalledContains "/usr/local/mock/docker build --compress --force-rm -t my/repository:latest ."
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it uses buildoptions for building with snapshot, if configured" {
|
@test "it uses buildoptions for building with snapshot, if configured" {
|
||||||
@@ -546,13 +548,13 @@ teardown() {
|
|||||||
export GITHUB_SHA='12169ed809255604e557a82617264e9c373faca7'
|
export GITHUB_SHA='12169ed809255604e557a82617264e9c373faca7'
|
||||||
|
|
||||||
declare -A -p MOCK_RETURNS=(
|
declare -A -p MOCK_RETURNS=(
|
||||||
['/usr/local/bin/docker']=""
|
['/usr/local/mock/docker']=""
|
||||||
['/usr/bin/date']="197001010101"
|
['/usr/local/mock/date']="197001010101"
|
||||||
) > mockReturns
|
) > mockReturns
|
||||||
|
|
||||||
run /entrypoint.sh
|
run /entrypoint.sh
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker build --compress --force-rm -t my/repository:latest -t my/repository:19700101010112169e ."
|
expectMockCalledContains "/usr/local/mock/docker build --compress --force-rm -t my/repository:latest -t my/repository:19700101010112169e ."
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it provides a possibility to define multiple tags" {
|
@test "it provides a possibility to define multiple tags" {
|
||||||
@@ -561,13 +563,13 @@ teardown() {
|
|||||||
|
|
||||||
run /entrypoint.sh
|
run /entrypoint.sh
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker login -u USERNAME --password-stdin
|
expectMockCalledContains "/usr/local/mock/docker login -u USERNAME --password-stdin
|
||||||
/usr/local/bin/docker build -t my/repository:A -t my/repository:B -t my/repository:C .
|
/usr/local/mock/docker build -t my/repository:A -t my/repository:B -t my/repository:C .
|
||||||
/usr/local/bin/docker push my/repository:A
|
/usr/local/mock/docker push my/repository:A
|
||||||
/usr/local/bin/docker push my/repository:B
|
/usr/local/mock/docker push my/repository:B
|
||||||
/usr/local/bin/docker push my/repository:C
|
/usr/local/mock/docker push my/repository:C
|
||||||
/usr/local/bin/docker inspect --format={{index .RepoDigests 0}} my/repository:A
|
/usr/local/mock/docker inspect --format={{index .RepoDigests 0}} my/repository:A
|
||||||
/usr/local/bin/docker logout"
|
/usr/local/mock/docker logout"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it provides a possibility to define one tag" {
|
@test "it provides a possibility to define one tag" {
|
||||||
@@ -576,11 +578,11 @@ teardown() {
|
|||||||
|
|
||||||
run /entrypoint.sh
|
run /entrypoint.sh
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker login -u USERNAME --password-stdin
|
expectMockCalledContains "/usr/local/mock/docker login -u USERNAME --password-stdin
|
||||||
/usr/local/bin/docker build -t my/repository:A .
|
/usr/local/mock/docker build -t my/repository:A .
|
||||||
/usr/local/bin/docker push my/repository:A
|
/usr/local/mock/docker push my/repository:A
|
||||||
/usr/local/bin/docker inspect --format={{index .RepoDigests 0}} my/repository:A
|
/usr/local/mock/docker inspect --format={{index .RepoDigests 0}} my/repository:A
|
||||||
/usr/local/bin/docker logout"
|
/usr/local/mock/docker logout"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it caches the first image when multiple tags defined" {
|
@test "it caches the first image when multiple tags defined" {
|
||||||
@@ -590,10 +592,10 @@ teardown() {
|
|||||||
|
|
||||||
run /entrypoint.sh
|
run /entrypoint.sh
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker pull my/repository:A
|
expectMockCalledContains "/usr/local/mock/docker pull my/repository:A
|
||||||
/usr/local/bin/docker build --cache-from my/repository:A -t my/repository:A -t my/repository:B .
|
/usr/local/mock/docker build --cache-from my/repository:A -t my/repository:A -t my/repository:B .
|
||||||
/usr/local/bin/docker push my/repository:A
|
/usr/local/mock/docker push my/repository:A
|
||||||
/usr/local/bin/docker push my/repository:B"
|
/usr/local/mock/docker push my/repository:B"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it is verbose on ACTIONS_STEP_DEBUG" {
|
@test "it is verbose on ACTIONS_STEP_DEBUG" {
|
||||||
@@ -613,7 +615,7 @@ teardown() {
|
|||||||
|
|
||||||
run /entrypoint.sh
|
run /entrypoint.sh
|
||||||
|
|
||||||
expectMockArgs '/usr/local/bin/docker 9eL89n92G@!#o^$!&3Nz89F@%9'
|
expectMockArgs '/usr/local/mock/docker 9eL89n92G@!#o^$!&3Nz89F@%9'
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it can be used for building only" {
|
@test "it can be used for building only" {
|
||||||
@@ -624,9 +626,9 @@ teardown() {
|
|||||||
|
|
||||||
expectStdOutIs ""
|
expectStdOutIs ""
|
||||||
|
|
||||||
expectMockCalledIs "/usr/local/bin/docker login -u USERNAME --password-stdin
|
expectMockCalledIs "/usr/local/mock/docker login -u USERNAME --password-stdin
|
||||||
/usr/local/bin/docker build -t my/repository:latest .
|
/usr/local/mock/docker build -t my/repository:latest .
|
||||||
/usr/local/bin/docker logout"
|
/usr/local/mock/docker logout"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it can be used for building without login" {
|
@test "it can be used for building without login" {
|
||||||
@@ -638,7 +640,7 @@ teardown() {
|
|||||||
|
|
||||||
expectStdOutIs ""
|
expectStdOutIs ""
|
||||||
|
|
||||||
expectMockCalledIs "/usr/local/bin/docker build -t my/repository:latest ."
|
expectMockCalledIs "/usr/local/mock/docker build -t my/repository:latest ."
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "it can change the default branch" {
|
@test "it can change the default branch" {
|
||||||
@@ -649,11 +651,11 @@ teardown() {
|
|||||||
|
|
||||||
expectStdOutContains "::set-output name=tag::latest"
|
expectStdOutContains "::set-output name=tag::latest"
|
||||||
|
|
||||||
expectMockCalledContains "/usr/local/bin/docker login -u USERNAME --password-stdin
|
expectMockCalledContains "/usr/local/mock/docker login -u USERNAME --password-stdin
|
||||||
/usr/local/bin/docker build -t my/repository:latest .
|
/usr/local/mock/docker build -t my/repository:latest .
|
||||||
/usr/local/bin/docker push my/repository:latest
|
/usr/local/mock/docker push my/repository:latest
|
||||||
/usr/local/bin/docker inspect --format={{index .RepoDigests 0}} my/repository:latest
|
/usr/local/mock/docker inspect --format={{index .RepoDigests 0}} my/repository:latest
|
||||||
/usr/local/bin/docker logout"
|
/usr/local/mock/docker logout"
|
||||||
}
|
}
|
||||||
|
|
||||||
expectStdOutIs() {
|
expectStdOutIs() {
|
||||||
|
|||||||
Reference in New Issue
Block a user