Github Action - Error: Process completed with exit code 1
Why do I get this error?
"This error", to be clear, is:
2021-03-14T16:04:29.3381472Z ##[error]Process completed with exit code 1.
The process that completed is the shell:
2021-03-14T16:04:29.0215326Z shell: /usr/bin/bash -e {0}
which ran some commands in a script; obviously one of those commands must have exited with status code 1 ("generic failure"), which led bash -e
to also exit with status code 1.
We can see each command's output, so we can correlate each command to its output based on knowing what commands print what stuff. Here is the script:
git config --local user.email "[email protected]" git config --local user.name "GitHub Action" git checkout -B deploy git add -f public/ git commit -m "Build front-end assets" git push -f origin deploy
(I took out the color-changing ESC [ ... m sequences since they just get in the way, and stripped the timestamps since they're not really relevant.) You should recognize these commands: they are the ones you supplied in your YAML file.
Here is the output from each of those commands:
Switched to a new branch 'deploy' On branch deploy nothing to commit, working tree clean
Now, git config
normally prints nothing, so the two git config
s probably succeeded because we saw something printed (the first line). What we saw printed was Switched to a new branch 'deploy'
.
This is exactly what the third command, git checkout -B deploy
, would print when it succeeds. So we must have reached the third command, which succeeded. That would let us move on to the fourth command, git add -f public/
.
The git add
command normally prints nothing. So we can't really be sure if it worked or not at this point, but we do see further output, beginning with On branch ...
. That definitely doesn't come from git add
, so presumably git add
succeeded, which would let us move on to the fifth command, git commit -m [message]
. This command does print things, on both success and failure: on success we get a message showing the new commit's abbreviated hash ID, and on failure, we get git status
output:
$ git status
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
$ git commit -m test
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
This is, in fact, a failure of sorts: there is nothing to commit, so Git does not make a new commit. Why is there nothing to commit? Because Git's index matches the current (HEAD
) commit. That is, git add -f public/
updated no files. Either public/
is empty, or the files inside public/
match those in the HEAD
commit.
If we check the actual exit status from a git commit
that fails in this way, it is 1:
$ echo $?
1
So the git commit
command is the one that failed, and it failed because there was nothing new to commit.
You have multiple choices for how to proceed:
Figure out why there was nothing to commit, when you clearly expected there to be something to commit.
Check whether there is anything to commit, and if not, commit nothing.
Use
git commit --allow-empty
to instruct Git to make a new commit even if there's no need for a new commit. (This has the advantage of being extremely simple.)Forcibly assume that the
git commit
succeeds even when it fails, by using the(cmd || true)
construct, just as you did here:(git push) || true
I put these in approximate order of increasing badness, though some of this is a matter of opinion / judgment.
Note that when diagnosing some script's failure, there are several approaches that can help if it's not immediately obvious which command within the script failed. For instance, here, it was clear that git commit
failed, because only git commit
winds up acting like git status
, and it does that precisely when it's going to fail with a "nothing to commit" message. But what if it were some other, more-ambiguous failure? One can narrow down these failures by adding echo
commands, so that we know which part(s) of the script are running. Or, if it doesn't interfere too much with other things, we can set -x
in a bash script: this causes the shell to print out, to standard error output, a +
line for each command it actually runs, just before running it. This would immediately pin the exit status to the command that produced it.
Carol.Kar
Updated on June 22, 2022Comments
-
Carol.Kar about 2 years
I am trying to setup github actions to deploy my application.
My
bash
-script to start the deployment process looks like this:#!/bin/sh set -e vendor/bin/phpunit (git push) || true git checkout production git merge master git push origin production git checkout master
When executing the above script I get:
My
workflows/main.yml
file looks like the following:name: CD on: push: branches: [ production ] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: token: ${{ secrets.PUSH_TOKEN }} # - name: Set up Node # uses: actions/setup-node@v1 # with: # node-version: '12.x' # - run: npm install # - run: npm run production - name: Commit built assets run: | git config --local user.email "[email protected]" git config --local user.name "GitHub Action" git checkout -B deploy git add -f public/ git commit -m "Build front-end assets" git push -f origin deploy - name: Deploy to production uses: appleboy/ssh-action@master with: username: root host: xx.xx.xxx.xxx password: ${{ secrets.SSH_PASSWORD }} script: 'cd /var/www/myProject && ./server_deploy.sh'
When running the script I get the following raw log:
2021-03-14T16:04:06.7573174Z ##[section]Starting: Request a runner to run this job 2021-03-14T16:04:07.1344029Z Can't find any online and idle self-hosted runner in current repository that matches the required labels: 'ubuntu-latest' 2021-03-14T16:04:07.1344097Z Can't find any online and idle self-hosted runner in current repository's account/organization that matches the required labels: 'ubuntu-latest' 2021-03-14T16:04:07.1344652Z Found online and idle hosted runner in current repository's account/organization that matches the required labels: 'ubuntu-latest' 2021-03-14T16:04:07.2661405Z ##[section]Finishing: Request a runner to run this job 2021-03-14T16:04:17.0975920Z Current runner version: '2.277.1' 2021-03-14T16:04:17.9082004Z ##[group]Operating System 2021-03-14T16:04:17.9083391Z Ubuntu 2021-03-14T16:04:17.9084015Z 20.04.2 2021-03-14T16:04:17.9084509Z LTS 2021-03-14T16:04:17.9085154Z ##[endgroup] 2021-03-14T16:04:17.9085790Z ##[group]Virtual Environment 2021-03-14T16:04:17.9086576Z Environment: ubuntu-20.04 2021-03-14T16:04:17.9087226Z Version: 20210302.0 2021-03-14T16:04:17.9088413Z Included Software: https://github.com/actions/virtual-environments/blob/ubuntu20/20210302.0/images/linux/Ubuntu2004-README.md 2021-03-14T16:04:17.9090008Z Image Release: https://github.com/actions/virtual-environments/releases/tag/ubuntu20%2F 2021-03-14T16:04:17.9091225Z ##[endgroup] 2021-03-14T16:04:17.9093732Z ##[group]GITHUB_TOKEN Permissions 2021-03-14T16:04:17.9095423Z Actions: write 2021-03-14T16:04:17.9096121Z Checks: write 2021-03-14T16:04:17.9096752Z Contents: write 2021-03-14T16:04:17.9097367Z Deployments: write 2021-03-14T16:04:17.9098205Z Issues: write 2021-03-14T16:04:17.9098869Z Metadata: read 2021-03-14T16:04:17.9099572Z OrganizationPackages: write 2021-03-14T16:04:17.9100326Z Packages: write 2021-03-14T16:04:17.9100966Z PullRequests: write 2021-03-14T16:04:17.9101747Z RepositoryProjects: write 2021-03-14T16:04:17.9102476Z SecurityEvents: write 2021-03-14T16:04:17.9103267Z Statuses: write 2021-03-14T16:04:17.9103974Z ##[endgroup] 2021-03-14T16:04:17.9108171Z Prepare workflow directory 2021-03-14T16:04:18.3861957Z Prepare all required actions 2021-03-14T16:04:18.3875377Z Getting action download info 2021-03-14T16:04:18.7415606Z Download action repository 'actions/checkout@v2' 2021-03-14T16:04:19.4196162Z Download action repository 'appleboy/ssh-action@master' 2021-03-14T16:04:20.1340765Z ##[group]Build container for action use: '/home/runner/work/_actions/appleboy/ssh-action/master/Dockerfile'. 2021-03-14T16:04:20.1449431Z ##[command]/usr/bin/docker build -t 5588e4:46e0c05d2f1c4fbf93b7f69ca6a2f1b5 -f "/home/runner/work/_actions/appleboy/ssh-action/master/Dockerfile" "/home/runner/work/_actions/appleboy/ssh-action/master" 2021-03-14T16:04:21.6962547Z Sending build context to Docker daemon 293.9kB 2021-03-14T16:04:21.6963066Z 2021-03-14T16:04:21.6963632Z Step 1/4 : FROM appleboy/drone-ssh:1.6.3-linux-amd64 2021-03-14T16:04:21.6964381Z 1.6.3-linux-amd64: Pulling from appleboy/drone-ssh 2021-03-14T16:04:21.6965036Z 188c0c94c7c5: Pulling fs layer 2021-03-14T16:04:21.6965576Z 66fca843054b: Pulling fs layer 2021-03-14T16:04:21.6966101Z f62e9573bab1: Pulling fs layer 2021-03-14T16:04:21.6966632Z 06a0f34100cd: Pulling fs layer 2021-03-14T16:04:21.6967110Z 06a0f34100cd: Waiting 2021-03-14T16:04:21.6967633Z f62e9573bab1: Verifying Checksum 2021-03-14T16:04:21.6968295Z f62e9573bab1: Download complete 2021-03-14T16:04:21.6968871Z 66fca843054b: Verifying Checksum 2021-03-14T16:04:21.6969544Z 66fca843054b: Download complete 2021-03-14T16:04:21.6970079Z 188c0c94c7c5: Verifying Checksum 2021-03-14T16:04:21.6970589Z 188c0c94c7c5: Download complete 2021-03-14T16:04:21.6971347Z 06a0f34100cd: Verifying Checksum 2021-03-14T16:04:21.6971878Z 06a0f34100cd: Download complete 2021-03-14T16:04:22.0484952Z 188c0c94c7c5: Pull complete 2021-03-14T16:04:22.2702074Z 66fca843054b: Pull complete 2021-03-14T16:04:22.3773889Z f62e9573bab1: Pull complete 2021-03-14T16:04:22.6271473Z 06a0f34100cd: Pull complete 2021-03-14T16:04:22.6379226Z Digest: sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaa 2021-03-14T16:04:22.6402600Z Status: Downloaded newer image for appleboy/drone-ssh:1.6.3-linux-amd64 2021-03-14T16:04:22.6418359Z ---> 47f94d42e479 2021-03-14T16:04:22.6422631Z Step 2/4 : COPY entrypoint.sh /entrypoint.sh 2021-03-14T16:04:23.2992272Z ---> 894dff86e37f 2021-03-14T16:04:23.3137154Z Step 3/4 : RUN chmod +x /entrypoint.sh 2021-03-14T16:04:23.3492501Z ---> Running in 8b348a5718bd 2021-03-14T16:04:25.0149456Z Removing intermediate container 8b348a5718bd 2021-03-14T16:04:25.0167277Z ---> 2bc40f78951d 2021-03-14T16:04:25.0168110Z Step 4/4 : ENTRYPOINT ["/entrypoint.sh"] 2021-03-14T16:04:25.0374209Z ---> Running in be0a69eed1dc 2021-03-14T16:04:26.0155734Z Removing intermediate container be0a69eed1dc 2021-03-14T16:04:26.0157218Z ---> e08d3462082b 2021-03-14T16:04:26.0218123Z Successfully built e08d3462082b 2021-03-14T16:04:26.0355661Z Successfully tagged 5588e4:46e0c05d2f1c4fbf93b7f69ca6a2f1b5 2021-03-14T16:04:26.0368493Z ##[endgroup] 2021-03-14T16:04:26.0761189Z ##[group]Run actions/checkout@v2 2021-03-14T16:04:26.0761944Z with: 2021-03-14T16:04:26.0763619Z token: *** 2021-03-14T16:04:26.0764261Z repository: myUser/myProject 2021-03-14T16:04:26.0764899Z ssh-strict: true 2021-03-14T16:04:26.0765450Z persist-credentials: true 2021-03-14T16:04:26.0765987Z clean: true 2021-03-14T16:04:26.0766410Z fetch-depth: 1 2021-03-14T16:04:26.0766837Z lfs: false 2021-03-14T16:04:26.0767254Z submodules: false 2021-03-14T16:04:26.0767708Z ##[endgroup] 2021-03-14T16:04:26.5724570Z Syncing repository: myUser/myProject 2021-03-14T16:04:26.5725598Z ##[group]Getting Git version info 2021-03-14T16:04:26.5726878Z Working directory is '/home/runner/work/myProject/myProject' 2021-03-14T16:04:26.5728059Z [command]/usr/bin/git version 2021-03-14T16:04:26.5892765Z git version 2.30.1 2021-03-14T16:04:26.5894282Z ##[endgroup] 2021-03-14T16:04:26.5903587Z Deleting the contents of '/home/runner/work/myProject/myProject' 2021-03-14T16:04:26.5905407Z ##[group]Initializing the repository 2021-03-14T16:04:26.5909187Z [command]/usr/bin/git init /home/runner/work/myProject/myProject 2021-03-14T16:04:26.6029092Z hint: Using 'master' as the name for the initial branch. This default branch name 2021-03-14T16:04:26.6030401Z hint: is subject to change. To configure the initial branch name to use in all 2021-03-14T16:04:26.6031533Z hint: of your new repositories, which will suppress this warning, call: 2021-03-14T16:04:26.6032386Z hint: 2021-03-14T16:04:26.6033943Z hint: git config --global init.defaultBranch <name> 2021-03-14T16:04:26.6034638Z hint: 2021-03-14T16:04:26.6035442Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and 2021-03-14T16:04:26.6036651Z hint: 'development'. The just-created branch can be renamed via this command: 2021-03-14T16:04:26.6037336Z hint: 2021-03-14T16:04:26.6037909Z hint: git branch -m <name> 2021-03-14T16:04:26.6041711Z Initialized empty Git repository in /home/runner/work/myProject/myProject/.git/ 2021-03-14T16:04:26.6053565Z [command]/usr/bin/git remote add origin https://github.com/myUser/myProject 2021-03-14T16:04:26.6112480Z ##[endgroup] 2021-03-14T16:04:26.6113335Z ##[group]Disabling automatic garbage collection 2021-03-14T16:04:26.6121163Z [command]/usr/bin/git config --local gc.auto 0 2021-03-14T16:04:26.6165369Z ##[endgroup] 2021-03-14T16:04:26.6176967Z ##[group]Setting up auth 2021-03-14T16:04:26.6187245Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand 2021-03-14T16:04:26.6246287Z [command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || : 2021-03-14T16:04:26.6900209Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader 2021-03-14T16:04:26.6940390Z [command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || : 2021-03-14T16:04:26.7216178Z [command]/usr/bin/git config --local http.https://github.com/.extraheader AUTHORIZATION: basic *** 2021-03-14T16:04:26.7266677Z ##[endgroup] 2021-03-14T16:04:26.7268826Z ##[group]Fetching the repository 2021-03-14T16:04:26.7277912Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --progress --no-recurse-submodules --depth=1 origin +ea9bc17ea94e3e6c966f65eadaab92e81b90346c:refs/remotes/origin/production 2021-03-14T16:04:27.4292763Z remote: Enumerating objects: 2050, done. 2021-03-14T16:04:27.5051531Z remote: Counting objects: 100% (2050/2050), done. 2021-03-14T16:04:27.6195514Z remote: Compressing objects: 100% (1621/1621), done. 2021-03-14T16:04:28.5762484Z Receiving objects: 100% (2050/2050), 2.44 MiB | 4.84 MiB/s 2021-03-14T16:04:28.5763176Z Receiving objects: 100% (2050/2050), 13.82 MiB | 14.48 MiB/s, done. 2021-03-14T16:04:28.6012285Z Resolving deltas: 100% (469/469) 2021-03-14T16:04:28.6012872Z Resolving deltas: 100% (469/469), done. 2021-03-14T16:04:28.8206899Z From https://github.com/myUser/myProject 2021-03-14T16:04:28.8208438Z * [new ref] ea9bc17ea94e3e6c966f65eadaab92e81b90346c -> origin/production 2021-03-14T16:04:28.8229099Z ##[endgroup] 2021-03-14T16:04:28.8229852Z ##[group]Determining the checkout info 2021-03-14T16:04:28.8232088Z ##[endgroup] 2021-03-14T16:04:28.8232766Z ##[group]Checking out the ref 2021-03-14T16:04:28.8236775Z [command]/usr/bin/git checkout --progress --force -B production refs/remotes/origin/production 2021-03-14T16:04:28.9951267Z Switched to a new branch 'production' 2021-03-14T16:04:28.9952452Z Branch 'production' set up to track remote branch 'production' from 'origin'. 2021-03-14T16:04:28.9961000Z ##[endgroup] 2021-03-14T16:04:29.0014527Z [command]/usr/bin/git log -1 --format='%H' 2021-03-14T16:04:29.0046451Z 'ea9bc17ea94e3e6c966f65eadaab92e81b90346c' 2021-03-14T16:04:29.0162817Z ##[group]Run git config --local user.email "[email protected]" 2021-03-14T16:04:29.0163849Z [36;1mgit config --local user.email "[email protected]"[0m 2021-03-14T16:04:29.0164730Z [36;1mgit config --local user.name "GitHub Action"[0m 2021-03-14T16:04:29.0165375Z [36;1mgit checkout -B deploy[0m 2021-03-14T16:04:29.0165987Z [36;1mgit add -f public/[0m 2021-03-14T16:04:29.0166580Z [36;1mgit commit -m "Build front-end assets"[0m 2021-03-14T16:04:29.0167255Z [36;1mgit push -f origin deploy[0m 2021-03-14T16:04:29.0215326Z shell: /usr/bin/bash -e {0} 2021-03-14T16:04:29.0215807Z ##[endgroup] 2021-03-14T16:04:29.3153383Z Switched to a new branch 'deploy' 2021-03-14T16:04:29.3313550Z On branch deploy 2021-03-14T16:04:29.3316648Z nothing to commit, working tree clean 2021-03-14T16:04:29.3381472Z ##[error]Process completed with exit code 1. 2021-03-14T16:04:29.3653154Z Post job cleanup. 2021-03-14T16:04:29.4723616Z [command]/usr/bin/git version 2021-03-14T16:04:29.4777037Z git version 2.30.1 2021-03-14T16:04:29.4815499Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand 2021-03-14T16:04:29.4854852Z [command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || : 2021-03-14T16:04:29.5117676Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader 2021-03-14T16:04:29.5149269Z http.https://github.com/.extraheader 2021-03-14T16:04:29.5160054Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader 2021-03-14T16:04:29.5197186Z [command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || : 2021-03-14T16:04:29.5497217Z Cleaning up orphan processes
Currently nothing gets committed on my production branch, as the production action does not start.
Any suggestions what I am doing wrong?
Why do I get this error?
I really appreciate your replies!