application.tgz is not uploaded to heroku (using atlassian/heroku-deploy:1.2.1)
Asked by Yuriy Okhonin:

artifact is created and listed on previous step, I can download it to my local machine.  
On next step "pipe atlassian/heroku-deploy:1.2.1"  
I get the follwoing error:  
Traceback (most recent call last):  
File "/usr/bin/main.py", line 154, in <module>  
[pipe.run](http://pipe.run)()  
File "/usr/bin/main.py", line 74, in run  
with open(zip_file, 'rb') as zipfile:  
FileNotFoundError: [Errno 2] No such file or directory: 'application.tgz'

Also 'application.tgz' is not listed under 'Artifacts' tab in my 'Deploy to production' step.  
Link to my repository <https://bitbucket.org/vihv/stiltsofttestyo> (private, but I expect techsupport have access)

<br />

Here is my bitbucket-piplines.yml  
============================  

image: maven:3.6.3

pipelines:  
default:  
- parallel:  
- step:  
name: Build and Test  
caches:  
- maven  
script:  
- mvn -B verify --file pom.xml  
after-script:  
- pipe: atlassian/checkstyle-report:0.2.0  
- step:  
name: Security Scan  
script:  
- pipe: atlassian/git-secrets-scan:0.4.3  
- step:  
name: Create artifact  
script:  
- tar czfv application.tgz pom.xml src/  
artifacts:  
- application.tgz  
- step:  
name: Deploy to production  
deployment: production  
script:  
- pipe: atlassian/heroku-deploy:1.2.1  
variables:  
HEROKU_API_KEY: $HEROKU_API_KEY  
HEROKU_APP_NAME: $HEROKU_APP_NAME  
ZIP_FILE: 'application.tgz'  
DEBUG: 'true'


Answers:
author: Theodora Boudale
body: Hi Yuriy and welcome to the community!

I believe the culprit here may be that the step that generates the artifact and the step that does the deployment belong in the same parallel set. Parallel steps can only use artifacts produced by previous steps, not by steps in the ***same*** parallel set.

What you can do is move the last step out of the parallel set, by changing the indentation two spaces back for that step, as follows:

```
image: maven:3.6.3

pipelines:
  default:
    - parallel:
      - step:
          name: Build and Test
          caches:
            - maven
          script:
            - mvn -B verify --file pom.xml
          after-script:
            - pipe: atlassian/checkstyle-report:0.2.0
      - step:
          name: Security Scan
          script:
            - pipe: atlassian/git-secrets-scan:0.4.3
      - step:
          name: Create artifact
          script:
            - tar czfv application.tgz pom.xml src/
          artifacts:
            - application.tgz
    - step:
        name: Deploy to production
        deployment: production
        script:
          - pipe: atlassian/heroku-deploy:1.2.1
            variables:
              HEROKU_API_KEY: $HEROKU_API_KEY
              HEROKU_APP_NAME: $HEROKU_APP_NAME
              ZIP_FILE: 'application.tgz'
              DEBUG: 'true'
```

This way, only the first 3 steps are in the same parallel set, and the artifact will be available for the last step.

Please feel free to let me know if this helps and if you have any questions.

Kind regards,  
Theodora

comments: author: Alexander Ritterath
body: Thank you Theodora. This was very helpful for me.


author: Theodora Boudale
body: You are very welcome Alexander, I'm glad that this was helpful!


author: Getachew Tebkew
body: saved my life too


author: Theodora Boudale
body: That's good to hear [@Getachew Tebkew](/t5/user/viewprofilepage/user-id/4841591)!


Tags: bitbucket-cloud

bitbucket-pipelines

heroku