name: 'openpilot env setup' inputs: docker_hub_pat: description: 'Auth token for Docker Hub, required for BuildJet jobs' required: true default: '' cache_key_prefix: description: 'Prefix for caching key' required: true default: 'scons_x86_64' is_retried: description: 'A mock param that asserts that we use the setup-with-retry instead of this action directly' required: false default: 'false' runs: using: "composite" steps: # assert that this action is retried using the setup-with-retry - shell: bash if: ${{ inputs.is_retried == 'false' }} run: | echo "You should not run this action directly. Use setup-with-retry instead" exit 1 # do this after checkout to ensure our custom LFS config is used to pull from GitLab - shell: bash run: git lfs pull # on BuildJet runners, must be logged into DockerHub to avoid rate limiting # https://buildjet.com/for-github-actions/docs/guides/docker - shell: bash if: ${{ contains(runner.name, 'buildjet') && inputs.docker_hub_pat == '' }} run: | echo "Need to set the Docker Hub PAT secret as an input to this action" exit 1 - name: Login to Docker Hub if: contains(runner.name, 'buildjet') shell: bash run: | docker login -u adeebshihadeh -p ${{ inputs.docker_hub_pat }} # build cache - id: date shell: bash run: echo "CACHE_COMMIT_DATE=$(git log -1 --pretty='format:%cd' --date=format:'%Y-%m-%d-%H:%M')" >> $GITHUB_ENV - shell: bash run: echo "$CACHE_COMMIT_DATE" - id: restore-scons-cache uses: actions/cache/restore@v3 with: path: .ci_cache/scons_cache key: ${{ inputs.cache_key_prefix }}-${{ env.CACHE_COMMIT_DATE }}-${{ github.sha }} restore-keys: | ${{ inputs.cache_key_prefix }}-${{ env.CACHE_COMMIT_DATE }}- ${{ inputs.cache_key_prefix }}- # if we didn't get a cache hit, make the directory manually so it doesn't fail on future steps - id: scons-cache-setup shell: bash if: steps.restore-scons-cache.outputs.cache-hit != 'true' run: mkdir -p $GITHUB_WORKSPACE/.ci_cache/scons_cache # as suggested here: https://github.com/moby/moby/issues/32816#issuecomment-910030001 - id: normalize-file-permissions shell: bash name: Normalize file permissions to ensure a consistent docker build cache run: | find . -type f -executable -not -perm 755 -exec chmod 755 {} \; find . -type f -not -executable -not -perm 644 -exec chmod 644 {} \; - id: setup-buildx-action if: contains(runner.name, 'buildjet') name: Set up Docker Buildx on buildjet to ensure a consistent cache uses: docker/setup-buildx-action@v2 with: driver: docker-container # build our docker image - shell: bash run: eval ${{ env.BUILD }}